Bashdoor

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 2. března 2020; kontroly vyžadují 6 úprav .

Bashdoor (také anglicky  Shellshock [1] ) je série softwarových zranitelností objevených v programu GNU Bash v září 2014 a veřejně uvolněných 24. září [2] . Mnoho internetových služeb , včetně webových serverů , může používat Bash ke zpracování určitých požadavků, například při spouštění skriptů CGI . Tato zranitelnost umožňuje útočníkovi provádět libovolné příkazy a získat tak neoprávněný přístup k počítačovým systémům [3] .

Zranitelnost spočívá v tom, že Bash na rozdíl od deklarovaných schopností provádí příkazy při příjmu některých nestandardních hodnot proměnných prostředí ( environment ) [1] [4] . Několik dní po zveřejnění původní chyby zabezpečení bylo objeveno několik podobných chyb, které zabránily rychlému vydání opravené verze.

Původní chybu objevil Stéphane Chazelas [1] ( francouzsky  Stéphane Chazelas ) 12. září 2014 [1] , který ji navrhl nazývat „bashdoor“ (souhláska se zadními vrátky ) [1] . Zranitelnost získala v databázi MITER číslo CVE-2014-6271 a zůstala nezveřejněna (bylo na ni uvaleno embargo ) do 24. září 14:00 UTC, aby si autoři programu, tvůrci distribucí a další zainteresované organizace mohli vzít potřebné opatření [5] .

Analýza zdrojového kódu Bash ukazuje, že zranitelnost byla zavedena do kódu kolem verze 1.13 v roce 1992 nebo dříve [6] a od té doby zůstala nezjištěna pro širokou veřejnost a nedeklarována [4] . Autorský tým Bash má potíže s určením přesného času zavedení chyby kvůli nedostatečně podrobnému changelogu ( changelog ) [1] .

25. září 2014 již byly na základě zranitelnosti vytvořeny botnety pro provádění DoS a DDoS útoků a také pro skenování zranitelností [7] [8] . Odhaduje se, že miliony systémů jsou zranitelné. Chyba získala maximální hodnocení na stupnici závažnosti a je porovnávána s hodnotou Heartbleed  – chybou v OpenSSL (duben 2014) [9] [10] .

Popis

Zranitelnost Shellshock (bashdoor) odkazuje na program bash (vyvinutý projektem GNU ) používaný v mnoha unixových operačních systémech a distribucích jako interpret příkazového řádku a pro spouštění skriptů shellu. Často nastaven jako výchozí systémový interpret.

V operačních systémech typu Unix a dalších podporovaných bash má každý program seznam párů název-hodnota nazývaných proměnné prostředí .  Když jeden program spustí jiný, předá se také počáteční seznam proměnných prostředí [11] . Kromě proměnných prostředí bash také udržuje interní seznam funkcí, pojmenovaných skriptů, které lze volat ze spustitelného skriptu bash [12] . Při spouštění nových instancí bash z existujícího bashe je možné předat ( exportovat ) hodnoty existujících proměnných prostředí a definic funkcí do vytvořeného procesu [13] . Definice funkcí se exportují tak, že se zakódují jako nové proměnné prostředí speciálního formátu, počínaje prázdnými závorkami "()", za kterými následuje definice funkce jako řetězec. Nové instance bash skenují při spuštění všechny proměnné prostředí, detekují daný formát a převádějí jej zpět na definici interní funkce [14] . Tato transformace se provádí vytvořením fragmentu bash kódu založeného na hodnotě proměnné prostředí a jeho provedením, tedy „za běhu“. Dotčené verze bash nekontrolují, zda spustitelný soubor obsahuje pouze definici funkce [14] . Pokud má tedy útočník schopnost dodat libovolnou proměnnou prostředí pro spuštění bash, pak bude možné provádět libovolné příkazy.

