2012-01-20 16 views

Odpowiedz

6

Ze względu na plastyczność powłoki, trudno jest sprawdzić, czy Skrypt powłoki wykonuje swoją zamierzoną funkcję i działa tylko w obliczu przeciwnika. Sposób działania powłoki zależy od środowiska, a także od ustawień własnych licznych zmiennych konfiguracyjnych. Każda linia poleceń podlega wielu poziomom rozszerzania, oceny i interpolacji. Niektóre konstrukcje powłoki działają w podprocesach, podczas gdy zmienne zawarte w konstrukcie są rozszerzane w procesie nadrzędnym. Wszystko to jest sprzeczne z zasadą KISS podczas projektowania systemów, które mogą zostać zaatakowane.

3

Prawdopodobnie dlatego, że po prostu łatwo zepsuć. Gdy PATH nie zostanie poprawnie ustawiony, twój skrypt rozpocznie wykonywanie niewłaściwych poleceń. Umieszczenie spacji w łańcuchu może spowodować, że później stanie się dwoma ciągami. Mogą one prowadzić do dziur w bezpieczeństwie. W skrócie: powłoki dają pewne gwarancje zachowania skryptu, ale są zbyt słabe lub zbyt skomplikowane, aby naprawdę bezpiecznie programować.

(Do tego chciałbym dodać, że bezpieczne programowanie jest sztuką samą w sobie, i przekręcane jest możliwe w dowolnym języku).

1

Nie zgadzam się z tym stwierdzeniem, ponieważ nie ma nic na temat skryptów, które czynią je z natury niebezpiecznymi. Skrypty Bash są całkowicie bezpieczne, jeśli przestrzegane są proste wskazówki:

  • Czy skrypt zawiera informacje, których inni użytkownicy nie mogą wyświetlić? Jeśli tak, upewnij się, że jest to możliwe tylko do odczytu przez właściciela.
  • Czy skrypt zależy od danych wejściowych z somewhereE? Jeśli tak, upewnij się, że dane wejściowe nie mogą być w jakikolwiek sposób zanieczyszczone lub że splamione dane mogą zostać wykryte i odrzucone.
  • Czy to ma znaczenie, czy inni próbowali uruchamiać skrypt ? Jeśli tak, to tak jak w pierwszym punkcie, upewnij się, że nikt nie może go wykonać, a najlepiej nie czytać z niego. chmod 0700 jest ogólnie dobrym pomysłem dla skryptów wykonujących funkcje systemowe.
  • oraz przypadki, w których mają chcesz skrypt mieć setuid (poprzez tłumacza) są niezwykle rzadkie

Dwa punkty, które oddzielają skrypt z skompilowanego programu jest to, że źródło jest widoczny i że wykonuje go tłumacz. Dopóki nie zostanie naruszony interpreter (na przykład bity setuid), wszystko będzie w porządku.

Podczas pisania skryptów do wykonywania zadań systemowych, literówek i pomyłek oraz ogólnego błędu ludzkiego podczas pisania, w pewnym stopniu stanowią potencjalne zagrożenie bezpieczeństwa, ale tak samo jest w przypadku skompilowanych programów (i wiele osób ma tendencję do zignorować fakt, że skompilowane programy można również zdemontować)

Warto zauważyć, że w większości (jeśli nie wszystkie) smaków linux, większość (jeśli nie wszystkie, w rzeczywistości, nie mogą myśleć o tym, że nie są) usługi są uruchamiane za pomocą skryptu powłoki.

+1

Gdy skrypt nie jest możliwy do odczytu, nie można go uruchomić. Setuid na skryptach nie jest nawet możliwy. –

1
  • łatwiej bad boys aby praca skrypt powłoki różnie (oddziałuje wiele z innych procesów, ścieżka, funkcje powłoki, prifile)
  • trudniej o dobrych chłopców do czynienia z danymi wrażliwymi (przechodząc haseł itp.)