Se detecta una vulnerabilidad de gravedad alta en libcurl y curl (CVE-2023-38545)
Hadas Bloom
4 de octubre de 2023
0 minutos de lecturaActualización: 11 de octubre de 2023
Hoy, a las 06:00 UTC, los mantenedores de cURL publicaron las versiones 8.4.0 de curl y libcurl para mitigar un desbordamiento de búfer en el heap de gravedad alta (prueba de concepto y la notificación inicial) que podría afectar a sistemas con una configuración y requisitos previos específicos.
Esta vulnerabilidad de día cero está presente en paquetes de varios ecosistemas de código abierto, administrados y no administrados, incluidos, entre otros, C/C++, cargo, cocoapods, npm, NuGet, pip y pub, así como en varias distribuciones de Linux, como Alpine, Debian, RHEL y otras.
Esta es la primera vulnerabilidad de gravedad alta detectada en curl en varios años (la anterior fue a principios de 2021).

Las versiones afectadas de curl/libcurl (desde marzo de 2020) son las siguientes:
La complejidad del exploit se considera high y solo puede activarse en ciertos escenarios. Como explica la publicación del mantenedor, Cómo provoqué un desbordamiento del heap en curl, la vulnerabilidad requiere que la biblioteca vulnerable se conecte a un servidor no controlado o comprometido (para explotarla mediante una redirección HTTP), o que use una URL controlada por un atacante a través de un proxy SOCKS5 con la resolución de nombres de host habilitada para activar la condición vulnerable. Incluso en ese caso, se trata de un desbordamiento del heap limitado al conjunto de caracteres. Es extremadamente difícil convertir los desbordamientos del heap en sistemas modernos en una ejecución de código arbitrario (ACE); de ahí la alta complejidad del exploit.
Ahora que la vulnerabilidad se publicó y se está rastreando, puedes usar la función de informes de Snyk para encontrar los proyectos afectados: selecciona tu organización y luego elige Reports en la barra lateral. Selecciona +Add Filter en los detalles del problema, elige CVE y luego ingresa el número de CVE: CVE-2023-38545

Actualizaremos este blog cuando surja nueva información.
Actualización: 4 de octubre de 2023
El 3 de octubre de 2023, Daniel Stenberg, mantenedor de curl desde hace mucho tiempo y autor original, publicó una nota en LinkedIn y X (antes Twitter) sobre el lanzamiento de la versión 8.4.0 de curl, que incluirá una corrección para «probablemente el peor problema de seguridad detectado en curl en mucho tiempo». Este problema debe tomarse en serio, ya que los mantenedores de curl suelen restar importancia al riesgo asociado con la mayoría de las vulnerabilidades reportadas en curl (un ejemplo reciente es el artículo CVE-2020-19909 es todo lo que está mal con las CVE). En este caso excepcional, están anunciando específicamente el riesgo y agregan: «prepárate».
Según los mantenedores, la versión corregida, 8.4.0, se publicará el 11 de octubre de 2023, alrededor de las 06:00 UTC.
Hoy, más temprano (4 de octubre de 2023), se anunciaron las CVE que se usarán para publicar información sobre la vulnerabilidad en un debate de GitHub.
La CVE-2023-38545 se asignará al problema de gravedad alta, que afecta tanto a libcurl como a curl. También se corregirá un problema adicional de gravedad baja, asignado a CVE-2023-38546, que solo afecta a libcurl.
¿Qué sabemos hasta ahora?
cURL es un proyecto popular que ofrece la biblioteca libcurl (que se usa para transferir URL) y la herramienta de línea de comandos curl (que se usa para obtener y enviar datos mediante URL). cURL se lanzó por primera vez hace 27 años y se ha usado ampliamente desde 1996.
Muchas de las distribuciones de Linux que admite Snyk, si no todas, usan libcurl; por eso, el posible alcance del impacto es amplio.
Cómo prepararte para corregir el problema
Revisa con anticipación el uso de contenedores y paquetes para evaluar tu nivel de exposición
Identifica los hosts que tienen curl instalado y determina cómo se instaló
Comprueba la versión de curl que usas con
curl --version
Evalúa tu nivel de exposición
Antes de que se publique la versión corregida de libcurl, puedes usar Snyk para encontrar rápidamente los proyectos de código abierto y las imágenes de contenedor que podrían verse afectados.
Ve a Dependencies en la barra lateral de la interfaz de la aplicación de Snyk. En la vista Dependencies, despliega el filtro Dependencies y escribe «curl». Puedes seleccionar versiones individuales o marcar el acceso directo Select all. Luego, haz clic fuera del filtro para ver los resultados. Así verás todos los proyectos que tienen las versiones de libcurl que seleccionaste. Explora los proyectos y las dependencias para evaluar tu nivel de exposición y priorizar qué debes corregir primero.
Identifica los hosts que tienen curl instalado
Muchos sistemas operativos incluyen curl instalado de forma predeterminada; la ubicación depende del sistema operativo y del método de instalación. Para determinar rápidamente si curl está instalado y se encuentra en tu ruta, ejecuta: curl --version
Si el comando se ejecuta sin errores, mostrará la primera versión de curl que encuentre en tu ruta. Ten en cuenta que podría estar instalado en más de una ubicación. Por ejemplo, los equipos Apple recientes lo incluyen de forma predeterminada en /usr/bin/curl, pero también podría haberse instalado mediante homebrew. Para determinar dónde está la versión de tu ruta, ejecuta which curl. En macOS y los sistemas operativos basados en Linux, también puedes buscar en estas ubicaciones:
/bin/curl/usr/bin/curl/usr/local/bin/curl/opt/homebrew/opt/curl
Asegúrate de encontrar todas las instalaciones que deben actualizarse antes de que salga la nueva versión.
Cómo responder cuando se publique la actualización
El día del lanzamiento, previsto para el 11 de octubre de 2023, alrededor de las 06:00 UTC, prepárate para actualizar a la versión 8.4.0. Cuando esté disponible la nueva versión, Snyk tendrá más información y publicará detalles adicionales sobre la vulnerabilidad en este blog (también incluiremos aquí enlaces a las publicaciones de seguimiento).
Actualiza los paquetes y contenedores vulnerables
Usa la información que recopilaste durante la preparación para actualizar tus proyectos e imágenes de contenedor e instalar la versión corregida de libcurl. Es posible que distintos ecosistemas y distribuciones de Linux esperen hasta después de esta fecha para actualizar los paquetes afectados, y es probable que las correcciones estén disponibles de forma escalonada. Por ejemplo, algunos mantenedores podrían esperar a que se publiquen las correcciones upstream antes de lanzar actualizaciones para sus imágenes de contenedor o paquetes; otros podrían aplicar los parches directamente. En ambos casos, Snyk puede ayudarte a encontrar y corregir los problemas.
Actualiza curl en tus dispositivos
Cuando esté disponible una versión corregida del binario de curl, actualiza las versiones que tengas instaladas. Publicaremos algunos consejos útiles para actualizarlo en otra publicación: hay varias formas de instalar curl y los métodos de actualización varían según el sistema operativo.
¿Qué está haciendo Snyk?
Snyk publicó un aviso provisional sobre el problema upstream de gravedad alta. El contenido del aviso se actualizará a medida que sepamos más.
Los expertos en seguridad de Snyk siguen de cerca las actualizaciones de lanzamiento, la información sobre vulnerabilidades, las conversaciones en redes sociales y otros datos para compartir con nuestros clientes toda información nueva que recibamos. Además, investigamos para encontrar otros paquetes downstream que puedan verse afectados. Actualizaremos este blog según sea necesario.



