În cea mai mare parte, utilizatorii obișnuiți de GNU/Linux nu știu ce este curl. Totuși programatori și administratorii de sistem cunosc bine acest program.
Această comandă de shell și biblioteca asociată, libcurl, este utilizată pentru a transfera date prin fiecare protocol de rețea de care ați auzit vreodată și este utilizat în calculatoare personale, servere, cloud-uri, mașini, televizoare, router-e și aproape în orice dispozitiv Internet of Things (IoT).
Dezvoltatorii Curl estimează că este utilizat în peste 20 de miliarde de cazuri. Iar acum a apărut un defect de securitate potențial neplăcut, CVE-2023-38545.
Dezvoltatorul principal al Curl, Daniel Stenberg, a scris într-o postare pe blog că aceasta este „cea mai gravă problemă de securitate găsită în Curl de mult timp”.
Experții în securitate sunt de acord. Într-un cuvânt, acest lucru este rău. După cum a avertizat Saeed Abbasi, manager de produs al Qualys Threat Research Unit:
Organizațiile trebuie să acționeze rapid pentru a inventaria, scana și actualiza toate sistemele care utilizează curl și libcurl. În special, gradul de vulnerabilitate foarte ridicat impune o atenție imediată și precaută pentru a proteja aplicațiile interconectate și cele conectate la web, asigurându-se că funcționalitatea bogată de transfer de date pe care o oferă curl și libcurl rămâne neafectată și sigură.
Mai exact, gaura de securitate poate fi invocată atunci când cineva utilizează protocolul proxy SOCKS5. Acest protocol destul de simplu stabilește comunicarea în rețea prin intermediul unui „intermediar” dedicat.
Protocolul este utilizat atunci când se comunica prin Tor, programul de internet open source utilizat pentru a accesa internetul din interiorul organizațiilor și companiilor în mod privat.
Unele rețele private virtual, cum ar fi NordVPN, Private Internet Access și Hide.Me, îl oferă pentru a le permite utilizatorilor lor să ocolească blocajele de conținut pe internet și pentru a le asigura anonimatul.
Într-o conversație pe Mastodon, Steinberg a declarat: „Poate că cel mai realist este că un utilizator de Tor (care în mod normal folosește SOCKS5) care merge pe un site HTTPS care a fost piratat sau similar” să fie cel mai probabil să cadă în această gaură de securitate.
CVE-2023-38545 este o gaură de supraîncărcare a memoriei heap. Aceasta poate fi exploatată pentru executarea de cod de la distanță. Există deja dovezi de concept (proofs of concept) care arată cum ar putea fi realizat un atac folosind gaura curl.
Gaura de securitate a fost prezentată în februarie 2020 și afectează versiunile libcurl de la 7.69.0 până la inclusiv 8.3.0.
Citind codul acum, este imposibil să nu observi acest defect. Da, mă doare cu adevărat să accept faptul că am făcut această greșeală fără să-mi dau seama și că defecțiunea a rămas nedescoperită în cod timp de 1315 zile. Îmi cer scuze. Nu sunt decât un om. …privind retrospectiv, a expedia un heap overflow în cod instalat în peste douăzeci de miliarde de instanțe nu este o experiență pe care aș recomanda-o.
a declarat Steinberg, jenat de greșeala sa.
Nu toată lumea crede că este o problemă atât de mare. Bill Demirkapi, membru al echipei Microsoft Security Response Center Vulnerability and Mitigation, a scris pe X (Twitter), că: „Cea mai gravă problemă de securitate găsită în curl de mult timp este accesibilă doar dacă victima folosește un proxy SOCKS5 și se conectează la un server necinstit sau este supusă unui atac MitM (Man in the Middle)”.
Se poate presupune cu certitudine că această vulnerabilitate va fi exploatată în natură pentru executarea de cod de la distanță, fiind dezvoltate exploatări mai sofisticate. Cu toate acestea – setul de condiții prealabile necesare pentru ca o mașină să fie vulnerabilă este mai restrictiv decât se credea inițial. Prin urmare, credem că marea majoritate a utilizatorilor de curl nu vor fi afectați de această vulnerabilitate.
a declarat compania JFrog
Pentru a fi mai precis, condițiile prealabile necesare pentru a transforma problemă într-un incident de securitate sunt:
- Solicitarea curl este făcută prin intermediul socks5h.
- Bufferul de negociere al dispozitivului de stare curl este mai mic de ~65k.
- Răspunsul „hello” al serverului SOCKS este întârziat.
- Atacatorul setează un nume de gazdă de destinație finală mai mare decât bufferul de negociere.
Sunt o mulțime de condiții prealabile.
Cu toate acestea, având în vedere utilizarea extensivă a Curl în diverse sisteme de operare, aplicații și dispozitive IoT, anunțarea timpurie a problemei de către Steinberg a fost o mișcare strategică inteligentă.
Acesta a oferit organizațiilor timp suficient pentru a-și verifica sistemele, pentru a identifica toate instanțele de curl și libcurl utilizate și pentru a dezvolta un plan cuprinzător pentru aplicarea de corecții la nivelul întregii companii.
Proiectul curl nu s-a oprit aici; informațiile despre aceste defecte au fost împărtășite simultan cu dezvoltatorii diferitelor distribuții GNU/Linux și Unix.
Această abordare colaborativă a asigurat că corecțiile și pachetele actualizate erau gata înainte de lansarea oficială a Curl 8.4.0.
Este recomandat să se actualizeze la versiunea 8.4.0 a curl/libcurl sau să se aplice corecțiile la versiunile mai vechi pentru a reduce riscurile asociate cu aceste vulnerabilități.
Deoarece libcurl/curl este o componentă implicită în multe distribuții GNU/Linux și este încorporată în numeroase imagini și containere, utilizatorii GNU/Linux ar trebui să fie vigilenți și să urmărească versiunile lansate de acești furnizori.
Cei mai multi dintre principalii distribuitorii de GNU/Linux au publicat deja corecțiile necesare.