Shellshock (softwarová chyba) - Shellshock (software bug)

Shellshock
Shellshock-bug.svg
Jednoduché logo Shellshock, podobné logu chyby Heartbleed .
Identifikátory CVE CVE - 2014-6271 (počáteční),
CVE - 2014-6277 ,
CVE - 2014-6278 ,
CVE - 2014-7169 ,
CVE - 2014-7186 ,
CVE - 2014-7187
Datum objevení 12. září 2014 ; před 6 lety ( 12.09.2014 )
Datum opraveno 24. září 2014 ; před 6 lety ( 2014-09-24 )
Objevitel Stéphane Chazelas
Ovlivněný software Bash (1.0.3–4.3)

Shellshock , také známý jako Bashdoor , je rodina bezpečnostních chyb v systému Unix Bash shell , z nichž první byla zveřejněných dne 24. září 2014. Shellshock by mohla umožnit útočníkovi způsobit Bash ke spuštění libovolného příkazy a získat neoprávněný přístup k mnoha Internet služby, jako jsou webové servery, které používají Bash ke zpracování požadavků.

Dne 12. září 2014 informoval Stéphane Chazelas správce Bash Cheta Rameyho o objevu původní chyby, kterou nazval „Bashdoor“. Ve spolupráci s bezpečnostními experty pan Chazelas vyvinul opravu (opravu) problému, kterému byl v té době přidělen identifikátor zranitelnosti CVE - 2014-6271 . Existence chyby byla veřejnosti oznámena 24. září 2014, kdy byly aktualizace Bash s opravou připraveny k distribuci.

Zjištěná chyba, kterou Chazelas objevil, způsobila, že Bash neúmyslně provedl příkazy, když jsou příkazy zřetězeny na konec definic funkcí uložených v hodnotách proměnných prostředí . Během několika dní od jeho zveřejnění byla objevena celá řada souvisejících chyb zabezpečení ( CVE - 2014-6277 , CVE- 2014-6278 , CVE- 2014-7169 , CVE- 2014-7186 a CVE- 2014-7187 ). Ramey je oslovil řadou dalších oprav.

Útočníci využili Shellshock během několika hodin od prvního odhalení vytvořením botnetů napadených počítačů k provádění distribuovaných útoků typu Denial-of-Service a skenování zranitelnosti . Bezpečnostní společnosti zaznamenaly miliony útoků a sond souvisejících s chybou ve dnech následujících po zveřejnění.

Kvůli potenciálu kompromitovat miliony neopravených systémů byl Shellshock ve své závažnosti srovnáván s chybou Heartbleed .

Pozadí

Chyba Shellshock ovlivňuje Bash , program, který různé systémy založené na Unixu používají k provádění příkazových řádků a příkazových skriptů. Často se instaluje jako výchozí rozhraní příkazového řádku systému . Analýza historie zdrojového kódu Bash ukazuje, že chyba byla představena 5. srpna 1989 a vydána ve verzi Bash 1.03 1. září 1989.

Shellshock je chyba zabezpečení zvyšující oprávnění, která uživatelům systému umožňuje provádět příkazy, které by jim neměly být k dispozici. To se děje pomocí funkce „export funkce“ Bash, kdy lze skripty příkazů vytvořené v jedné spuštěné instanci Bash sdílet s podřízenými instancemi. Tato funkce je implementována kódováním skriptů v tabulce sdílené mezi instancemi, známé jako seznam proměnných prostředí . Každá nová instance Bash prohledá tuto tabulku kódovaných skriptů, sestaví každou z nich do příkazu, který definuje tento skript v nové instanci, a provede tento příkaz. Nová instance předpokládá, že skripty nalezené v seznamu pocházejí z jiné instance, ale nemůže to ověřit, ani to, že vytvořený příkaz je správně vytvořenou definicí skriptu. Útočník proto může v systému spustit libovolné příkazy nebo zneužít další chyby, které mohou existovat v interpretu příkazů Bash, pokud má útočník způsob, jak manipulovat se seznamem proměnných prostředí a poté způsobit spuštění Bash.

Přítomnost chyby byla veřejnosti oznámena 24. září 2014, kdy byly aktualizace Bash s touto opravou připraveny k distribuci, i když nějakou dobu trvalo, než byly počítače aktualizovány, aby se potenciální bezpečnostní problém uzavřel.

Zprávy o útocích

Do hodiny od oznámení zranitelnosti Bash se objevily zprávy, že chyba byla kompromitována. Do 25. září 2014 útočníci využívali botnety založené na počítačích ohrožených zneužitím na základě chyby k útokům distribuovaného odmítnutí služby (DDoS) a skenování zranitelnosti . Společnost Kaspersky Labs uvedla, že stroje napadené útokem, přezdívané „Thanks-Rob“, prováděly DDoS útoky proti třem cílům, které však neidentifikovaly. Dne 26. září 2014 byl hlášen botnet související s Shellshockem nazvaný „wopbot“, který byl používán k útoku DDoS proti Akamai Technologies a ke skenování amerického ministerstva obrany .