27. září byl zveřejněn kvalitní patch, který přidává speciální prefix všem exportovaným a importovaným funkcím při jejich převodu na proměnné prostředí a naopak [15] .

Pozdější epizody využívání bash

Ve stejný den, kdy byly zveřejněny informace o původní zranitelnosti a opravách, které ji opravují, objevil Tavis Ormandy novou související chybu CVE-2014-7169 [3] . Aktualizované opravy byly k dispozici 26. září [3] [16] [17] [18] [19] [20] .

Při práci na opravě původní chyby Shellshock objevil výzkumník Red Hat Florian Weimer další dvě chyby: CVE-2014-7186 a CVE-2014-7187 [21] [22] .

26. září 2014 si dva open-source vývojáři, David A. Wheeler a Norihiro Tanaka, všimli, že existují další problémy, které v té době dostupné záplaty stále neopravují. Ve svém e-mailu do e-mailových konferencí „oss-sec“ a „bash bug“ Wheeler napsal:

Tento patch pouze pokračuje v práci "zabít krtka" ( whac-a-mole ) [23] na opravě různých chyb při analýze, které začaly s prvním patchem. Bash parser samozřejmě obsahuje mnoho mnoho mnoho dalších zranitelností.

Původní text  (anglicky)[ zobrazitskrýt] Tato oprava jen pokračuje v „práce na mol“ při opravě chyb při analýze, která začala s prvním patchem. Je jisté, že Bashův analyzátor má mnoho, mnoho dalších zranitelností — [24]

27. září 2014 Michal Zalewski oznámil, že objevil několik dalších chyb v bash [25] [26] , z nichž jedna využívá toho, že bash je často kompilován bez použití ochranné techniky ASLR ( Address Space Layout Randomization ) [27 ] . Zalewski také požadoval naléhavou opravu od Floriana Weimera [25] [26] [27] .

Seznam zranitelností

CVE-2014-6271

Původní bashdoor: Zvláštní druh proměnné prostředí se skládá z definice exportované funkce následované libovolnými příkazy. Zranitelné verze Bash provádějí tyto libovolné příkazy během spouštění [28] . Příklad chyby:

env x = '() { :;}; echo Vulnerable' bash -c "echo Test print"

Na zranitelných systémech tento test vypíše frázi "Vulnerable" provedením příkazu z proměnné prostředí x [29] .

CVE-2014-6277

K 29. září nebyly podrobnosti o zranitelnosti zveřejněny [25] [27] [30] .

CVE-2014-6278

K 29. září nebyly podrobnosti o zranitelnosti veřejně zveřejněny [25] [31] .

CVE-2014-7169

Objevil Tavis Ormandy při práci na CVE-2014-6271 :

env X='() { (a)=>\' sh -c "echo date"; cat echo

Test způsobí, že se "echo" stane názvem souboru pro přesměrování výstupu a "datem" se provede. Chyba dostala číslo CVE-2014-7169 [3] .

Příklad chyby 7169 v systému, který obdržel opravu chyby CVE-2014-6271 , ale nikoli chybu CVE-2014-7169 [32] $ X = '() { (a)=>\' bash -c "datum odezvy" bash: X: řádek 1 : chyba syntaxe poblíž neočekávaného tokenu ` = ' bash: X: řádek 1: `' bash: chyba při importu funkce definice pro ` X ' [ root@ ec2-user ] # cat echo26. září 01:37:16 UTC 2014

Oprava CVE-2014-6271 i CVE-2014-7169 test přeruší:

$ X = '() { (a)=>\' bash -c "datum odezvy" datum $ kočičí ozvěna cat: echo: Žádný takový soubor nebo adresář

CVE-2014-7186

Chyba je způsobena podobnými problémy v kódu Bash [33] , ale je ovlivněna opakovaným "<<EOF"

Test bash -c 'true <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF' || echo "Vulnerable by CVE-2014-7186, redir_stack" Dotčený systém zobrazí text „Vulnerable by CVE-2014-7186, redir_stack“.

