Cabecera blog ciberseguridad

CVE-2023-38545: Vulnerabilidad de desbordamiento de buffer en SOCKS5 de curl

La vulnerabilidad CVE-2023-38545 afecta a curl

La vulnerabilidad CVE-2023-38545 afecta a curl, una herramienta de línea de comandos y biblioteca de software

El 11 de octubre de 2023, el equipo de desarrollo de curl ha notificado una vulnerabilidad de desbordamiento de buffer heap, clasificada como alta, que afecta al handshake del componente proxy SOCKS5. Esta vulnerabilidad fue reportada por Jay Satiro mediante la plataforma HackerOne el día 30 de septiembre de 2023.

Curl es una herramienta de línea de comandos y una biblioteca de software utilizada para transferir datos desde o hacia un servidor, utilizando varios protocolos de red, incluyendo HTTP, HTTPS, FTP, FTPS, SCP, SFTP, LDAP, y más. El nombre cURL proviene de Client for URLs (Cliente para URLs), lo que indica su función principal: actuar como un cliente para acceder a recursos a través de URL.

La vulnerabilidad CVE-2023-38545 se puede mitigar

¿En qué consiste la vulnerabilidad?

La vulnerabilidad CVE-2023-38545 se encuentra en la parte de la negociación de la comunicación mediante proxy SOCKS5.

SOCKS5 tiene dos modos diferentes de resolución de nombres. O el cliente resuelve el nombre de host localmente y pasa el destino como una dirección resuelta, o el cliente pasa el nombre de host completo al proxy y deja que el propio proxy resuelva el host remotamente. Cuando el proxy es el encargado de resolver el nombre, este está limitado a 255 bytes.

Sin embargo, si se detecta que el nombre de host es mayor de 255 bytes, curl cambia a la resolución local de nombres y en su lugar pasa la dirección resuelta sólo al proxy. Debido a un bug, la variable local que significa «dejar que el host resuelva el nombre» podría obtener el valor incorrecto durante un handshake SOCKS5 suficientemente lento, y erróneamente copiar el nombre de host demasiado largo al buffer de destino en lugar de copiar allí sólo la dirección resuelta.

Entonces, curl creará un framebuffer de protocolo, donde copiará este nombre de host, permitiendo que ocurra un desbordamiento de buffer en el heap. Por defecto, el framebuffer es de 16Kb, aunque este tamaño es modificable. Por ejemplo, la herramienta CLI de curl, lo tiene establecido a 100Kb, aunque es posible su modificación mediante el parámetro:

--limit-rate

Para su explotación, un atacante podría desplegar un servidor HTTPS malicioso, que hiciese una redirección de tipo 30X a una URL cuyo tamaño de hostname fuese entre 16Kb y 64kB. Si una víctima se conectase mediante alguna aplicación que usase libcurl a través de un proxy SOCKS5 (utilizando el modo proxy-resolver), y el proxy SOCKS5 fuese suficientemente lento como para causar el bug de variable local, esta explotación sería posible. La explotación también sería posible para la herramienta curl que hubiese establecido a 64Kb o menos el parámetro:

 --limit-rate

Este error fue introducido el 14 de febrero de 2020, al convertir el código del handshake de SOCKS5 de una función de bloqueo a una máquina de estado no bloqueante.

Características principales de la vulnerabilidad CVE-2023-38545

A continuación, se detallan las características principales de la vulnerabilidad CVE-2023-38545:

  • Identificador CVE: CVE-2023-38545
  • Fecha de publicación: 11/10/2023
  • Software Afectado: curl y libcurl.
  • CVSS Score: 7.5 (CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H)
  • Versiones afectadas: Desde la versión 7.69.0 hasta 8.3.0 (esta incluida)

Mitigación

La solución principal consiste en actualizar urgentemente las librerías y herramientas mencionadas. La vulnerabilidad se soluciona a partir de la versión 8.4.0.

Adicionalmente se recomienda:

  • No utilizar proxies CURLPROXY_SOCKS5_HOSTNAME con curl.
  • No establecer una variable de entorno proxy para socks5h://

Detección de la vulnerabilidad CVE-2023-38545

Los detalles de la vulnerabilidad son complejos, por lo que se recomienda confiar en las actualizaciones ofrecidas por los desarrolladores. Se deben verificar las versiones en las aplicaciones y sistemas que hagan uso de estas librerías y herramientas y verificar así que éstas dispongan de una versión igual o superior a 8.4.0.

Como parte de su servicio de vulnerabilidades emergentes, Tarlogic monitoriza de forma proactiva el perímetro de sus clientes para informar, detectar y notificar urgentemente la presencia de esta vulnerabilidad, así como otras amenazas críticas que podrían causar un grave impacto sobre la seguridad de sus activos.

Referencias