Bash obsahuje kritickou zranitelnost ShellShock

zranitelnostAsi jste už zaznamenali, že byla objevena kritická zranitelnost v nejpoužívanějším unixovém a linuxovém shellu, kterým je Bash (Bourne again shell).

A byť je této zranitelnosti, médii pojmenované ShellShock, možné poměrně snadno zneužít, tak i zde musí být splněny určité podmínky.

Moc proto nechápu hysterii, která kolem této zranitelnosti vznikla. Trochu mi to připomíná paniku, kterou šířila média v době, kdy se objevila zranitelnost Heartbleed, jejíž závažnost mnozí bezpečnostní experti značně nadhodnocovali. Zde je však situace trochu jiná.

Skutečnost je taková, že zranitelnost ShellShock, evidována pod číslem CVE-2014-6271 a CVE-2014-7169, získala v hodnocení CVSS nejvyšší možné skóre, tj. 10 z 10 bodů, a proto byla označena za kritickou. Je třeba si však uvědomit, že se jedná o základní skóre, a tudíž je vhodné si položit i další otázky, které toto skóre dále upravují.

Pravda je, že od objevení této zranitelnosti proběhlo velké množství síťových skenů s cílem zjistit, kolika zařízení dostupných přes internet se tento problém týká. Otázka je, zda tyto skeny prováděli spíše výzkumníci nebo útočníci.

V okamžiku, kdy se takováto zranitelnost objeví, tak má bohužel každý výzkumník, ve snaze přijít s nějakou šokující informací, potřebu hned skenovat div ne celý internet.

Dále se objevilo, jak se ostatně dalo předpokládat, i několik exploitů, které jsou používány ke kompromitaci zařízení trpících touto zranitelností, a jejich následně začlení do botnetu.

Na tomto místě je nicméně vhodné zmínit, že aby bylo možné této zranitelnosti vůbec zneužít, tak na zařízení musí běžet Linux nebo UNIX a jako defaultní shell musí být nastaven Bash a hlavně musí být možné zavolat skript s parametry, které budou tímto shellem interpretovány. Pozor, defaultní shell /bin/sh může prostřednictví symlinku odkazovat na /bin/bash.

Tyto podmínky splňuje např. webový server Apache běžící na linuxovém nebo unixovém serveru, který má aktivován mod_cgi a pro generování dynamických stránek používá cgi skripty napsané v Bashi.

Otázka je, kolik takových zranitelných systémů je, protože CGI (Common Gateway Interface) skripty jsou staré více jak 20 let a postupně byly nahrazeny mnohem efektivnějšími a bezpečnějšími řešeními, takže je dnes už málokdo používá.

Ve své době však představovaly v podstatě jediné řešení, jak webovému serveru předat parametry, a spustit na serveru další proces, jehož výsledkem byla dynamicky vygenerovaná stránka na základě předaných parametrů, a proto se s nimi můžeme stále setkat

CGI skripty, kterým je možné tyto parametry předat, ať už metodou GET nebo POST, se musí nacházet na serveru, aby bylo možné je zavolat. Zpravidla jsou pak umístěny v adresáři cgi-bin a mají příponu .cgi. Samotná zranitelnost pak spočívá v tom, že parametrem nemusí být jen data, ale i příkaz, který se díky přítomnosti zranitelnosti též spustí.

Vlastní skript však může být napsán v jakémkoliv skriptovacím nebo programovacím jazyce, který server podporuje, tedy nikoliv pouze v Bashi, který je stále méně využíván, což pravděpodobnost zneužití této zranitelnosti snižuje. Kromě toho může být systém nastaven i tak, že možnost volat příslušný cgi script má pouze autentizovaný uživatel.

Podstatné je, že na webu se nějaký takový skript musí nacházet. Pokud se na webu takový skript nenachází, není možné ho zavolat. Jinými slovy, daný systém zranitelnost ShellShock sice může obsahovat, nicméně ji není možné vzdáleně zneužít.