CVE-2014-7187

Chyba je způsobena podobnými problémy v kódu Bash [33] , ale je ovlivněna vícenásobným opakováním "hotovo"

Test ( pro x v { 1 ..200 } ; do echo "for x $x in ; do :" ; hotovo ; pro x v { 1 ..200 } ; do echo hotovo ; hotovo ) | bash || echo "Zranitelné od CVE-2014-7187, word_lineno" Dotčený systém zobrazí text „Vulnerable by CVE-2014-7187, word_lineno“.

Útočné vektory

Do hodiny po zveřejnění zranitelnosti Bash se objevily zprávy o hacknutí počítačových systémů s její pomocí. 25. září byly potvrzeny různé útoky „ve volné přírodě“, od jednoduchých útoků DoS až po nasazení serverů pro příkazy a řízení prostřednictvím škodlivého systému „BASHLITE“ [34] [35] . Společnost Kaspersky Labs oznámila, že některé z infikovaných počítačů zahájily útok DDoS proti třem cílům [8] . 26. září byl objeven botnet „wopbot“, složený ze serverů infikovaných přes bashdoor a používaný v DDoS proti CDN Akamai Technologies a ke skenování sítí amerického ministerstva obrany [7] .

Existuje několik potenciálních způsobů, jak může útočník předat libovolné proměnné prostředí bash běžícímu na napadeném serveru:

CGI útok na webové servery

Webové servery spouštějící skripty Common Gateway Interface (CGI) předávají podrobnosti uživatelského požadavku prostřednictvím proměnných prostředí, jako je HTTP_USER_AGENT. Pokud je požadavek zpracován programem Bash, nebo jiným programem, který interně volá bash, pak může útočník nahradit řetězec User-Agent přenášený přes http spouštěčem útoku Shellshock přidáním vlastních příkazů [36] . Jako takový příkaz lze zadat například instrukci „ping“ s adresou útočníka. Z příchozích požadavků ping bude útočník vědět, zda útok fungoval.

Přestože je CGI starším rozhraním s jinými bezpečnostními riziky [37] , stále se používá. Například jeden ze standardních skriptů cPanel je zranitelný [38] , odhaduje se, že zranitelný cPanel lze použít na 2–3 % webů [39] .

Útok na SSH server

OpenSSH SSH server vám umožňuje omezit uživatele na pevnou sadu dostupných příkazů (volba "ForceCommand"). Pevný příkaz se provede, i když uživatel požádal o provedení jiného příkazu. Požadovaný příkaz je v tomto případě uložen v proměnné prostředí "SSH_ORIGINAL_COMMAND". Pokud je v prostředí Bash spuštěn pevný příkaz (pokud je interpret uživatele nastaven na Bash), GNU Bash při spuštění zjistí hodnoty SSH_ORIGINAL_COMMAND vložené do prostředí a v případě zranitelnosti Bashdoor spustí tam vložené příkazy. Útočník s přístupem pouze k omezenému prostředí tedy získá neomezený přístup [3] .

Útok klienta DHCP

Klient DHCP obvykle požaduje adresu IP od serveru DHCP. Server však může odeslat několik dalších možností, které mohou být zapsány do proměnných prostředí a způsobit zneužití Shellshocku na počítači nebo notebooku připojeném k místní síti [40] [41] .

Eskalace oprávnění prostřednictvím programů setuid

Program s nastaveným bitem setuid může volat bash přímo nebo nepřímo pomocí systémových volání system(3) , popen a dalších, bez resetování proměnných prostředí. Útok Shellshock by v takových případech umožnil místnímu uživateli povýšit svá vlastní oprávnění na vlastníka programu podobného setuid, často až na root (superuživatele).

Zranitelnost offline systémů

Chyba by se mohla potenciálně dostat k systémům, které nejsou připojeny k internetu během offline zpracování s bash [42] .

