Vulnerabilidad CVE-2023-38545
Vulnerabilidad CVE-2023-38545
CVE-2023-38545, también conocida como "SOCKS5 heap buffer overflow", es una vulnerabilidad de alta gravedad en la ampliamente usada biblioteca cURL. Esta falla permite que un servidor malicioso provoque un desbordamiento de búfer en un cliente que se conecta, lo que podría derivar en ejecución remota de código (RCE). Afecta a las aplicaciones que usan libcurl para los protocolos de enlace de proxy SOCKS5.
¿Qué es la vulnerabilidad CVE-2023-38545 Wil Hayes?
CVE-2023-38545 es una vulnerabilidad de desbordamiento de búfer basado en el montículo que se encuentra en libcurl, una de las bibliotecas de código abierto más comunes para transferir datos con URL. Cuando una aplicación usa libcurl para conectarse a un proxy SOCKS5 y la conexión es lenta, la lógica para manejar el nombre de dominio puede confundirse. Si el nombre de dominio es más largo de lo que el búfer puede manejar, puede desbordarse, lo que crea una oportunidad perfecta para que un atacante pueda potencialmente ejecutar código arbitrario en la máquina cliente. Esto la convierte en un riesgo crítico de ejecución remota de código (RCE).
¿Cuándo se descubrió?
La vulnerabilidad fue reportada al proyecto cURL el 30 de septiembre de 2023 por el investigador de seguridad Jay Satiro. Siguiendo prácticas de divulgación responsable, los detalles se mantuvieron en reserva para dar tiempo a los desarrolladores de crear y distribuir una solución. La divulgación pública de CVE-2023-38545 ocurrió el 11 de octubre de 2023, junto con el lanzamiento de versiones parcheadas de cURL y libcurl.
Productos y versiones afectados
La vulnerabilidad afecta un rango específico de versiones de cURL y libcurl. Si usas alguna de las versiones listadas a continuación, debes aplicar el parche de inmediato.
Producto | Versiones afectadas | Versiones corregidas |
libcurl | 7.69.0 a 8.3.0 | 8.4.0 y posteriores |
cURL | 7.69.0 a 8.3.0 | 8.4.0 y posteriores |
Descripción técnica de CVE-2023-38545
Entonces, ¿cómo sucede todo esto? La explotabilidad de CVE-2023-38545 depende de un conjunto específico de circunstancias durante un intercambio de señales (handshake) de proxy SOCKS5. La vulnerabilidad se encuentra en la función que resuelve los hostnames. Cuando libcurl se configura para que el proxy maneje la resolución del hostname (CURLOPT_PROXYTYPE configurado como CURLPROXY_SOCKS5_HOSTNAME), primero copia el hostname en un búfer temporal.
El problema comienza cuando el intercambio de señales de la conexión es lento. Libcurl cambia de una función bloqueante a una no bloqueante. En este modo no bloqueante, si el hostname es más largo que el búfer local (normalmente 256 bytes), los datos se desbordan. Un actor malicioso puede controlar el hostname y explotar este desbordamiento. Al crear un hostname muy largo y configurar un servidor SOCKS5 malicioso, un atacante puede sobrescribir memoria en el heap, lo que podría provocar una falla o, peor aún, ejecución remota de código.
Tácticas, técnicas y procedimientos (TTPs)
Un atacante que busque explotar CVE-2023-38545 probablemente usaría ingeniería social u otros medios para engañar a un usuario y hacer que se conecte a una URL maliciosa con una aplicación vulnerable. El atacante controlaría el servidor proxy SOCKS5. Cuando la aplicación de la víctima intenta conectarse, el servidor ralentiza intencionalmente el proceso de intercambio de señales. Esto activa el estado vulnerable en libcurl, y el servidor envía de vuelta un hostname excesivamente largo, lo que provoca el desbordamiento del búfer y permite que el código del atacante se ejecute en el sistema de la víctima.
Indicadores de compromiso (IOCs)
Dado que esta es una vulnerabilidad del lado del cliente que se activa al conectarse a un servidor malicioso, los principales indicadores de compromiso de la vulnerabilidad CVE-2023-38545 implican tráfico de red. Supervisa las conexiones salientes inusuales o sospechosas hacia proxies SOCKS5. Busca solicitudes DNS de hostnames excepcionalmente largos, especialmente aquellos que parezcan maliciosos o sin sentido. Cualquier falla en aplicaciones que dependan en gran medida de cURL para solicitudes de red también debe investigarse como un posible síntoma de un intento de explotación.
Pruebas de concepto y exploits conocidos
Poco después de que se divulgara la vulnerabilidad, los investigadores de seguridad comenzaron a publicar código de prueba de concepto (PoC) para CVE-2023-38545. Estos PoCs demostraron cómo provocar la falla y, en algunos casos, lograr ejecución arbitraria de código bajo condiciones controladas. Aunque las campañas de explotación activa y generalizada no han sido tan frecuentes como se temía inicialmente, la disponibilidad de estos PoCs significa que cualquier sistema sin parchear es un blanco fácil. El potencial de un exploit para CVE-2023-38545 es muy real.
Cómo detectar la vulnerabilidad CVE-2023-38545
Detectar esta vulnerabilidad requiere un enfoque de múltiples capas. Ante todo, es clave contar con un inventario sólido de un activo de ciberseguridad y un proceso de escaneo de vulnerabilidades. Necesitas saber qué sistemas y aplicaciones de tu red usan las versiones afectadas de libcurl.
A nivel de endpoint, las soluciones de Detección y respuesta para endpoints (EDR) pueden ayudar. Monitorea los procesos que usan libcurl en busca de comportamiento anómalo, como fallas inesperadas o la generación de procesos secundarios sospechosos (como cmd.exe o powershell.exe). El monitoreo de red también es fundamental. Se pueden configurar reglas de SIEM para marcar conexiones salientes a proxies SOCKS5 desconocidos o consultas DNS de nombres de dominio inusualmente largos.
Impacto y riesgo de la vulnerabilidad CVE-2023-38545
El impacto de una explotación exitosa de CVE-2023-38545 es grave. Dado que cURL está integrado en incontables aplicaciones, sistemas operativos (incluyendo Windows, macOS y Linux) e incluso dispositivos IoT, la superficie de ataque es enorme. Un RCE exitoso le da a un atacante un punto de apoyo persistente dentro de tu red. A partir de ahí, pueden moverse lateralmente, exfiltrar datos sensibles, implementar ransomware o usar tu sistema como punto de pivote para atacar a otros. El riesgo para la confidencialidad, integridad y disponibilidad de los datos es increíblemente alto.
Estrategias de mitigación y remediación
La mejor defensa es un buen ataque. En este caso, eso significa aplicar parches.
La mitigación principal de la vulnerabilidad CVE-2023-38545 es actualizar cURL y libcurl a la versión 8.4.0 o posterior. Esta versión contiene el parche oficial de CVE-2023-38545 que corrige el desbordamiento de búfer en el heap.
Si no puedes aplicar el parche de inmediato, hay algunas soluciones alternativas:
Evita usar proxies SOCKS5 con resolución de nombres en tus aplicaciones.
Si debes usar un proxy SOCKS5, no configures CURLPROXY_SOCKS5_HOSTNAME en las opciones de cURL de tu aplicación.
Bloquea el tráfico SOCKS5 saliente en tu firewall para todos los destinos, salvo los explícitamente confiables.
En definitiva, aplicar parches es la única forma segura de remediar el riesgo. No esperes a que los actores de amenazas encuentren tus sistemas vulnerables por ti. Un enfoque proactivo de gestión de parches, combinado con herramientas de detección de amenazas eficaces como ITDR, es tu mejor opción para mantenerte seguro.
Preguntas frecuentes sobre la vulnerabilidad CVE-2023-38545