Bashdoor

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită pe 2 martie 2020; verificările necesită 6 modificări .

Bashdoor (de asemenea în engleză  Shellshock [1] ) este o serie de vulnerabilități software descoperite în programul GNU Bash în septembrie 2014 și lansate public pe 24 septembrie [2] . Multe servicii de internet , inclusiv servere web , pot folosi Bash pentru a procesa anumite solicitări, cum ar fi atunci când execută scripturi CGI . Vulnerabilitatea permite unui atacator să execute comenzi arbitrare, obținând acces neautorizat la sistemele informatice [3] .

Vulnerabilitățile constau în faptul că Bash, spre deosebire de capacitățile declarate, execută comenzi atunci când primește unele valori non-standard ale variabilelor de mediu ( mediu ) [1] [4] . La câteva zile după publicarea vulnerabilității originale, au fost descoperite câteva bug-uri similare, care au împiedicat lansarea rapidă a unei versiuni patchizate.

Eroarea inițială a fost descoperită de Stéphane Chazelas [1] ( franceză  Stéphane Chazelas ) pe 12 septembrie 2014 [1] , care a sugerat numirea acesteia „bashdoor” (consonantă cu backdoor ) [1] . Vulnerabilitatea a primit numărul CVE-2014-6271 în baza de date MITRE și a rămas nepublicată (a fost embargoată ) până la ora 14:00 UTC pe 24 septembrie, pentru ca autorii programului, creatorii de distribuții și alte organizații interesate să poată lua cele necesare. măsuri [5] .

O analiză a codului sursă Bash indică faptul că vulnerabilitatea a fost introdusă în cod în jurul versiunii 1.13 în 1992 sau mai devreme [6] și a rămas nedetectată publicului larg și nedeclarată începând cu [4] . Echipa de creație Bash are dificultăți în a determina ora exactă a erorii a fost introdusă din cauza jurnalului de modificări insuficient detaliat ( jurnalul de modificări ) [1] .

Pe 25 septembrie 2014, pe baza vulnerabilității, au fost deja create rețele bot pentru a efectua atacuri DoS și DDoS , precum și pentru a scana vulnerabilități [7] [8] . Se estimează că milioane de sisteme sunt vulnerabile. Bug-ul a primit ratingul maxim pe scara de severitate și este comparat ca valoare cu Heartbleed  - un bug în OpenSSL (aprilie 2014) [9] [10] .

Descriere

Vulnerabilitatea Shellshock (bashdoor) se referă la programul bash (dezvoltat de proiectul GNU ) utilizat în multe sisteme de operare și distribuții asemănătoare Unix ca interpret de linie de comandă și pentru executarea scripturilor shell. Deseori setat ca interpret de sistem implicit.

Pe Unix și pe alte sisteme de operare suportate de bash, fiecare program are o listă de perechi nume-valoare numite variabile de mediu .  Când un program pornește altul, este trecută și lista inițială a variabilelor de mediu [11] . Pe lângă variabilele de mediu, bash menține și o listă internă de funcții, numite scripturi care pot fi apelate dintr-un script bash executabil [12] . Când porniți noi instanțe bash dintr-un bash existent, este posibil să treceți ( exportați ) valorile variabilelor de mediu existente și definițiile funcției către procesul generat [13] . Definițiile funcțiilor sunt exportate prin codificarea acestora ca noi variabile de mediu cu un format special, începând cu parantezele goale „()” urmate de definiția funcției ca șir. Noile instanțe de bash scanează toate variabilele de mediu la pornire, detectând formatul dat și transformându-l înapoi într-o definiție de funcție internă [14] . Această transformare se realizează prin crearea unui fragment de cod bash bazat pe valoarea variabilei de mediu și executându-l, adică „on-the-fly”. Versiunile afectate de bash nu verifică dacă executabilul conține doar o definiție a funcției [14] . Astfel, dacă un atacator are capacitatea de a furniza o variabilă de mediu arbitrară la pornirea bash, atunci devine posibilă executarea comenzilor arbitrare.

Pe 27 septembrie a fost publicat un patch de calitate, care adaugă un prefix special tuturor funcțiilor exportate și importate atunci când sunt convertite în variabile de mediu și invers [15] .