Poznámky

  1. 1 2 3 4 5 Perlroth, Nicole . Bezpečnostní experti očekávají, že softwarová chyba „Shellshock“ v Bash bude významná , New York Times  (25. září 2014). Archivováno z originálu 5. dubna 2019. Staženo 25. září 2014.
  2. Zaměstnanci. Co ovlivňuje chyba „Shellshock“? . Bezpečný Mac (25. září 2014). Získáno 27. září 2014. Archivováno z originálu 29. září 2014.
  3. 1 2 3 4 5 The Laws of Vulnerabilities (odkaz není k dispozici) . Získáno 26. září 2014. Archivováno z originálu 6. října 2014. 
  4. 1 2 Leyden, John Patch Bash NYNÍ: Chyba 'Shell Shock' vybuchla OS X, Linux dokořán . The Register (24. září 2014). Získáno 25. září 2014. Archivováno z originálu 16. října 2014.
  5. oss-security – Re: CVE-2014-6271: vzdálené spuštění kódu přes bash . Získáno 26. září 2014. Archivováno z originálu 28. září 2014.
  6. bash – Kdy byla představena chyba shellshock (CVE-2014-6271/7169) a jaký patch ji plně opravuje? Archivováno 14. října 2014 na Wayback Machine  - Unix & Linux Stack Exchange
  7. 12 Saarinen , Juha . První botnet Shellshock útočí na Akamai, sítě amerického ministerstva obrany , iTnews  (26. září 2014). Archivováno z originálu 29. září 2014. Staženo 26. září 2014.
  8. 1 2 Greenberg, Andy Hackeři již používají chybu Shellshock ke spuštění útoků botnetů . Drátováno (25. září 2014). Datum přístupu: 28. září 2014. Archivováno z originálu 1. ledna 2017.
  9. Nejnebezpečnější zranitelnost byla nalezena na stovkách milionů počítačů , WG (25. 9. 2014). Archivováno z originálu 27. září 2014. Staženo 29. září 2014.
  10. Chyba v prostředí Bash ohrozila počítače se systémem Linux a OS X , RBC (25. září 2014). Archivováno z originálu 28. září 2014. Staženo 29. září 2014.
  11. Specifikace Open Group Base: exec . Získáno 29. září 2014. Archivováno z originálu 9. října 2014.
  12. Bash Reference Manual: Shell functions . Získáno 29. září 2014. Archivováno z originálu 28. září 2014.
  13. Bash Reference Manual: Bourne Shell Builtins . Získáno 29. září 2014. Archivováno z originálu 28. září 2014.
  14. 1 2 Zdrojový kód Bash 4.3, soubor variables.c, řádky 315-388 . Získáno 29. září 2014. Archivováno z originálu 21. dubna 2017.
  15. Steven J. Vaughan-Nichols . Shellshock: Better 'bash' patche jsou nyní k dispozici  (v angličtině) , ZDNet (27. září 2014). Archivováno z originálu 29. září 2014. Staženo 29. září 2014.
  16. Ubuntu . Získáno 26. září 2014. Archivováno z originálu 28. září 2014.
  17. Red Hat (downlink) . Získáno 26. září 2014. Archivováno z originálu 26. září 2014. 
  18. Red Hat 2 . Získáno 26. září 2014. Archivováno z originálu 6. října 2014.
  19. CentOS 5.10 . Získáno 26. září 2014. Archivováno z originálu 28. září 2014.
  20. CentOS 7 . Získáno 26. září 2014. Archivováno z originálu 28. září 2014.
  21. FAQShellshock (26. září 2014). Získáno 26. září 2014. Archivováno z originálu 29. září 2014.
  22. FAQShellshock2 (26. září 2014). Získáno 26. září 2014. Archivováno z originálu 6. října 2014.
  23. ' whack-a-mole ' je oblíbený hrací automat, obrazně řečeno opakující se výzva bez výhry
  24. Gallagher, Sean Stále více zranitelností v bash? Shellshock se stává šrámem . Arstechnica (26. září 2014). Získáno 26. září 2014. Archivováno z originálu 8. ledna 2017.
  25. 1 2 3 4 Saarinen, Juha Další nedostatky způsobují, že patch Shellshock je neúčinný . iTnews (29. září 2014). Získáno 29. září 2014. Archivováno z originálu 29. září 2014.
  26. 1 2 lcamtuf. Bash bug: aplikujte Florian's patch nyní (CVE-2014-6277 a CVE-2014-6278) . lcamtufův blog (27. září 2014). Staženo: 29. září 2014.
  27. 1 2 3 Zaměstnanci. Shellshock, Část 3: Tři další bezpečnostní problémy v Bash (v němčině) . Heise Online (28. září 2014). Získáno 28. září 2014. Archivováno z originálu 29. září 2014.
  28. NVD - Detail . Získáno 29. září 2014. Archivováno z originálu 25. září 2014.
  29. Bash speciálně vytvořený útok vkládání kódu proměnných prostředí | Bezpečnost Red Hat . Získáno 29. září 2014. Archivováno z originálu 25. září 2014.
  30. Zaměstnanci. Souhrn zranitelnosti systému národního kybernetického povědomí pro CVE-2014-6277 . Národní institut pro standardy a technologie (27. září 2014). Získáno 28. září 2014. Archivováno z originálu 5. října 2014.
  31. Zaměstnanci. Zpráva CVE – CVE-2014-6278 . Běžné zranitelnosti a ohrožení (09. září 2014). Získáno 29. září 2014. Archivováno z originálu 23. května 2015.
  32. Jste otevřeni tomu, abyste byli šokováni? (nedostupný odkaz) . hostitel. Získáno 26. září 2014. Archivováno z originálu 9. října 2014. 
  33. 1 2 Sidhpurwala, Huzaifa; Weimer, Florian Neupstreamové záplaty pro bash . oss-security e-mailové konference . Openwall. — „Interní analýza odhalila dva přístupy k poli mimo hranice v analyzátoru bash. Toto také nezávisle a soukromě oznámil Todd Sabin <[email protected]>." Získáno 27. září 2014. Archivováno z originálu 28. září 2014.
  34. Různé. Aktualizace Shellshock: BASHLITE C&Cs Seen, Shellshock Exploit Pokusy v Brazílii . Trend Micro (26. září 2014). Získáno 26. září 2014. Archivováno z originálu 28. září 2014.
  35. Různé. Webové útoky staví na chybě Shellshock . BBC (26. září 2014). Získáno 26. září 2014. Archivováno z originálu 29. září 2014.
  36. Různé. CVE-2014-6271: Vzdálené spuštění kódu prostřednictvím bash . Reddit (24. září 2014). Staženo: 26. září 2014.
  37. Dokumentace Apache HTTP Server 2.2: Bezpečnostní tipy . Získáno 29. září 2014. Archivováno z originálu 9. října 2014.
  38. Zranitelnost Bash zneužívá vypouštění robotů DDoS | Ohrožení | První zastávka pro bezpečnostní zprávy . Získáno 29. září 2014. Archivováno z originálu 6. října 2014.
  39. Zabezpečení webových stránek – Dopady zranitelnosti Bash „Shell Shock“ na uživatele CPANEL | Blog Sucuri . Získáno 30. září 2014. Archivováno z originálu 29. září 2014.
  40. „Shellshock DHCP RCE Proof of Concept“ Archivováno 25. září 2014 na Wayback Machine , Geoff Walton, TrustedSec
  41. Shellshock exploit pro DHCP server , Xakep.ru (26. září 2014). Archivováno z originálu 29. září 2014. Staženo 30. září 2014.
  42. „Sbírka různých útoků“ Archivováno 27. září 2014 na Wayback Machine , Daniel Fox Franke, Akamai

Odkazy