Van detectar una vulnerabilitat que afecta curl, libcurl i projectes basats en aquests

ris

cURL és un projecte de programari consistent en una biblioteca i un intèrpret d'ordres orientat a la transferència de fitxers.

Daniel Stenberg (autor del projecte cURL) va donar a conèixer fa poc mitjançant una publicació de bloc, informació sobre una vulnerabilitat que va ser detectada a la utilitat per rebre i enviar dades a través de la xarxa curl i la biblioteca libcurl.

S'esmenta que la vulnerabilitat (ja catalogada sota CVE-2023-38545) es deu a un error al codi de resolució del nom de host abans d'accedir al servidor intermediari SOCKS5.

SOCKS5 és un protocol intermediari. És un protocol força simple per configurar la comunicació de xarxa mitjançant un «intermediari» dedicat. Per exemple, el protocol es fa servir normalment en configurar la comunicació a través de Tor, però també per accedir a Internet des d'organitzacions i empreses.

SOCKS5 té dues maneres diferents de resolució de noms de host. O el client resol el nom de host localment i passa la destinació com una adreça resolta, o el client passa el nom de host complet al proxy i permet que el proxy resolgui el host remotament.

Com a tal la decisió pot provocar un desbordament del memòria intermèdia i potencialment l'execució de codi d'un atacant al costat del client quan s'hi accedeix mitjançant la utilitat curl o una aplicació que utilitza libcurl, a un servidor HTTPS controlat per l'atacant. Però el problema només és present si l'accés a través d'un servidor intermediari SOCKS5 està habilitat a curl. En accedir directament sense proxy la vulnerabilitat no apareix.

Es descriu que el propietari d'un lloc al qual accedeix curl a través d'un servidor intermediari SOCKS5 pot:

Desencadenar un desbordament del memòria intermèdia del costat del client retornant un codi de redireccionament de sol·licitud (HTTP 30x) i configurant la capçalera «Location:» en un URL amb un nom de host la mida del qual oscil·la entre 16 fins a 64 KB (16 KB és la mida mínim requerit per desbordar el memòria intermèdia assignat i 65 KB és la longitud màxima permesa del nom de host en una URL).

Si la redirecció de sol·licituds està habilitada en la configuració de libcurl i el servidor intermediari SOCKS5 utilitzat és prou lent, llavors el nom de host llarg s'escriurà en un memòria intermèdia petit, òbviament de menor mida.

A la seva publicació de bloc, Daniel Stenberg, va esmentar que la vulnerabilitat va romandre sense ser detectada durant 1315 dies. També diu que el 41% de les vulnerabilitats prèviament identificades a curl probablement es podrien haver evitat si curl s'hagués escrit en un llenguatge segur per a la memòria, però no hi ha plans per reescriure curl en un altre idioma en el futur previsible.

La vulnerabilitat afecta principalment les aplicacions basades en libcurl i apareix en la utilitat curl només quan s'usa l'opció “–limit-rate” amb un valor inferior a 65541, ja que libcurl assigna un memòria intermèdia de 16 KB per defecte i 100 KB en curl, però aquesta mida canvia segons el valor del paràmetre “–limit-rate”.

S'esmenta que si el nom del host té fins a 256 caràcters, curl passa immediatament el nom al servidor intermediari SOCKS5 per a la seva resolució, i si el nom té més de 255 caràcters, canvia al solucionador local i passa l'adreça ja definida a SOCKS5. A causa d'un error en el codi, l'indicador que indica la necessitat de resolució local podria establir-se en un valor incorrecte durant la negociació lenta d'una connexió a través de SOCKS5, fet que va portar a l'enregistrament d'un nom de sistema llarg en un memòria intermèdia assignat amb l'expectativa d'emmagatzemar l'adreça IP o el nom, sense excedir els 255 caràcters.

Finalment, s'esmenta que la vulnerabilitat es va solucionar a la versió curl 8.4.0 i com a mesures per millorar la seguretat del codi base, es proposa ampliar les eines per provar el codi i utilitzar més activament dependències escrites en llenguatges de programació que garanteixin un funcionament segur amb la memòria. També està considerant reemplaçar gradualment parts de curl amb opcions escrites en llenguatges segurs, com el backend experimental Hyper HTTP implementat a Rust.

si estàs interessat a poder conèixer més sobre això, Pots consultar els detalls en el següent enllaç.


Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: AB Internet Networks 2008 SL
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.