Bashdoor

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 2. maaliskuuta 2020 tarkistetusta versiosta . tarkastukset vaativat 6 muokkausta .

Bashdoor (myös englanniksi  Shellshock [1] ) on sarja ohjelmiston haavoittuvuuksia , jotka löydettiin GNU Bash -ohjelmasta syyskuussa 2014 ja julkaistiin julkisesti 24. syyskuuta [2] . Monet Internet-palvelut , mukaan lukien verkkopalvelimet , voivat käyttää Bashia tiettyjen pyyntöjen käsittelyyn, kuten CGI - komentosarjoja suoritettaessa. Haavoittuvuuden ansiosta hyökkääjä voi suorittaa mielivaltaisia ​​komentoja päästäkseen luvattomasti tietokonejärjestelmiin [3] .

Haavoittuvuudet johtuvat siitä, että Bash, vastoin ilmoitettuja ominaisuuksia, suorittaa komentoja vastaanottaessaan joitain ympäristömuuttujien epästandardiarvoja ( ympäristö ) [1] [4] . Muutama päivä alkuperäisen haavoittuvuuden julkaisemisen jälkeen löydettiin useita samanlaisia ​​bugeja, jotka estivät korjatun version nopean julkaisemisen.

Alkuperäisen virheen havaitsi Stéphane Chazelas [1] ( ranskalainen  Stéphane Chazelas ) 12. syyskuuta 2014 [1] , joka ehdotti kutsumaan sitä nimellä "bashdoor" (konsonantti takaoven kanssa ) [1] . Haavoittuvuus sai numeron CVE-2014-6271 MITER- tietokantaan ja pysyi julkaisemattomana ( suljettiin kauppasaartoon ) 24. syyskuuta klo 14:00 UTC asti, jotta ohjelman tekijät, jakelujen tekijät ja muut kiinnostuneet organisaatiot voisivat ottaa tarvittavat toimenpiteet [5] .

Bash-lähdekoodin analyysi osoittaa, että haavoittuvuus otettiin käyttöön koodissa version 1.13 tienoilla vuonna 1992 tai sitä aikaisemmin [6] , ja se on jäänyt suurelle yleisölle havaitsematta ja ilmoittamatta [4] jälkeen . Bashin luontitiimin on vaikea määrittää tarkkaa ajankohtaa, jolloin bugi otettiin käyttöön, koska muutosloki ei ole tarpeeksi yksityiskohtainen ( changelog ) [1] .

25.9.2014 haavoittuvuuden perusteella luotiin jo bottiverkkoja DoS- ja DDoS -hyökkäysten suorittamiseen sekä haavoittuvuuksien tarkistamiseen [7] [8] . Arvioiden mukaan miljoonat järjestelmät ovat haavoittuvia. Virhe sai vakavuusasteikon maksimiarvosanan, ja sitä verrataan arvoltaan Heartbleediin  - OpenSSL -virheeseen (huhtikuu 2014) [9] [10] .

Kuvaus

Shellshock-haavoittuvuus (bashdoor) viittaa bash -ohjelmaan ( GNU-projektin kehittämä ), jota käytetään monissa Unix -tyyppisissä käyttöjärjestelmissä ja jakeluissa komentorivitulkinna ja komentotulkkikomentosarjojen suorittamiseen. Asetetaan usein oletusjärjestelmän tulkiksi.