Dne 26. září zaznamenala bezpečnostní firma Incapsula za posledních 24 hodin 17 400 útoků na více než 1 800 webových domén pocházejících ze 400 jedinečných adres IP; 55% útoků pocházelo z Číny a Spojených států. Do 30. září společnost zabývající se výkonem webových stránek CloudFlare uvedla, že sleduje přibližně 1,5 milionu útoků a sond denně souvisejících s chybou.

Dne 6. října bylo obecně oznámeno, že Yahoo! servery byly napadeny při útoku souvisejícím s problémem Shellshock. Následujícího dne bylo popřeno, že by to byl právě Shellshock, který konkrétně povolil tyto útoky.

Specifické vektory využití

Webový server založený na CGI
Když webový server používá ke zpracování požadavku na dokument rozhraní Common Gateway (CGI), zkopíruje určité informace z požadavku do seznamu proměnných prostředí a poté deleguje požadavek na program obslužné rutiny. Pokud je obslužnou rutinou Bash skript, nebo pokud jeden provádí například pomocí volání system (3) , obdrží Bash proměnné prostředí předané serverem a zpracuje je, jak je popsáno výše. To poskytuje útočníkovi prostředek ke spuštění zranitelnosti Shellshock pomocí speciálně vytvořeného požadavku na dokument.
Dokumentace k zabezpečení široce používaného webového serveru Apache uvádí: „Skripty CGI mohou ... být extrémně nebezpečné, pokud nejsou pečlivě zkontrolovány,“ a místo toho se obvykle používají jiné způsoby zpracování požadavků webového serveru. Existuje řada online služeb, které se pokoušejí otestovat zranitelnost vůči webovým serverům vystaveným internetu.
OpenSSH server
OpenSSH má funkci „ForceCommand“, kde je při přihlášení uživatele spuštěn pevný příkaz, místo aby byl spuštěn neomezený příkazový shell. Opravený příkaz se provede, i když uživatel určil, že má být spuštěn jiný příkaz; v takovém případě je původní příkaz vložen do proměnné prostředí "SSH_ORIGINAL_COMMAND". Když je vynucený příkaz spuštěn v prostředí Bash (pokud je prostředí uživatele nastaveno na Bash), prostředí Bash při spuštění analyzuje proměnnou prostředí SSH_ORIGINAL_COMMAND a spustí v ní vložené příkazy. Uživatel využil svůj omezený přístup do shellu k získání neomezeného přístupu do shellu pomocí chyby Shellshock.
Klienti DHCP
Někteří klienti DHCP mohou také předávat příkazy Bash; při připojení k otevřené síti Wi-Fi může dojít k útoku na zranitelný systém. Klient DHCP obvykle požaduje a získává adresu IP ze serveru DHCP, ale lze mu také poskytnout řadu dalších možností. Škodlivý server DHCP může v jedné z těchto možností poskytnout řetězec vytvořený ke spuštění kódu na zranitelné pracovní stanici nebo notebooku.
Server Qmail
Když používáte Bash ke zpracování e-mailových zpráv (např. Prostřednictvím .forward nebo qmail-alias piping), předává poštovní server qmail externí vstup způsobem, který může zneužít zranitelnou verzi Bash.
Omezené prostředí IBM HMC
Chyba může být zneužita k získání přístupu k Bash z omezeného skořápky od IBM Hardware Management Console , malý Linux varianta pro systémové administrátory. Společnost IBM vydala opravu, která to vyřeší.

Hlášené chyby zabezpečení

Přehled

Správce Bash byl varován před prvním objevením chyby 12. září 2014; brzy následovala oprava. Několik společností a distributorů bylo informováno před zveřejněním záležitosti dne 24. září 2014 s identifikátorem CVE CVE - 2014-6271 . Po vydání opravy však došlo k následným zprávám o různých, přesto souvisejících zranitelnostech.

Dne 26. září 2014 dva přispěvatelé s otevřeným zdrojovým kódem, David A. Wheeler a Norihiro Tanaka, poznamenali, že došlo k dalším problémům, a to i po opravě systémů pomocí nejnovějších dostupných oprav. V e-mailu zaslaném na e-mailové seznamy oss-sec a bash-bug Wheeler napsal: „Tato oprava pouze pokračuje v práci„ rána-a-krtek “při opravě chyb při analýze, která začala první opravou. Bashův analyzátor je jistý [ ] mají mnoho mnoha mnoha dalších zranitelností ".

Dne 27. září 2014 oznámil Michał Zalewski ze společnosti Google Inc. objev dalších zranitelností Bash, jeden založený na skutečnosti, že Bash je obvykle kompilován bez randomizace rozložení adresního prostoru . 1. října zveřejnil Zalewski podrobnosti o posledních chybách a potvrdil, že oprava od Floriana Weimera z Red Hat zveřejněná 25. září jim skutečně brání. Udělal to pomocí techniky fuzzování pomocí softwarového nástroje známého jako americký fuzzy lop .

Úvodní zpráva (CVE-2014-6271)

