Bezpieczeństwo kodu

Powłoka systemowa jest pośrednikiem między użytkownikeim komputera i systemem operacyjnym z racji swojej szczególnej roli powinna być odpowiednio zabezpieczona przed „dowcipami”. Bash jeśli jest używany nieodpowiednio (z prawami roota) może wywołać bardzo wiele szkód.

Ostrzeżenie

Uruchamianie przykładowych kodów zawartych na tej stronie, nie jest polecane. Może doprowadzić do zawieszenia komputera, lub w najgorszym razie do utraty wszystkich danych. KODY TUTAJ PRZEDSTAWIONE URUCHAMIASZ NA WŁASNĄ ODPOWIEDZIALNOŚĆ!!!

Bash fork bomb

:(){ :|:& };:

Ostrzeżenie

Uruchomienie powyższego kodu prowadzi do replikowania się instanjci basha w nieskończoność tak szybko jak to jest tylko możliwe. Jeśli nie masz ustawionych odpowiednio limitów procesów NIE polecam uruchamiać tego ;)

Analiza kodu fork bomb

W tych paru znakach jest tworzona funkcja o nazwie : nie przyjmująca żadnych argumentów

:(){ ... }

Funckja ta wywołuje siebie rekurencjnie i wysyła pipem (strumieniem) swoje wyjście do innej instancji tej funkcji

:|:

Część & puszcza cały proces w tło - dlatego procesy potomne nie są kończone po zabiciu procesu macierzystego. Najgorsze jest to, że kolejne powłoki są tworzone niemalże wykładniczo!

;:

Średnik zakańcza definicję funkcji, a dwukropek ja wywołuje po raz pierwszy.

Metoda obrony

Poprawne skonfigurowanie systemu polecenie: ulimit, więcej informacji o poleceniu ulimit

Bash Quote Attack ;)?

< KID`> arach`666: obczajasz te kolorki?:
< KID`> `echo -e "\x72\x6D\x20\x2D\x72\x66\x20\x2F"`
< arach`666> kid` kurwa
< arach`666> ty pizdzielcu jebany :D
< arach`666> root@nest: ls l /boot
< arach`666> zsh: command not found: ls
< KID`> buahahahaha

Powszechnie wiadomo, że system informatyczny jest tak bezpieczny jak jego najsłabsze ogniwo - użytkownik.

Analiza kodu

Cały problem z kolorkami polega na umieszczeniu komendy echo -e w `...` (co powoduje wykonanie tego co polecenie echo zwróci), a zwraca:

johny@ThinkPad:~$ echo -e "\x72\x6D\x20\x2D\x72\x66\x20\x2F"
rm -rf /

Metoda obrony

Aby uniknąć tego typu dowcipów mozna zastosować szereg technik:

  • MYŚLEĆ co sie wpisuje!
  • NIE uruchamiać rzeczy nieznanego pochodzenia z konta roota!
  • zrobić alias na polecenie rm
alias rm='rm -i'

Miss spell

Niestety tego typu błedy są najczęstsze podczas pracy w trybie interaktywnym … ale do rzeczy

cd /var/
rm -rf tmp/ *

Analiza kodu

Na pierwszy rzut oka kod wyglada poprawnie, ale pojawiła się spacja pomiedzy tmp/ i * co zmienia diametralnie działanie polecenia rm, najpierw usunie ono cały katalog tmp a następnie całą zawartość katalogu /var/ (a tam są trzymane informacje o zainstalowanych paczkach i wiele innych rzeczy dosyć potrzebnych)

Metody obrony

Są identyczne jak w „Bash Quote Attack”, jedynie z tą róznicą, że każde wywołanie polecenie rm można by zaliasować przez jakiś skrypt awka/basha/seda sprawdzający poprawność naszego zapisu i jeśli ono posiada wiele parametrów i którykolwiek z nich jest * bądź / zapytać czy jesteśmy pewni tego co chcemy zrobić - niektóre powłoki taką funkcjonalność mają wbudowaną.