Unix-tyyppisissä ja muissa bash-tuetuissa käyttöjärjestelmissä jokaisessa ohjelmassa on luettelo nimi-arvo- pareista , joita kutsutaan ympäristömuuttujiksi .  Kun ohjelma käynnistää toisen, myös alustava ympäristömuuttujien luettelo välitetään [11] . Ympäristömuuttujien lisäksi bash ylläpitää myös sisäistä listaa funktioista, nimetyt skriptit, joita voidaan kutsua suoritettavasta bash-skriptistä [12] . Kun uusia bash-esiintymiä käynnistetään olemassa olevasta bashista, on mahdollista siirtää ( vienti ) olemassa olevien ympäristömuuttujien ja funktiomääritelmien arvot synnytetylle prosessille [13] . Funktiomääritykset viedään koodaamalla ne uusiksi erityismuotoisiksi ympäristömuuttujiksi, jotka alkavat tyhjillä hakasulkeilla "()" ja sen jälkeen funktion määritelmä merkkijonona. Uudet bash-esiintymät skannaavat kaikki ympäristömuuttujat käynnistyksen yhteydessä, tunnistavat tietyn muodon ja muuntavat sen takaisin sisäiseksi funktiomäärittelyksi [14] . Tämä muunnos tehdään luomalla ympäristömuuttujan arvon perusteella bash-koodifragmentti ja suorittamalla se, eli "lennossa". Vaikuttavat bash-versiot eivät tarkista, että suoritettava tiedosto sisältää vain funktion määritelmän [14] . Siten, jos hyökkääjä pystyy syöttämään mielivaltaisen ympäristömuuttujan bash-käynnistykseen, on mahdollista suorittaa mielivaltaisia ​​komentoja.

Syyskuun 27. päivänä julkaistiin laatukorjaus, joka lisää erityiset etuliitteet kaikkiin vietyihin ja tuotuihin funktioihin, kun ne muunnetaan ympäristömuuttujiksi ja päinvastoin [15] .

Myöhemmät bash-käytön jaksot

Samana päivänä, kun tiedot alkuperäisestä haavoittuvuudesta ja sen korjaavista korjauksista julkaistiin, Tavis Ormandy löysi uuden asiaan liittyvän virheen CVE-2014-7169 [3] . Päivitetyt korjaukset tulivat saataville 26. syyskuuta [3] [16] [17] [18] [19] [20] .

Korjattaessa alkuperäistä Shellshock-virhettä Red Hat -tutkija Florian Weimer löysi kaksi muuta bugia: CVE-2014-7186 ja CVE-2014-7187 [21] [22] .

Syyskuun 26. päivänä 2014 kaksi avoimen lähdekoodin kehittäjää, David A. Wheeler ja Norihiro Tanaka huomasivat, että tuolloin saatavilla olevat korjaustiedostot eivät vieläkään korjanneet muita ongelmia. Wheeler kirjoitti sähköpostissaan "oss-sec"- ja "bash bug" -postituslistoille:

Tämä korjaustiedosto vain jatkaa "tappaa myyrä" ( whac-a-mole ) [23] työtä erilaisten jäsennysvirheiden korjaamiseksi, joka aloitettiin ensimmäisestä korjaustiedostosta. Bash-jäsennin sisältää tietysti monia monia monia muita haavoittuvuuksia.

Alkuperäinen teksti  (englanniksi)[ näytäpiilottaa] Tämä korjaustiedosto vain jatkaa ensimmäisestä korjaustiedostosta alkanutta jäsennysvirheiden korjaamista. Bashin jäsentimessä on varmasti monia monia muita haavoittuvuuksia — [24]

27. syyskuuta 2014 Michal Zalewski ilmoitti löytäneensä useita muita bugeja bashista [25] [26] , joista yksi hyödyntää sitä tosiasiaa, että bash käännetään usein käyttämättä ASLR-suojaustekniikkaa ( Address Space Layout Randomization ) [27] . ] . Zalewski vaati myös kiireellistä korjausta Florian Weimeriltä [25] [26] [27] .

Luettelo haavoittuvuuksista

CVE-2014-6271

Alkuperäinen bashdoor: Erityinen ympäristömuuttuja koostuu viedyn funktion määritelmästä, jota seuraa mielivaltaiset komennot. Bashin haavoittuvat versiot suorittavat nämä mielivaltaiset komennot käynnistyksen aikana [28] . Esimerkki virheestä:

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

Haavoittuvissa järjestelmissä tämä testi tulostaa lauseen "Haavoittuva" suorittamalla komennon ympäristömuuttujasta x [29] .

CVE-2014-6277

Syyskuun 29. päivään mennessä haavoittuvuuden yksityiskohtia ei julkistettu [25] [27] [30] .

CVE-2014-6278

Syyskuun 29. päivään mennessä haavoittuvuuden yksityiskohtia ei julkistettu [25] [31] .

CVE-2014-7169

Löysi Tavis Ormandy työskennellessään CVE-2014-6271 :n parissa :

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

Testi saa aikaan "echo":n tiedostonimeksi tulosteen uudelleenohjaukselle ja "date":n suorittamisen. Virhe sai numeron CVE-2014-7169 [3] .

Esimerkki virheestä 7169 järjestelmässä, joka sai korjauksen virheeseen CVE-2014-6271, mutta ei virheeseen CVE-2014-7169 [32] $ X = '() { (a)=>\' bash -c "kaikupäivämäärä" bash: X: rivi 1 : syntaksivirhe lähellä odottamatonta merkkiä ` = ' bash: X: rivi 1: `' bash : virhe tuonnissa määritelmä sanalle ` X ' [ root@ ec2-user ] # cat echo pe Sep 26 01:37:16 UTC 2014

Sekä CVE-2014-6271 :n että CVE-2014-7169 :n korjaaminen rikkoo testin:

$ X = '() { (a)=>\' bash -c "kaikupäivämäärä" Päivämäärä $ kissan kaiku cat: echo: Ei tällaista tiedostoa tai hakemistoa

CVE-2014-7186

Virhe johtuu samanlaisista ongelmista Bash-koodissa [33] , mutta siihen vaikuttaa toistuva "<<EOF"

Testata bash -c 'tosi <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF' || echo "Vulnerable by CVE-2014-7186, redir_stack" Haavoittuva järjestelmä näyttää tekstin "Vulnerable by CVE-2014-7186, redir_stack".

CVE-2014-7187

Virhe johtuu samanlaisista ongelmista Bash-koodissa [33] , mutta siihen vaikuttavat useat "tehty"

Testata ( for x in { 1 ..200 } ; do echo "for x $x in ; do :" ; done ; for x in { 1 ..200 } ; do echo done ; done ) | bash || echo "Vulnerable by CVE-2014-7187, word_lineno" Haavoittuva järjestelmä näyttää tekstin "Vulnerable by CVE-2014-7187, word_lineno".

Hyökkäysvektorit

Tunnin sisällä Bash-haavoittuvuuden julkistamisesta ilmoitettiin tietokonejärjestelmien hakkerointia sen avulla. Syyskuun 25. päivänä vahvistettiin useita "villiin" hyökkäyksiä, jotka vaihtelivat yksinkertaisista DoS -hyökkäyksistä komento- ja ohjauspalvelimien käyttöönottoon haitallisen "BASHLITE"-järjestelmän kautta [34] [35] . Kaspersky Labs raportoi, että jotkut tartunnan saaneista tietokoneista aloittivat DDoS-hyökkäyksen kolmea kohdetta vastaan ​​[8] . Syyskuun 26. päivänä löydettiin "wopbot"-bottiverkko, joka koostuu bashdoor-tartunnan saaneista palvelimista ja jota käytettiin DDoS:ssa Akamai Technologies CDN:iä vastaan ​​ja Yhdysvaltain puolustusministeriön verkkojen skannaukseen [7] .

On olemassa useita mahdollisia tapoja, joilla hyökkääjä voi siirtää mielivaltaisia ​​ympäristömuuttujia bashille, joka toimii hyökkäyksen kohteena olevassa palvelimessa:

CGI-hyökkäys verkkopalvelimiin

Web-palvelimet, jotka suorittavat Common Gateway Interface (CGI) -komentosarjoja, välittävät käyttäjäpyynnön tiedot ympäristömuuttujien, kuten HTTP_USER_AGENT, kautta. Jos pyynnön käsittelee Bash-ohjelma tai jokin muu ohjelma, joka kutsuu bashia sisäisesti, hyökkääjä voi korvata http:n kautta lähetetyn User-Agent- merkkijonon Shellshock-hyökkäyslaukaisulla lisäämällä omat komentonsa [36] . Esimerkiksi käsky "ping" hyökkääjän osoitteella voidaan antaa sellaisena komennona. Saapuvien ping-pyyntöjen perusteella hyökkääjä tietää, onko hyökkäys toiminut.