Episoade ulterioare de exploatare bash

În aceeași zi în care au fost publicate informațiile despre vulnerabilitatea originală și patch-urile care o remediază, Tavis Ormandy a descoperit un nou bug asociat CVE-2014-7169 [3] . Remedieri actualizate au devenit disponibile pe 26 septembrie [3] [16] [17] [18] [19] [20] .

În timp ce lucra la remedierea bug-ului Shellshock original, cercetătorul Red Hat Florian Weimer a descoperit încă două erori: CVE-2014-7186 și CVE-2014-7187 [21] [22] .

Pe 26 septembrie 2014, doi dezvoltatori open-source, David A. Wheeler și Norihiro Tanaka, au observat că au existat probleme suplimentare care încă nu au fost rezolvate de patch-urile disponibile la acel moment. În e-mailul său către listele de corespondență „oss-sec” și „bash bug”, Wheeler a scris:

Acest patch continuă doar munca „kill the mole” ( whac-a-mole ) [23] pentru a remedia diverse erori de analiză începute cu primul patch. Desigur, analizatorul bash conține multe alte vulnerabilități.

Text original  (engleză)[ arataascunde] Acest patch continuă doar treaba „whack-a-mole” de a remedia erorile de analiză care au început cu primul patch. Parser-ul lui Bash este sigur că va avea multe alte vulnerabilități — [24]

Pe 27 septembrie 2014, Michal Zalewski a anunțat că a descoperit alte câteva erori în bash [25] [26] , dintre care una exploatează faptul că bash este adesea compilat fără a utiliza tehnica de protecție ASLR ( Address Space Layout Randomization ) [27]. ] . Zalewski a cerut și un plasture urgent de la Florian Weimer [25] [26] [27] .

Lista vulnerabilităților

CVE-2014-6271

Bashdoor original: un tip special de variabilă de mediu constă în definirea unei funcții exportate urmată de comenzi arbitrare. Versiunile vulnerabile ale lui Bash execută aceste comenzi arbitrare în timpul pornirii [28] . Exemplu de eroare:

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

Pe sistemele vulnerabile, acest test va tipări fraza „Vulnerabil” prin executarea comenzii din variabila de mediu x [29] .

CVE-2014-6277

Din 29 septembrie, detaliile vulnerabilității nu au fost dezvăluite public [25] [27] [30] .

CVE-2014-6278

Din 29 septembrie, detaliile vulnerabilității nu au fost dezvăluite public [25] [31] .

CVE-2014-7169

Descoperit de Tavis Ormandy în timp ce lucra la CVE-2014-6271 :

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

Testul face ca „ecou” să devină numele fișierului pentru redirecționarea ieșirii, iar „data” să fie executată. Bug-ului a primit numărul CVE-2014-7169 [3] .

Un exemplu de eroare 7169 pe un sistem care a primit o remediere pentru eroarea CVE-2014-6271, dar nu pentru eroarea CVE-2014-7169 [32] $ X = '() { (a)=>\' bash -c "dată ecou" bash: X: linia 1 : eroare de sintaxă aproape de simbolul neașteptat ` = ' bash: X: linia 1: `' bash: eroare la funcția de import definiție pentru ` X ' [ root@ ec2-user ] # cat echo Vin 26 Sep 01:37:16 UTC 2014

Remedierea atât CVE-2014-6271 cât și CVE-2014-7169 va întrerupe testul:

$ X = '() { (a)=>\' bash -c „data ecou” Data$ ecou pisică cat: echo: Nu există un astfel de fișier sau director

CVE-2014-7186

Eroarea este cauzată de probleme similare din codul Bash [33] , dar este afectată de „<<EOF” repetat

Test bash -c 'adevărat <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF' || echo „Vulnerabil de CVE-2014-7186, redir_stack” Sistemul afectat va afișa textul „Vulnerable by CVE-2014-7186, redir_stack”.

CVE-2014-7187

Bug-ul este cauzat de probleme similare în codul Bash [33] , totuși este afectat de multiple repetări ale lui „terminat”

Test ( pentru x în { 1 ..200 } ; face echo "pentru x $x în ; face :" ; terminat ; pentru x în { 1 ..200 } ; face eco done ; terminat ) | bash || ecou „Vulnerabil de CVE-2014-7187, word_lineno” Sistemul afectat va afișa textul „Vulnerable by CVE-2014-7187, word_lineno”.

Vectori de atac

La o oră de la publicarea vulnerabilității Bash, au existat rapoarte despre piratarea sistemelor informatice cu ajutorul acesteia. Pe 25 septembrie, au fost confirmate diverse atacuri „în sălbăticie”, de la simple atacuri DoS până la desfășurarea de servere de comandă și control prin intermediul sistemului rău intenționat „BASHLITE” [34] [35] . Kaspersky Labs a raportat că unele dintre computerele infectate au lansat un atac DDoS împotriva a trei ținte [8] . Pe 26 septembrie, a fost descoperită o rețea botnet „wopbot”, formată din servere infectate prin bashdoor și folosită în DDoS împotriva CDN-urilor Akamai Technologies și pentru a scana rețelele Departamentului de Apărare al SUA [7] .

Există mai multe modalități potențiale pe care un atacator le poate folosi pentru a transmite variabile de mediu arbitrare către bash care rulează pe serverul atacat:

Atacul CGI asupra serverelor web

Serverele web care execută scripturi CGI ( Common Gateway Interface ) trec detaliile unei cereri de utilizator prin variabile de mediu, cum ar fi HTTP_USER_AGENT. Dacă cererea este procesată de programul Bash, sau de un alt program care apelează bash intern, atunci atacatorul poate înlocui șirul User-Agent transmis prin http cu un declanșator de atac Shellshock adăugând propriile comenzi [36] . De exemplu, instrucțiunea „ping” cu adresa atacatorului poate fi dată ca atare comandă. Din solicitările ping primite, atacatorul va ști dacă atacul a funcționat.

Deși CGI este o interfață moștenită cu alte riscuri de securitate [37] , este încă în uz. De exemplu, unul dintre scripturile standard cPanel este vulnerabil [38] , se estimează că cPanelul vulnerabil poate fi folosit pe 2-3% din site-uri [39] .

Atacul pe server SSH

Serverul OpenSSH SSH vă permite să restricționați utilizatorul la un set fix de comenzi disponibile (opțiunea „ForceCommand”). O comandă fixă ​​este executată chiar dacă utilizatorul a cerut să fie executată o altă comandă. Comanda solicitată în acest caz este stocată în variabila de mediu „SSH_ORIGINAL_COMMAND”. Dacă o comandă fixă ​​este executată într-un shell Bash (dacă interpretul utilizatorului este setat la Bash), GNU Bash va detecta valorile SSH_ORIGINAL_COMMAND încorporate în mediu la pornire și, în cazul unei vulnerabilități Bashdoor, va executa comenzile încorporate acolo. Astfel, un atacator cu acces doar la un shell restricționat obține acces nerestricționat [3] .

Atacul client DHCP

Un client DHCP solicită de obicei o adresă IP de la un server DHCP. Cu toate acestea, serverul poate trimite mai multe opțiuni suplimentare, care pot fi scrise în variabilele de mediu și pot determina exploatarea Shellshock pe un computer sau laptop conectat la rețeaua locală [40] [41] .

Escalarea privilegiilor prin programe setuid

Un program cu setul de biți setuid poate apela bash direct sau indirect folosind apelurile de sistem system(3) , popen și altele, fără a reseta variabilele de mediu. Un atac Shellshock în astfel de cazuri ar permite utilizatorului local să-și ridice propriile privilegii la proprietarul programului de tip setuid, adesea până la root (superutilizator).

Vulnerabilitatea sistemelor offline

Eroarea ar putea ajunge la sistemele care nu sunt conectate la Internet în timpul procesării offline cu bash [42] .

