În pachetul pppd (), permite executarea propriului cod prin trimiterea de cereri de autentificare special formulate către sisteme care utilizează protocolul PPP (Point-to-Point Protocol) sau PPPoE (PPP over Ethernet). Aceste protocoale sunt utilizate de obicei de furnizorii de servicii pentru a organiza conexiuni prin Ethernet sau DSL, și sunt de asemenea folosite în unele VPN-uri (de exemplu, pptpd și ). Pentru a verifica expunerea sistemelor dumneavoastră la această problemă prototipul exploatului.
Vulnerabilitatea este provocată de un overflow de buffer în implementarea protocolului de autentificare EAP (Extensible Authentication Protocol). Atacul poate fi efectuat înainte de autentificare, prin trimiterea unui pachet de tip EAPT_MD5CHAP, care conține un nume de gazdă foarte lung, ce nu încap în buffer-ul alocat. Duplicatul din codul de verificare a dimensiunii câmpului rhostname permite atacatorului să scrie date dincolo de buffer în stivă, reușind astfel să execute codul său de la distanță cu privilegii de root. Vulnerabilitatea se manifestă atât pe partea serverului, cât și pe client, adică nu numai serverul poate fi atacat, ci și clientul care încearcă să se conecteze la un server controlat de atacator (de exemplu, un atacator poate sparge mai întâi serverul prin vulnerabilitate și apoi începe să afecteze clienții conectați).
Problema afectează versiunile de la 2.4.2 la 2.4.8 inclusiv și a fost remediată sub forma . Vulnerabilitatea este de asemenea stivă , dar în configurația implicită în lwIP, suportul EAP nu este activat.
Starea remedierii problemei în distribuții poate fi consultată pe aceste pagini: , , , , , , , . În RHEL, OpenWRT și SUSE, pachetul pppd a fost compilat cu activarea protecției „Stack Smashing Protection” (modul „-fstack-protector” în gcc), ceea ce limitează exploatarea prin prăbușire. Pe lângă distribuții, vulnerabilitatea a fost confirmată și în unele produse (CallManager), și Synology (DiskStation Manager, VisualStation VS960HD și Router Manager), care folosesc cod pppd sau lwIP.
Sursa: opennet.ro