V okamžiku, kdy se na webu nějaký cgi skript nachází, a je možné ho zavolat, může útočník zranitelnosti ShellShock zneužít a upravit předávané parametry tak, aby došlo k vykonání libovolného příkazu systému.

Mnohdy však nemusí být vůbec možné zavolat jakýkoliv příkaz, protože již služba, která skript spouští, může běžet pod účtem s omezeným oprávněním, což je ostatně best practice.

Zranitelné však nejsou jen webové servery, ale všechna zařízení, která pohání Linux/Unix, a přijímají parametry od uživatele, které předávají ke zpracování Bash skriptu. Mnohá síťová zařízení však používají spíše Dash shell.

Naproti tomu DHCP klient na notebooku s Linuxem volá klasický Bash, a tudíž je zranitelný. Jde o to, že DHCP klient obdrží z DHCP serveru parametry, které předává skriptu, jenž jimi naplní proměnné prostředí.

Pokud tedy útočník, pod jehož správou je DHCP, přidá do některých z předávaných hodnot výraz jako je „() {;}; nějaký příkaz“, dojde na zranitelném systému kromě naplnění příslušných proměnných i ke spuštění onoho příkazu.

Je evidentní, že za těchto okolností může být zneužito jakékoliv aplikace, která data na vstupu nijak nekontroluje, a že vektorem útoku může být i qmail, prosím neplést s gmail, viz tato zpráva.

Pokud máte přístup na konzoli, můžete snadno zjistit, jak na tom váš systém je, a to tímto příkazem: env x='() { :;}; echo vulnerable‘ sh –c „echo this is a test”. Jestli se vám na obrazovce po spuštění tohoto příkazu zobrazí vulnerable, tak to ještě neznamená, že je této zranitelnosti možno zneužít vzdáleně.

Jak již bylo uvedeno výše, na serveru musí být možné zavolat skript, který je interpretován Bashem. Jestli je systém skutečně zranitelný vzdáleně, můžete zjistit pomocí volně dostupných online nástrojů jako je např. BashSmash, kdy stačí zadat jen URL webu. Ovšem pozor na používání těchto nástrojů, mohly by být zneužity útočníkem k identifikaci zranitelných systémů.

V případě, že váš systém zranitelností ShellShock trpí, měli byste si ověřit, zda již této zranitelnosti nebylo zneužito. To můžete zjistit pohledem do logu, kde byste v případě úspěšného útoku mohli najít i příkaz, který útočník použil.

Ať už bylo zranitelnosti zneužito nebo ne, doporučuji systém přeinstalovat, a to především proto, že útočník již mohl stopy po útoku odstranit, a dále nasadit patch, odstraňující tuto zranitelnost. Případně můžete zaměnit Bash shell za nějaký jiný, např. ksh.

Tato zranitelnost opět vyvolává otázku, zda je otevřenosti zdrojového kódu v praxi využíváno nebo se jedná jen o zbožné přání.

Poznámka: Toto je živý příspěvek, který může být průběžně doplňován a upravován.

Pro citování tohoto článku ve své vlastní práci můžete použít následující odkaz:
ČERMÁK, Miroslav, 2014. Bash obsahuje kritickou zranitelnost ShellShock. Online. Clever and Smart. ISSN 2694-9830. Dostupné z: https://www.cleverandsmart.cz/bash-obsahuje-kritickou-zranitelnost-shellshock/. [citováno 07.12.2024].

Pokud vás tento článek zaujal, můžete odkaz na něj sdílet.

Štítky:


K článku “Bash obsahuje kritickou zranitelnost ShellShock” se zde nenachází žádný komentář - buďte první.

Diskuse na tomto webu je moderována. Pod článkem budou zobrazovány jen takové komentáře, které nebudou sloužit k propagaci konkrétní firmy, produktu nebo služby. V případě, že chcete, aby z těchto stránek vedl odkaz na váš web, kontaktujte nás, známe efektivnější způsoby propagace.

Přihlášeným uživatelům se tento formulář nezobrazuje - zaregistrujte se.

Jméno:(požadováno)
E-mail:(požadováno - nebude zobrazen)
Web:

Text vaší reakce: