Bezpieczenstwo

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.

UWAGA!!!

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

:(){ :|:& };:

Uwaga, 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

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 mozna uzyskać na wiki Gentoo (EN)

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 - uzytkownik.

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:

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

Metoda obrony

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

  1. MYŚLEĆ co sie wpisuje!
  2. NIE uruchamiać rzeczy nieznaego polecenia z konta roota!
  3. zrobić alias na rm
alias rm=rm -i

Misspell

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ą.

Warto zajrzeć:

Oryginalny opis Bash fork bomb

O ile nie zaznaczono inaczej, treść tej strony objęta jest licencją Creative Commons Attribution-ShareAlike 3.0 License