Shellshock
Shellshock (známý též jako Bashdoor) je bezpečnostní chyba v široce využívaném Unixovém Bash shellu. První takováto chyba byla zveřejněna 24. září 2014. Bash užívá pro zpracování určitých příkazů mnoho internetových démonů, zejména ty, které jsou součástí webových serverů. To umožňuje útočníkům napadnout zranitelnou verzi shellu Bash a přimět ji vykonávat libovolné příkazy, čímž získají neautorizovaný přístup do počítačového systému.

Stéphane Chazelas objevil původní chybu 12. září 2014 a navrhl pro ni jméno „Bashdoor“. Chybě byl přiřazen CVE identifikátor CVE-2014-6271. Následná analýza historie zdrojového kódu Bashe ukázala, že tato zranitelnost byla součástí Bashe přibližně od roku 1992.

Základní chyba způsobí, že Bash neúmyslně vykoná určité příkazy, v případě, že jsou tyto příkazy připojeny na konci definice funkce, která je uložena v hodnotách proměnných prostředí. V době publikování této chyby bylo prováděno podrobné zkoumání základního designu, které ukázalo různé závislé slabiny (CVE-2014-6277, CVE-2014-6278, CVE-2014-7169, CVE-2014-7186, a CVE-2014-7187), které správce Chet Ramey vyřešil sérií dalších oprav.

V následujících hodinách po zveřejnění chyby prováděli útočníci DDOS útoky a skenování slabin prostřednictvím botnetů, které umísťovali na napadené počítače. V dalších dnech byly bezpečnostními firmami zaznamenány milióny útoků a sond souvisejících s chybou. Chyba může být potenciálně využita k napadení miliónů serverů a jiných systémů. Co se týče závažnosti, byla přirovnávána k chybě Heartbleed.

Apple uvedl, že pokud uživatelé nenakonfigurují pokročilé unixové služby, jsou v továrním nastavení OS X v bezpečí. Uživatelé, kteří jsou schopni si tyto služby přenastavit, jsou také schopni je dočasně vypnout, dokud nebude implementována oprava využívající Xcode. Přesto, že Apple zaznamenal slabiny ještě předtím, než se informace dostaly na veřejnost, nevydal žádnou aktualizaci pro OS X až do 29. září.

Pozadí problému 
Shellshock chyby působí na Bash, což je program, který různé unixové systémy používají pro vykonávání příkazového řádku a příkazových skriptů. Většinou je nainstalován do systému v základním nastavení jako rozhraní pro příkazový řádek. Bash je svobodný software, vyvíjený ve spolupráci s dobrovolníky a od roku 1992 pod dohledem Cheta Rameyho, který je profesionálním softwarovým architektem. Podrobná analýza historie kódu Bashe ukázala, že tato chyba byla jeho součástí přibližně od verze 1.13 z 1992 (nebo dokonce dříve - od verze 1.05). Správci zdrojového kódu Bashe mají obtíže určit čas zavedení chyby do kódu kvůli nedostatečné detailnosti changelogů.

V Unixových operačních systémech i v jiných operačních systémech, které používají Bash, má každý běžící program vlastní list párů (jméno/hodnota) nazývaných proměnné prostředí. Když jeden program spustí jiný program, tak ten původní poskytuje výchozí list proměnných prostředí pro onen nový program. Nezávisle na tom Bash také spravuje interní list funkcí, které se jmenují skripty a které mohou být vykonány v rámci programu. Od té doby, co Bash funguje jako příkaz i jako interpret příkazů, je možné vykonat Bash z něho samotného. Pokud se toto stane, původní instance může exportovat proměnné prostředí a definice funkcí do nové instance. Definice funkcí jsou exportovány pomocí kódování do listu proměnných prostředí jako proměnné, jejichž hodnoty začínají kulatými závorkami ("()") následované definicí funkce. Nová instance Bashe při startu skenuje jeho list proměnných prostředí pro hodnoty v tomto formátu a převádí je zpátky na interní funkce. Tento převod provádí vytvořením fragmentu kódu z hodnoty a následným spuštěním, čímž se vytváří funkce „za běhu“. Chybné verze Bashe však neověřují, zda je tento fragment validní definice funkce. Tímto je umožněno vykonání Bashe se zvolenou hodnotou v jeho listu proměnných prostředí, což dovoluje útočníkovi vykonat libovolný příkaz nebo využít jiné chyby, která může existovat v Bash interpretu.

