Sulla popolare liberia cURL sono state rilasciate delle correzioni per due vulnerabilità, la più grave delle quali potrebbe potenzialmente comportare l’esecuzione di codice, in questo caso, malevolo.
Questa libreria è molto popolare, soprattutto in ambiente Linux, ed è ampliamente usata per le cose più disparate.
Quali sono le due vulnerabilità che colpiscono la libreria cURL
L’elenco delle vulnerabilità è questo:
- CVE-2023-38545 (punteggio CVSS: 7.5) – Vulnerabilità di overflow del buffer basato su heap di SOCKS5
- CVE-2023-38546 (punteggio CVSS: 5.0) – Iniezione di cookie con file nullo (come non esistesse in pratica)
CVE-2023-38545 è la più grave delle due e è stata descritta dal principale sviluppatore del progetto, Daniel Stenberg, come “probabilmente la peggiore vulnerabilità di sicurezza di cURL da molto tempo“, e queste due problematiche colpiscono le versioni di libcurl dalla 7.69.0 alla 8.3.0.
“Questo difetto fa sì che cURL effettui un overflow di un buffer basato su heap nella procedura di handshake del proxy SOCKS5“, hanno dichiarato i responsabili in un avviso. “Quando si chiede a cURL di trasmettere al proxy SOCKS5 il nome dell’host per consentire a quest’ultimo di risolvere l’indirizzo invece che farlo da solo, la lunghezza massima che il nome dell’host può avere è di 255 byte“.
I responsabili di codesta libreria hanno successivamente aggiunto: “Se il nome dell’host viene ritenuto più lungo di 255 byte, cURL passa alla risoluzione del nome in locale e invece trasmette solo l’indirizzo risolto al proxy. A causa di un bug, la variabile locale che dovrebbe significare ‘lascia che l’host risolva il nome’ potrebbe assumere il valore sbagliato durante un lento handshake SOCKS5 e, contrariamente all’intenzione, copiare l’hostname troppo lungo nel buffer di destinazione invece di copiare solo l’indirizzo risolto.”
I proprietari della suddetta libreria hanno affermato che la vulnerabilità potrebbe probabilmente essere sfruttata senza la necessità di un attacco di tipo denial-of-service e un overflow potrebbe essere innescato da un server HTTPS malintenzionato che effettua un reindirizzamento verso un URL appositamente creato.
“Visto che cURLè un progetto onnipresente, si può presumere con buona confidenza che questa vulnerabilità verrà sfruttata in modo diffuso per l’esecuzione remota di codice, con lo sviluppo di exploit più sofisticati“, ha dichiarato JFrog. “Tuttavia, il set di prerequisiti necessari affinché una macchina sia vulnerabile è più restrittivo di quanto inizialmente si pensasse.”
“Un exploit valido richiederebbe a un attaccante di innescare l’esecuzione del codice, ad esempio passando un nome di host a un’applicazione web che innescasse l’esecuzione del codice in cURL“, ha detto Johannes B. Ullrich, decano della ricerca presso il SANS Technology Institute. “Inoltre, l’exploit esiste solo se Curl è utilizzato per connettersi a un proxy SOCKS5. Anche questa è un’altra dipendenza, che rende meno probabile lo sfruttamento.”
La seconda vulnerabilità, che colpisce le versioni di libcurl dalla 7.9.1 alla 8.3.0, consente a un attore malintenzionato di inserire cookie a piacere in un programma in esecuzione utilizzando libcurl in circostanze specifiche.
Le patch per entrambe le vulnerabilità sono disponibili nella versione 8.4.0 rilasciata l’11 ottobre 2023; in particolare, l’aggiornamento garantisce che quetsa libreria non passi più alla modalità di risoluzione locale se il nome dell’host è troppo lungo, riducendo così il rischio di overflow del buffer basato su heap.
“Questa famiglia di difetti sarebbe stata impossibile se cURL fosse stato scritto in un linguaggio sicuro per la memoria anziché in C, ma la migrazione di Curl in un altro linguaggio non è all’ordine del giorno“, ha aggiunto Stenberg.