Vaikka CGI on vanha rajapinta muihin tietoturvariskeihin [37] , se on edelleen käytössä. Esimerkiksi yksi tavallisista cPanel - skripteistä on haavoittuvainen [38] , haavoittuvaa cPanelia voidaan käyttää arviolta 2-3 prosentilla verkkosivustoista [39] .

SSH-palvelinhyökkäys

OpenSSH SSH -palvelimen avulla voit rajoittaa käyttäjän kiinteään joukkoon käytettävissä olevia komentoja ("ForceCommand" -vaihtoehto). Kiinteä komento suoritetaan, vaikka käyttäjä olisi pyytänyt toisen komennon suorittamista. Pyydetty komento on tässä tapauksessa tallennettu ympäristömuuttujaan "SSH_ORIGINAL_COMMAND". Jos kiinteä komento suoritetaan Bash-kuoressa (jos käyttäjän tulkki on asetettu Bash-tilaan), GNU Bash havaitsee ympäristöön upotetut SSH_ORIGINAL_COMMAND-arvot käynnistyksen yhteydessä ja suorittaa Bashdoor-haavoittuvuuden sattuessa sinne upotetut komennot. Näin ollen hyökkääjä, jolla on pääsy vain rajoitettuun komentotulkkiin, saa rajoittamattoman pääsyn [3] .

DHCP-asiakashyökkäys

DHCP -asiakas pyytää yleensä IP-osoitetta DHCP-palvelimelta. Palvelin voi kuitenkin lähettää useita lisäasetuksia, jotka voivat olla kirjoitettuja ympäristömuuttujiin ja aiheuttaa Shellshockin hyödyntämisen paikallisverkkoon kytketyssä tietokoneessa tai kannettavassa tietokoneessa [40] [41] .

Etuoikeuksien eskalointi setuid-ohjelmien kautta

Ohjelma, jossa on setuid - bitti asetettu , voi kutsua bashia suoraan tai epäsuorasti käyttämällä järjestelmäkutsuja system(3) , popen ja muita, ympäristömuuttujia nollaamatta. Shellshock-hyökkäys tällaisissa tapauksissa antaisi paikalliselle käyttäjälle mahdollisuuden nostaa omia oikeuksiaan setuid-tyyppisen ohjelman omistajalle, usein pääkäyttäjään (superkäyttäjään) asti.

Offline-järjestelmien haavoittuvuus

Virhe saattaa päästä järjestelmiin, jotka eivät ole yhteydessä Internetiin offline-käsittelyn aikana bashilla [42] .

