Bash misspell attack

Niestety tego typu błedy są najczęstsze podczas pracy w trybie interaktywnym i często ich powodem jest roztargnienie, 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 (zsh) taką funkcjonalność mają wbudowaną.