Kritická zranitelnost v Bash (CVE-2014-6271) !
Závažnost: Kritická
Obtížnost zneužití: Nízká
Náročnost opravy: Nízká
Princip:
Zranitelnost využívá způsobu jakým Bash nakládá s proměnnými prostředí. Bylo zjištěno, že pokud útočník definuje ještě před zavoláním Bash proměnnou prostředí a injektuje do ní speciální posloupnost znaků, dojde ke spuštění kódu definovaného útočníkem. Existuje celá řada způsobů jakým dochází k definici uživatelských proměnných z neznámého zdroje a následné spuštění Bash. Jedním z nejobávanějších vektorů útoku jsou webové aplikace používající CGI, které pracuje na principu přenosu dat do skriptu pomocí proměnných prostředí. Některé proměnné prostředí mohou být snadno ovlivněny útočníkem (např. User-Agent), pokud následně dochází k zavolání Bash z CGI skriptu, může dojít ke spuštění kódu podstrčeného útočníkem.
Výše popsaný je pouze jeden z možných vektorů útoku. Další možné jsou lokální eskalace privilegií, SSH, CUPS a další způsoby. Zranitelnost je velmi mladá a lze očekávat, že se mnoho nyní nepředpokládaných vektorů útoku objeví.
Ovlivněné systémy:
Zranitelné jsou pravděpodobně všechny distribuce založené na Debian a některé další GNU Linux platformy.
Z aplikačního pohledu hrozí riziko při provozu httpd (CGI skripty), SSH, dhclient, CUPS a dalších.
Ověření zranitelnosti:
Pro ověření, zda je konkrétní server postižen touto chybou nebo zda již došlo k opravě je možné provést spuštění následujícího příkazu:
$ env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
Pokud se vypíše hlášení vulnerable, je server zranitelný.
Doporučení:
Většina významných dodavatelů firemních Linux řešení již provedla nezbytná opatření a poskytuje záplatu. Doporučujeme tedy bezodkladně provést update na nejnovější verzi Bash poskytovanou dodavatelem. V případě, že dodavatel neposkytuje opravenou verzi doporučujeme dočasně používat jiný Shell.
Teď si nejsem jistej, protože Apache už strašně let nepoužívám, ale mám pocit, že jeden z těch CGI samplů nainstalovaných v default instalaci je v bashi.
Mnoho lidí má tendenci neodstraňovat sample html a cgi a jen si nastaví svůj web. Mimochodem to dělají i docela "profesionální" firmy ve svých enterprise produktech.
Pokud se nepletu, tohle by mohl být velký problém, přenos přes DHCP mi taky příjde zajímavý. Třeba si rovnou otevřít telnet :-D po přidělení adresy.
Možná by stačil odkaz na security blog Redhatu:
https://securityblog.redhat.com/2014/09/24/bash-specially-crafted-environment-variables-code-injection-attack/
"ale téměř nikdo nepoužívá klasické CGI a z těch mála co jo, je menšina, kteří používají bash (a dobře jim tak)."
Pavel Strapa nas k tomu v kapitole 16.5.4 primo vyzyval.... a kdo tuhle knizku kdysi necetl tak o hodne prisel... http://www.nti.tul.cz/~satrapa/docs/iserver/obsah.html
No nevím, zkusil jsem 3 "krabičky", co mám doma,všechny přes ssh - a ani jedna nemá bash. 2x busybox a jednou (VDSL modem Comtrend) možná taky, ale jsou tam jen nějaké nějaké nepříliš dokumentované příkazy specifické pro ADSL. Ani konfigurovat se to celé přes CLI nedá, natož aby tam byl nějaký bash.
Ten busybox je v Synology NAS a router s OpenWRT - tak nevím, jestli někdo dá do kamery kompletní linux i s bashem, ale řekl bych, že sotva, na to jsou tam prostředky příliš vzácné.
... ze nekdo napise takovej blabol na zive/idnes/... to jeste dokazu pochopit, ale ze tentyz blabol bude na lupe, kde bych predpokladal alespon minimalni uroven schopnosti zjistit si zakladni info ...
Bezpecnostni riziko spojeny s touhle chybou je naprosto marginalni. Jak jiz bylo receno, krabicky bash z 90% nemaji vubec, protoze pouzivaji lehci interprety, a apache v bezne konfiguraci spusteni scriptu vubec nedovoli. Takze by se pripadny zneuzivac nejdriv musel na stroj prihlasit.
Vážně? A co třeba DHCP? https://www.trustedsec.com/september-2014/shellshock-dhcp-rce-proof-concept/
A existuje spoustu dalších zpusobů, ne jenom cgi v apachi http://www.troyhunt.com/2014/09/everything-you-need-to-know-about.html
Kolik % linuxovych stroju neni v pozici serveru? Kolik ‰ serveru pouziva dhcp ? Linuxovych desktopu s dhcp klientem jsou stovky milionu? Vazne? Dhcp lze poslat po internetu? Vazne?
A pak jsme u toho, kolik % z tech serveru provozuje treba prave web, ktery umoznuje spoustet scripty, a zaroven jehoz autor kasle na osetreni vstupu? To je samozrejme otazka. Malo jich asi nebude, ale asi nejde o nic na tema "zitra umre internet".
No, například u nás ve firmě má 99% lidí laptop s Linuxem nebo Mac. Chápu že Linux je na desktopu minoritní platforma, nicméně ti kdo ho používají mají jsou často v dost zajímavých pozicích (IT s přístupem na spoustu serverů, apod.). Jasně, DHCP se po internetu běžně neprovozuje no ale spousta lidí cestuje a připojuje se na hotelové wifiny, hipsteři chodí do Starbucksu apod. Sem tam nějaká ta IT konference s wifi připojením ... například teď o víkendu LinuxDays, ideální příležitost k útoku na obecenstvo z 99% používajících Linux/Mac,
Takže ono to ani na desktopu tak netriviální množství lidí není.
Jak jsem psal už jinde, je to blbost a kachna. Samozřejmě - je to problém, ale téměř nikdo nepoužívá klasické CGI a z těch mála co jo, je menšina, kteří používají bash (a dobře jim tak). Přes SSH to vyžaduje speciální nastavení na straně serveru a hlavně znalost jména+hesla! (takže hacknete tak leda sám sebe). Blbé je to když ten SSH vede do gitu nebo tak něco, ale tam by se asi měl ze zásady používat nějaký restricted shell. Ohroženější je DHCP démon (přidělování IP adres v síti) a CUPS (tiskový server), což by mohl být problém. Ale je tu jedno ale - v embeded zařízeních bash nebývá, na to je to moc velký moloch. A když někom jede ve větší síti DHCP na Linuxu, tak je to typicky extra server (nebo virtuál). Systémy RHEL/CentOS mají SELinux, takže po průniku budou škody minimální a navíc aktualizace vyšla včera a mně se nainstalovala dřív, než jsem četl tyhle články.
Takže - škoda. Mohla to být pěkná legrace. Ale bohužel nebude :-(
jen si správci uvědomí, jak mají lépe zabezpečit své systémy (separace, služeb, virtualizace s možností migrace, duplicita zabezpečení služeb...).
apache tam ma 2 subory
printenv a test-cgi
prvy ma v hlavicke #!/usr/local/bin/perl a druhy #!/bin/sh
Relativne malo distribucii ma sh defaultne linkovany na bash
Ak pouzivas mod_rewrite alebo mod_virtualhost, alebo cokolvek ine, k default cgi-bin sa nedostanes
Zranitelnost skrz cgi imho dost nizka.
Kdysi jsem v parlamentu označil české novináře za nejpitomější socioprofesní skupinu v naší společnosti. Chtěl bych se jim touto cestou omluvit, protože se nyní domnívám, že jde o skupinu nejblbější. Blbost se od pitomosti liší tím, že blbec nejen neví, že neví, ale domnívá se, že ví, a je ochoten to všemi prostředky hlásat. (Miloš Zeman)
Chybu neodhalili v Red Hatu, ale specialista firmy Akamai. Vyvojari Red Hatu se podileli na odstraneni problemu.
Bash se v serveru Apache nepouziva casto. Sice lze nastavit CGI, ale psani CGI skriptu v Bashi je vzacne. Jazyky Perl, Python, PHP a Ruby nejsou ohrozeny, a to ani pokud jsou nastaveny v rezimu CGI.
Nejvetsi riziko je u embedded zarizeni ktere nelze snadno aktualizovat a mohou pouzivat Bash ve vetsi mire.
Proc jste psal tak rychle a zbrkle? Staci si precist par stranek...