Tato původní forma chyby zabezpečení ( CVE - 2014-6271 ) zahrnuje speciálně vytvořenou proměnnou prostředí obsahující definici exportované funkce, následovanou libovolnými příkazy. Bash při importu funkce nesprávně provede koncové příkazy. Zranitelnost lze otestovat pomocí následujícího příkazu:

env x='() { :;}; echo vulnerable' bash -c "echo this is a test"

V systémech postižených touto chybou zabezpečení budou výše uvedené příkazy zobrazovat slovo „zranitelný“ v důsledku provedení příkazu Bash příkazu „echo vulnerable“ , který byl vložen do speciálně vytvořené proměnné prostředí s názvem „x“ .

CVE-2014-6277

Objeven Michał Zalewski , zranitelnosti CVE - 2014-6277 , která se týká rozebrat definice funkce v proměnných prostředí podle Bash, může způsobit segfault .

CVE-2014-6278

Tuto chybu ( CVE - 2014-6278 ), kterou objevil také Michał Zalewski , souvisí s analýzou definic funkcí v proměnných prostředí podle Bash.

CVE-2014-7169

Ve stejný den, kdy byla zveřejněna původní chyba zabezpečení, objevil Tavis Ormandy tuto související chybu ( CVE - 2014-7169 ), kterou ukazuje následující kód:

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

Ve zranitelném systému by to neúmyslně provedlo příkaz „date“.

Zde je příklad systému, který má opravu pro CVE-2014-6271, ale ne CVE-2014-7169:

$ X='() { (a)=>\' bash -c "echo date"
bash: X: line 1: syntax error near unexpected token `='
bash: X: line 1: `'
bash: error importing function definition for `X'
$ cat echo
Fri Sep 26 01:37:16 UTC 2014

Systém zobrazuje chyby syntaxe a upozorňuje uživatele, že bylo zabráněno CVE-2014-6271, ale do pracovního adresáře stále zapíše soubor s názvem „echo“ obsahující výsledek volání „date“.

Systém oprava pro CVE-2014-6271 a CVE-2014-7169 bude prostě echo slovo „datum“ a souboru „echo“, bude to být vytvořeny, jak je uvedeno níže:

$ X='() { (a)=>\' bash -c "echo date"
date
$ cat echo
cat: echo: No such file or directory

CVE-2014-7186

Florian Weimer a Todd Sabin našli tuto chybu ( CVE - 2014-7186 ), která souvisí s chybou v přístupu k paměti mimo rozsah v kódu analyzátoru Bash.

Příklad chyby zabezpečení, která využívá použití několika prohlášení „<< EOF“ (vnořených „zde dokumenty“ ):

bash -c 'true <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF' ||
echo "CVE-2014-7186 vulnerable, redir_stack"

Zranitelný systém bude odrážet text „CVE-2014-7186 vulnerable, redir_stack“.

CVE-2014-7187

Nalezl také Florian Weimer, CVE - 2014-7187 je chyba typu „ off-by-one“ v kódu analyzátoru Bash, která umožňuje přístup do paměti mimo hranice.

Příklad chyby zabezpečení, která využívá použití několika „hotových“ prohlášení:

(for x in {1..200} ; do echo "for x$x in ; do :"; done; for x in {1..200} ; do echo done ; done) | bash ||
echo "CVE-2014-7187 vulnerable, word_lineno"

Zranitelný systém bude odrážet text „CVE-2014-7187 vulnerable, word_lineno“. Tento test vyžaduje prostředí, které podporuje rozšíření složených závorek .

Záplaty

Do 24. září 2014 poskytoval správce Bash Chet Ramey verzi opravy bash43-025 Bash 4.3 určenou pro CVE-2014-6271, kterou již správci distribuce zabalili. Dne 24. září následoval program bash43-026 s adresou CVE-2014-7169. Poté byl objeven kód CVE-2014-7186. Florian Weimer z Red Hat zveřejnil 25. září nějaký opravný kód k tomuto „neoficiálně“, který Ramey začlenil do Bash jako bash43-027. - Tyto opravy poskytovaly pouze kód , užitečné pouze pro ty, kteří vědí, jak sestavit („ znovu sestavit “) a nový binární spustitelný soubor Bash ze souboru opravy a zbývajících souborů zdrojového kódu.

Další den Red Hat oficiálně představil podle aktualizací pro Red Hat Enterprise Linux , po dalším dni pro Fedoru 21 . Společnost Canonical Ltd. představila aktualizace svých verzí dlouhodobé podpory Ubuntu v sobotu 27. září; v neděli byly aktualizace pro SUSE Linux Enterprise . Následující pondělí a úterý na konci měsíce se objevily aktualizace systému Mac OS X.

Dne 1. října 2014 Michał Zalewski ze společnosti Google Inc. konečně uvedl, že Weimerův kód a bash43-027 opravily nejen první tři chyby, ale dokonce i zbývající tři, které byly zveřejněny po bash43-027, včetně jeho vlastních dvou objevů. To znamená, že po dřívějších aktualizacích distribuce nebyly vyžadovány žádné další aktualizace k pokrytí všech šesti vydání.

Všechny z nich byly rovněž kryty pro konzolu pro správu hardwaru IBM .

Reference

externí odkazy