Shellshock
Shellshock (známý též jako Bashdoor)[1] je bezpečnostní chyba[2] 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.[3]
Stéphane Chazelas objevil původní chybu 12. září 2014[1] a navrhl pro ni jméno „Bashdoor“.[1] Chybě byl přiřazen CVE identifikátor CVE-2014-6271.[1] 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.[4]
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í.[1][4] 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.[5][6]
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.[7][8] V dalších dnech byly bezpečnostními firmami zaznamenány milióny útoků a sond souvisejících s chybou.[9][10] 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.[3][11]
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.[12][13] 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áří.[14][15]
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.[1] 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[4] (nebo dokonce dříve - od verze 1.05).[16] Správci zdrojového kódu Bashe mají obtíže určit čas zavedení chyby do kódu kvůli nedostatečné detailnosti changelogů.[1]
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.[17] 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.[18] 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.[19] 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.[20] 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.[21]
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.[8][7][22] 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.[7] 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.[8]
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.[9] 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.[10]
Dne 6. října bylo hlášeno, že také Yahoo! servery byly napadeny útoky využívajícími tuto chybu Shellshock.[23][24]
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.[4] 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".[25]
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.[26]
DHCP server
Někteří DHCP klienti můžou 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.[11]
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.[27]
IBM HMC omezený shell
Uživatelé můžou využívat chyby pro získání přístupu k neomezenému shellu z omezeného shellu na IBM Hardware Management Console.[28]
Reference
V tomto článku byl použit překlad textu z článku Shellshock (software bug) na anglické Wikipedii.
- PERLROTH, Nicole. Security Experts Expect ‘Shellshock’ Software Bug in Bash to Be Significant. New York Times. 25 September 2014. Dostupné online [cit. 25 September 2014]. (anglicky)
- Although described in some sources as a "virus," Shellshock is instead a coding mistake in a program that comes with some operating systems. See => Staff. What does the "Shellshock" bug affect? [online]. 25 September 2014 [cit. 2014-09-27]. Dostupné online. (anglicky)
- SELTZER, Larry. Shellshock makes Heartbleed look insignificant [online]. 29 September 2014 [cit. 2014-09-29]. Dostupné online. (anglicky)
- LEYDEN, John. Patch Bash NOW: 'Shell Shock' bug blasts OS X, Linux systems wide open [online]. 24 September 2014 [cit. 2014-09-25]. Dostupné online. (anglicky)
- SAARINEN, Juha. Further flaws render Shellshock patch ineffective [online]. 29 September 2014 [cit. 2014-09-29]. Dostupné online. (anglicky)
- VAUGHAN-NICHOLS, Steven. Shellshock: Better 'bash' patches now available [online]. ZDNet, 27 September 2014 [cit. 2014-09-29]. Dostupné online. (anglicky)
- GREENBERG, Andy. Hackers Are Already Using the Shellshock Bug to Launch Botnet Attacks [online]. 25 September 2014 [cit. 2014-09-28]. Dostupné online. (anglicky)
- SAARINEN, Juha. First Shellshock botnet attacks Akamai, US DoD networks. iTnews. 26 September 2014. Dostupné online [cit. 26 September 2014]. (anglicky)
- PERLROTH, Nicole. Companies Rush to Fix Shellshock Software Bug as Hackers Launch Thousands of Attacks. New York Times. 26 September 2014. Dostupné online [cit. 29 September 2014]. (anglicky)
- STROHM, Chris; ROBERTSON, Jordan. Shellshock Draws Hacker Attacks, Sparks Race to Patch Bug [online]. Businessweek, 30 September 2014 [cit. 2014-10-01]. Dostupné online. (anglicky)
- CERRUDO, Cesar. Why the Shellshock Bug Is Worse than Heartbleed [online]. 30 September 2014 [cit. 2014-10-01]. Dostupné online. (anglicky)
- CHACOS, Brad. Apple Says Users Safe [online]. 26 September 2014 [cit. 2014-09-26]. Dostupné online. (anglicky)
- Apple Working Quickly [online]. 26 September 2014 [cit. 2014-09-26]. Dostupné v archivu pořízeném dne 2014-10-08. (anglicky)
- GALLAGHER, Sean. Apple working on “Shellshock” fix, says most users not at risk [online]. [cit. 2014-09-29]. Dostupné online. (anglicky)
- RAGAN, Steve. Apple's Shellshock patch is incomplete experts say [online]. 30 September 2014 [cit. 2014-10-09]. Dostupné online. (anglicky)
- KOBRIN, Eric. oss-sec mailing list archives [online]. 3 October 2014 [cit. 2014-10-03]. Dostupné online. (anglicky)
- Open Group Base Specification: exec [online]. [cit. 2014-10-02]. Dostupné online. (anglicky)
- Bash Reference Manual: Shell Functions [online]. [cit. 2014-10-02]. Dostupné online. (anglicky)
- Bash Reference Manual: Bourne Shell Builtins [online]. [cit. 2014-10-02]. Dostupné online. (anglicky)
- Bash 4.3 source code, file variables.c, lines 315-388 [online]. [cit. 2014-10-02]. Dostupné online. (anglicky)
- Bash bug: the other two RCEs, or how we chipped away at the original fix (CVE-2014-6277 and '78) [online]. 1 October 2014 [cit. 2014-10-08]. Dostupné online. (anglicky)
- Various. Web attacks build on Shellshock bug [online]. 26 September 2014 [cit. 2014-09-26]. Dostupné online. (anglicky)
- BOREN, Zachary. Shellshock: Romanian hackers are accessing Yahoo servers, claims security expert. Independent. 6 October 2014. Dostupné online [cit. 7 October 2014]. (anglicky)
- Yahoo! Shellshocked Like Ninja Turtles! [online]. [cit. 2014-10-07]. Dostupné v archivu pořízeném dne 2014-10-09. (anglicky)
- Apache HTTP Server 2.2 Documentation: Security Tips [online]. [cit. 2014-10-02]. Dostupné online. (anglicky)
- The Laws of Vulnerabilities [online]. [cit. 2014-09-26]. Dostupné v archivu pořízeném dne 2014-10-06. (anglicky)
- "Further flaws render Shellshock patch ineffective", Sep 29, 2014, Juha Saarinen, itnews.com.au
- "IBM HMC is a vector for CVE-2014-6271 (bash "shellshock")