Note

  1. 1 2 3 4 5 Perlroth, Nicole . Experții în securitate se așteaptă ca eroarea software „Shellshock” din Bash să fie semnificativă , New York Times  (25 septembrie 2014). Arhivat din original pe 5 aprilie 2019. Preluat la 25 septembrie 2014.
  2. Personal. Ce afectează bug-ul „Shellshock”? . The Safe Mac (25 septembrie 2014). Preluat la 27 septembrie 2014. Arhivat din original la 29 septembrie 2014.
  3. 1 2 3 4 5 The Laws of Vulnerabilities (link indisponibil) . Preluat la 26 septembrie 2014. Arhivat din original la 6 octombrie 2014. 
  4. 1 2 Leyden, John Patch Bash ACUM: bug-ul „Shell Shock” explodează OS X, sistemele Linux larg deschise . Registrul (24 septembrie 2014). Consultat la 25 septembrie 2014. Arhivat din original la 16 octombrie 2014.
  5. oss-security - Re: CVE-2014-6271: execuție de cod la distanță prin bash . Preluat la 26 septembrie 2014. Arhivat din original la 28 septembrie 2014.
  6. bash - Când a fost introdus eroarea shellshock (CVE-2014-6271/7169) și care este patch-ul care o remediază complet? Arhivat 14 octombrie 2014 la Wayback Machine  - Unix & Linux Stack Exchange
  7. 12 Saarinen , Juha . Primul botnet Shellshock atacă Akamai, rețelele DOD din SUA , iTnews  (26 septembrie 2014). Arhivat din original pe 29 septembrie 2014. Preluat la 26 septembrie 2014.
  8. 1 2 Greenberg, Andy Hackerii folosesc deja bug-ul Shellshock pentru a lansa atacuri botnet . Wired (25 septembrie 2014). Data accesului: 28 septembrie 2014. Arhivat din original la 1 ianuarie 2017.
  9. Cea mai periculoasă vulnerabilitate a fost găsită pe sute de milioane de computere , WG (25.09.2014). Arhivat din original pe 27 septembrie 2014. Preluat la 29 septembrie 2014.
  10. Un bug în shell-ul Bash a pus în pericol computerele Linux și OS X , RBC (25 septembrie 2014). Arhivat din original pe 28 septembrie 2014. Preluat la 29 septembrie 2014.
  11. Specificații de bază pentru grup deschis: exec . Consultat la 29 septembrie 2014. Arhivat din original la 9 octombrie 2014.
  12. Manual de referință Bash: funcții Shell . Consultat la 29 septembrie 2014. Arhivat din original pe 28 septembrie 2014.
  13. Bash Reference Manual: Bourne Shell Builtins . Consultat la 29 septembrie 2014. Arhivat din original pe 28 septembrie 2014.
  14. 1 2 Cod sursă Bash 4.3, fișierul variabile.c, rândurile 315-388 . Consultat la 29 septembrie 2014. Arhivat din original la 21 aprilie 2017.
  15. Steven J. Vaughan-Nichols . Shellshock: Patch-uri „bash” mai bune acum disponibile  (engleză) , ZDNet (27 septembrie 2014). Arhivat din original pe 29 septembrie 2014. Preluat la 29 septembrie 2014.
  16. Ubuntu . Preluat la 26 septembrie 2014. Arhivat din original la 28 septembrie 2014.
  17. Red Hat (link în jos) . Preluat la 26 septembrie 2014. Arhivat din original la 26 septembrie 2014. 
  18. Red Hat 2 . Preluat la 26 septembrie 2014. Arhivat din original la 6 octombrie 2014.
  19. CentOS 5.10 . Preluat la 26 septembrie 2014. Arhivat din original la 28 septembrie 2014.
  20. CentOS 7 . Preluat la 26 septembrie 2014. Arhivat din original la 28 septembrie 2014.
  21. FAQShellshock (26 septembrie 2014). Preluat la 26 septembrie 2014. Arhivat din original la 29 septembrie 2014.
  22. FAQShellshock2 (26 septembrie 2014). Preluat la 26 septembrie 2014. Arhivat din original la 6 octombrie 2014.
  23. „ whack-a-mole ” este o mașină de slot populară, la figurat o provocare repetitivă fără câștig
  24. Gallagher, Sean Mai multe vulnerabilități în bash? Shellshock devine whack-a-mole . Arstechnica (26 septembrie 2014). Consultat la 26 septembrie 2014. Arhivat din original la 8 ianuarie 2017.
  25. 1 2 3 4 Saarinen, Juha Alte defecte fac ca Patch-ul Shellshock să fie ineficient . iTnews (29 septembrie 2014). Consultat la 29 septembrie 2014. Arhivat din original pe 29 septembrie 2014.
  26. 1 2 lcamtuf. Bash bug: aplicați patch-ul lui Florian acum (CVE-2014-6277 și CVE-2014-6278) . blogul lui lcamtuf (27 septembrie 2014). Preluat: 29 septembrie 2014.
  27. 1 2 3 Personal. Shellshock, Partea 3: Încă trei probleme de securitate în Bash (în germană) . Heise Online (28 septembrie 2014). Consultat la 28 septembrie 2014. Arhivat din original pe 29 septembrie 2014.
  28. NVD - Detaliu . Consultat la 29 septembrie 2014. Arhivat din original la 25 septembrie 2014.
  29. Atacul de injecție de cod pentru variabilele de mediu special concepute de Bash | Red Hat Security . Consultat la 29 septembrie 2014. Arhivat din original la 25 septembrie 2014.
  30. Personal. Rezumatul vulnerabilității sistemului național de conștientizare cibernetică pentru CVE-2014-6277 . Institutul Național de Standarde și Tehnologie (27 septembrie 2014). Preluat la 28 septembrie 2014. Arhivat din original la 5 octombrie 2014.
  31. Personal. Raport CVE - CVE-2014-6278 . Vulnerabilități și expuneri comune (09 septembrie 2014). Preluat la 29 septembrie 2014. Arhivat din original la 23 mai 2015.
  32. Ești deschis să fii șocat de Shell? (link indisponibil) . gazdă. Preluat la 26 septembrie 2014. Arhivat din original la 9 octombrie 2014. 
  33. 1 2 Sidhpurwala, Huzaifa; Weimer, Florian Patch-uri non-upstream pentru bash . liste de corespondență oss-security . Openwall. — „Analiza internă a scos la iveală două accesări la matrice în afara limitelor în analizatorul bash. Acest lucru a fost, de asemenea, raportat independent și privat de Todd Sabin <tsabin@...online.net>." Consultat la 27 septembrie 2014. Arhivat din original pe 28 septembrie 2014.
  34. Diverse. Actualizări în caz de șoc: C&C-uri BSHLITE văzute, încercări de exploatare de Shellshock în Brazilia . Trend Micro (26 septembrie 2014). Preluat la 26 septembrie 2014. Arhivat din original la 28 septembrie 2014.
  35. Diverse. Atacurile web se bazează pe bug-ul Shellshock . BBC (26 septembrie 2014). Preluat la 26 septembrie 2014. Arhivat din original la 29 septembrie 2014.
  36. Diverse. CVE-2014-6271: Execuția codului de la distanță prin bash . Reddit (24 septembrie 2014). Preluat: 26 septembrie 2014.
  37. Documentația Apache HTTP Server 2.2: Sfaturi de securitate . Consultat la 29 septembrie 2014. Arhivat din original la 9 octombrie 2014.
  38. Bash Vulnerability Exploits Dropping DDoS Bots | Threatpost | Prima oprire pentru știri de securitate . Preluat la 29 septembrie 2014. Arhivat din original la 6 octombrie 2014.
  39. Securitatea site-ului - Vulnerabilitatea Bash „Shell Shock” afectează utilizatorii CPANEL | Sucuri Blog . Consultat la 30 septembrie 2014. Arhivat din original pe 29 septembrie 2014.
  40. „Shellshock DHCP RCE Proof of Concept” Arhivat 25 septembrie 2014 la Wayback Machine , Geoff Walton, TrustedSec
  41. Exploatare Shellshock pentru server DHCP , Xakep.ru (26 septembrie 2014). Arhivat din original pe 29 septembrie 2014. Preluat la 30 septembrie 2014.
  42. „Colecție de diverse atacuri” Arhivat 27 septembrie 2014 la Wayback Machine , Daniel Fox Franke, Akamai

Link -uri