Muistiinpanot

  1. 1 2 3 4 5 Perlroth, Nicole . Tietoturvaasiantuntijat odottavat "Shellshock"-ohjelmistovirheen Bashissa olevan merkittävä , New York Times  (25. syyskuuta 2014). Arkistoitu alkuperäisestä 5. huhtikuuta 2019. Haettu 25. syyskuuta 2014.
  2. Henkilökunta. Mihin "Shellshock"-virhe vaikuttaa? . Turvallinen Mac (25. syyskuuta 2014). Haettu 27. syyskuuta 2014. Arkistoitu alkuperäisestä 29. syyskuuta 2014.
  3. 1 2 3 4 5 Haavoittuvuuksien lait (linkki ei ole käytettävissä) . Haettu 26. syyskuuta 2014. Arkistoitu alkuperäisestä 6. lokakuuta 2014. 
  4. 1 2 Leyden, John Patch Bash NYT: "Shell Shock" -vika räjäyttää OS X:n, Linux-järjestelmät täysin auki . Rekisteri (24.9.2014). Haettu 25. syyskuuta 2014. Arkistoitu alkuperäisestä 16. lokakuuta 2014.
  5. oss-security - Re: CVE-2014-6271: koodin etäsuoritus bashin kautta . Haettu 26. syyskuuta 2014. Arkistoitu alkuperäisestä 28. syyskuuta 2014.
  6. bash - Milloin shellshock-virhe (CVE-2014-6271/7169) otettiin käyttöön, ja mikä on korjaustiedosto, joka korjaa sen kokonaan? Arkistoitu 14. lokakuuta 2014 Wayback Machinessa  - Unix & Linux Stack Exchange
  7. 12 Saarinen , Juha . Ensimmäinen Shellshock-botnet-hyökkäys Akamai, Yhdysvaltain DoD-verkkoihin , iTnewsiin  (26. syyskuuta 2014). Arkistoitu alkuperäisestä 29. syyskuuta 2014. Haettu 26. syyskuuta 2014.
  8. 1 2 Greenberg, Andy Hakkerit käyttävät jo Shellshock-virhettä botnet-hyökkäysten käynnistämiseen . Langallinen (25. syyskuuta 2014). Käyttöpäivä: 28. syyskuuta 2014. Arkistoitu alkuperäisestä 1. tammikuuta 2017.
  9. Vaarallisin haavoittuvuus löydettiin sadoista miljoonista tietokoneista , WG (25.9.2014). Arkistoitu alkuperäisestä 27. syyskuuta 2014. Haettu 29.9.2014.
  10. Bugi Bash-kuoressa vaaransi Linux- ja OS X -tietokoneet , RBC (25. syyskuuta 2014). Arkistoitu alkuperäisestä 28. syyskuuta 2014. Haettu 29.9.2014.
  11. Open Group Base Specification: exec . Haettu 29. syyskuuta 2014. Arkistoitu alkuperäisestä 9. lokakuuta 2014.
  12. Bash Reference Manual: Shell-toiminnot . Haettu 29. syyskuuta 2014. Arkistoitu alkuperäisestä 28. syyskuuta 2014.
  13. Bash Reference Manual: Bourne Shell Builtins . Haettu 29. syyskuuta 2014. Arkistoitu alkuperäisestä 28. syyskuuta 2014.
  14. 1 2 Bash 4.3 lähdekoodi, tiedosto variables.c, rivit 315-388 . Haettu 29. syyskuuta 2014. Arkistoitu alkuperäisestä 21. huhtikuuta 2017.
  15. Steven J. Vaughan-Nichols . Shellshock: Parempia "bash"-korjauksia nyt saatavilla  (englanniksi) , ZDNet (27. syyskuuta 2014). Arkistoitu alkuperäisestä 29. syyskuuta 2014. Haettu 29.9.2014.
  16. Ubuntu . Haettu 26. syyskuuta 2014. Arkistoitu alkuperäisestä 28. syyskuuta 2014.
  17. Red Hat (downlink) . Haettu 26. syyskuuta 2014. Arkistoitu alkuperäisestä 26. syyskuuta 2014. 
  18. Red Hat 2 . Haettu 26. syyskuuta 2014. Arkistoitu alkuperäisestä 6. lokakuuta 2014.
  19. CentOS 5.10 . Haettu 26. syyskuuta 2014. Arkistoitu alkuperäisestä 28. syyskuuta 2014.
  20. CentOS 7 . Haettu 26. syyskuuta 2014. Arkistoitu alkuperäisestä 28. syyskuuta 2014.
  21. FAQShellshock (26. syyskuuta 2014). Haettu 26. syyskuuta 2014. Arkistoitu alkuperäisestä 29. syyskuuta 2014.
  22. FAQShellshock2 (26. syyskuuta 2014). Haettu 26. syyskuuta 2014. Arkistoitu alkuperäisestä 6. lokakuuta 2014.
  23. ' whack-a-mole ' on suosittu hedelmäpeli, kuvaannollisesti toistuva no-win-haaste
  24. Gallagher, Sean Vielä lisää haavoittuvuuksia bashissa? Shellshockista tulee myrsky . Arstechnica (26. syyskuuta 2014). Haettu 26. syyskuuta 2014. Arkistoitu alkuperäisestä 8. tammikuuta 2017.
  25. 1 2 3 4 Saarinen, Juha Muut puutteet tekevät Shellshock-patchista tehottoman . iTnews (29. syyskuuta 2014). Haettu 29. syyskuuta 2014. Arkistoitu alkuperäisestä 29. syyskuuta 2014.
  26. 1 2 lcamtuf. Bash-virhe: käytä Florianin korjaustiedostoa nyt (CVE-2014-6277 ja CVE-2014-6278) . lcamtufin blogi (27. syyskuuta 2014). Haettu: 29.9.2014.
  27. 1 2 3 Henkilökunta. Shellshock, Osa 3: Kolme muuta tietoturvaongelmaa Bashissa (saksaksi) . Heise Online (28. syyskuuta 2014). Haettu 28. syyskuuta 2014. Arkistoitu alkuperäisestä 29. syyskuuta 2014.
  28. NVD - Yksityiskohta . Haettu 29. syyskuuta 2014. Arkistoitu alkuperäisestä 25. syyskuuta 2014.
  29. Bashin erityisesti muotoiltu ympäristömuuttujien koodin lisäyshyökkäys | Red Hat Security . Haettu 29. syyskuuta 2014. Arkistoitu alkuperäisestä 25. syyskuuta 2014.
  30. Henkilökunta. National Cyber ​​​​Awareness System haavoittuvuuden yhteenveto CVE-2014-6277:lle . National Institute of Standards and Technology (27. syyskuuta 2014). Haettu 28. syyskuuta 2014. Arkistoitu alkuperäisestä 5. lokakuuta 2014.
  31. Henkilökunta. CVE-raportti - CVE-2014-6278 . Yleiset haavoittuvuudet ja altistukset (09.9.2014). Haettu 29. syyskuuta 2014. Arkistoitu alkuperäisestä 23. toukokuuta 2015.
  32. Oletko avoin shell-shockille? (linkki ei saatavilla) . isäntä. Haettu 26. syyskuuta 2014. Arkistoitu alkuperäisestä 9. lokakuuta 2014. 
  33. 1 2 Sidhpurwala, Huzaifa; Weimer, Florian Ei-upstream-laastarit bashille . oss-security postituslistat . Openwall. — "Sisäinen analyysi paljasti kaksi rajojen ulkopuolista taulukkokäyttöä bash-jäsentimissä. Tämän raportoi myös itsenäisesti ja yksityisesti Todd Sabin <[email protected]>." Haettu 27. syyskuuta 2014. Arkistoitu alkuperäisestä 28. syyskuuta 2014.
  34. Erilaisia. Shellshock-päivitykset: BASHLITE C&Cs Seen, Shellshock Exploit Attempts Brasiliassa . Trend Micro (26. syyskuuta 2014). Haettu 26. syyskuuta 2014. Arkistoitu alkuperäisestä 28. syyskuuta 2014.
  35. Erilaisia. Verkkohyökkäykset perustuvat Shellshock-virheeseen . BBC (26. syyskuuta 2014). Haettu 26. syyskuuta 2014. Arkistoitu alkuperäisestä 29. syyskuuta 2014.
  36. Erilaisia. CVE-2014-6271 : Etäkoodin suoritus bashin kautta . Reddit (24. syyskuuta 2014). Haettu: 26.9.2014.
  37. Apache HTTP Server 2.2 -dokumentaatio: suojausvinkkejä . Haettu 29. syyskuuta 2014. Arkistoitu alkuperäisestä 9. lokakuuta 2014.
  38. Bash-haavoittuvuus hyödyntää DDoS-bottien pudottamista | Uhkapylväs | Ensimmäinen pysäkki turvallisuusuutisille . Haettu 29. syyskuuta 2014. Arkistoitu alkuperäisestä 6. lokakuuta 2014.
  39. Verkkosivuston suojaus - Bash "Shell Shock" -haavoittuvuus vaikuttaa CPANEL-käyttäjiin | Sucuri blogi . Haettu 30. syyskuuta 2014. Arkistoitu alkuperäisestä 29. syyskuuta 2014.
  40. "Shellshock DHCP RCE Proof of Concept" Arkistoitu 25. syyskuuta 2014 Wayback Machinessa , Geoff Walton, TrustedSec
  41. Shellshock-hyödyntäminen DHCP-palvelimelle , Xakep.ru (26. syyskuuta 2014). Arkistoitu alkuperäisestä 29. syyskuuta 2014. Haettu 30. syyskuuta 2014.
  42. "Kokoelma erilaisia ​​hyökkäyksiä" Arkistoitu 27. syyskuuta 2014 Wayback Machinessa , Daniel Fox Franke, Akamai

Linkit