Dne 1. října Zalewski zveřejnil detaily finálních chyb a potvrdil, že Florianova záplata je skutečně opravuje.

Hlášení o útocích 
Během první hodiny po oznámení zranitelnosti Bashe byla přijata hlášení o napadených zařízeních. Až do 25. září 2014 byly prováděny DDoS útoky a skenování zranitelnosti pomocí botnetů umístěných na počítačích, ohrožených touto chybou. Společnost Kaspersky Labs ohlásila, že zařízení, která byla napadena těmito útoky, jenž byly známé pod přezdívkou „Thanks-Rob“, prováděla DDoS útoky proti třem cílům, které nebyly identifikovány. Dne 26. září 2014 byl nahlášen Shellshock botnet přezdívaný „wopbot“, což bylo využito pro vykonání DDoS útoku na Akamai Technologies a pro skenování Ministerstva obrany USA.

Dne 26. září 2014 zaznamenala bezpečnostní firma Incapsula v průběhu předchozích 24 hodin kolem 17,400 útoků na více než 1800 webových domén, pocházejících z 400 unikátních IP adres; 55% z útoků pocházelo z Číny a USA. O čtyři dny později, 30. září 2014, oznámila firma CloudFlare, která se věnuje výkonu webových stránek, že bylo sledováno přibližně 1,5 miliónu útoků a sondování za den.

Dne 6. října bylo hlášeno, že také Yahoo! servery byly napadeny útoky využívajícími tuto chybu Shellshock.

Konkrétní případy

Webové servery s CGI 
Pokud webový server využívá základní rozhraní brány (CGI) k zacházení s dokumentovými požadavky, nechává různé detaily požadavku pro obsluhovací program v listu proměnných prostředí. Například proměnná HTTP_USER_AGENT má hodnotu, která při normálním použití identifikuje, že program odeslal požadavek. Jestliže obsluhovač požadavků je Bash skript nebo pokud vykonává požadavek, který například využívá pro provedení shellových příkazů volání system(3), pak Bash přijme proměnné prostředí, které prošly serverem, a zpracuje je tak, jak bylo uvedeno výše. To umožňuje útočníkovi spustit Shellshock se speciálně vytvořeným serverovým požadavkem. Bezpečnostní dokumentace pro široce využívaný webový server Apache uvádí: "CGI skripty mohou ... být extrémně nebezpečné, pokud nejsou obezřetně zkontrolovány".

OpenSSH server 
OpenSSH má funkci ForceCommand, kde je při přihlášení uživatele vykonán fixní příkaz, namísto prostého spuštění neomezeného příkazového řádku. Fixní příkaz je vykonán pouze v případě, že uživatel specifikuje, jaký další příkaz má být spuštěn; v tom případě je původní příkaz vložen do proměnné prostředí SSH_ORIGINAL_COMMAND. Pokud vynucený příkaz běží v Bash shellu (pokud je uživatelský shell nastaven na Bash), Bash shell rozdělí proměnnou prostředí SSH_ORIGINAL_COMMAND na spouštění a běh příkazů zabudovaných do něj. Uživatel používá jejich omezený shell přístup pro získání neomezeného shell přístupu za použití Shellshock chyby.

DHCP server 
Někteří DHCP klienti mohou také přeposlat příkaz do Bashe; zranitelný systém může být napaden, pokud je připojen na otevřenou Wi-Fi síť. DHCP klient typicky požaduje a dostává IP adresy z DHCP serveru, ale také může poskytovat sérii dalších možností. Zlomyslný DHCP server může poskytnout v jedné z těchto možností textový řetězec upravený pro vykonání kódu na zranitelné pracovní stanici nebo notebooku.

QMail server 
V závislosti na specifické konfiguraci může qmail mail server poslat externí vstup skrz Bash po cestě, která může využívat zranitelnou verzi.

IBM HMC omezený shell 
Uživatelé mohou využívat chyby pro získání přístupu k neomezenému shellu z omezeného shellu na IBM Hardware Management Console.

Reference

Externí odkazy 
 

Programátorské chyby