Skip to main content

Se detecta una vulnerabilidad de gravedad alta en libcurl y curl (CVE-2023-38545)

Escrito por
Headshot of Hadas Bloom

Hadas Bloom

feature curl vuln

4 de octubre de 2023

0 minutos de lectura

Actualizació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).

Captura de pantalla de la tabla de vulnerabilidades de cURL y libcurl, que muestra barras de gravedad codificadas por color en las versiones recientes y el total de vulnerabilidades.
Captura de pantalla de la tabla de vulnerabilidades de cURL

Las versiones afectadas de curl/libcurl (desde marzo de 2020) son las siguientes:

  • Versiones afectadas: libcurl desde 7.69.0 hasta 8.3.0, inclusive

  • Versiones no afectadas: libcurl < 7.69.0 y >= 8.4.0

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

Informe detallado de problemas de Snyk con el filtro CVE abierto y CVE-2023-38545 seleccionado en el menú desplegable
Filtra la vista para mostrar solo 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.

Leer más

blog feature snyk container custom base recommendations
Blog

Presentamos Evo Agentic AppSec: seguridad al ritmo del desarrollo con IA

El desarrollo impulsado por IA supera el ritmo de los flujos de trabajo de seguridad tradicionales. Agentic AppSec de Snyk usa agentes de seguridad para encontrar, corregir y verificar vulnerabilidades de forma continua, mientras las personas definen el estándar.

Blog

Los modelos de frontera encontraron las vulnerabilidades. Solo el atacante encontró las cadenas.

El análisis estático encontró las fallas, pero solo las pruebas de ataque en vivo demostraron cómo podían encadenarse para provocar brechas. Una comparación de Evo COS, Claude Security y Claude Code Security.

feature insights context
Blog

Los ataques autónomos ya están aquí. La defensa debe estar a su altura.

Los atacantes autónomos están reduciendo el tiempo disponible para defenderse. Descubre cómo el descubrimiento, la corrección, la validación y la prevención continuos pueden ayudar a los equipos de seguridad a seguirles el ritmo.