Skip to main content

La vulnerabilidad crítica de seguridad WebP de día cero CVE-2023-4863 afecta a un ecosistema de software más amplio

feature insights context

28 de septiembre de 2023

0 minutos de lectura

Enlaces rápidos

Este mes, Apple Security Engineering and Architecture (SEA) y The Citizen Lab de la Munk School de la University of Toronto divulgaron un par de vulnerabilidades Critical relacionadas con imágenes WebP maliciosamente diseñadas, que podrían usarse para explotar el navegador Chrome y la biblioteca webmproject/libwebp de Google.

Al 27 de septiembre de 2023, los CVE conocidos que registran activamente esta vulnerabilidad de libwebp incluyen:

  • CVE-2023-4863: Divulgado el 11 de septiembre de 2023, con una puntuación CVSS de 9.6. Puntuación EPSS: 31.86 % (percentil 97*). Nota: este CVE recibió inicialmente una puntuación de 8.8 («Alta») antes de que se divulgaran más detalles. 

  • CVE-2023-5129: Divulgado el 25 de septiembre de 2023, con una puntuación CVSS de 10 (la máxima posible); Google, la autoridad asignada para la numeración de CVE, lo rechazó posteriormente el 27 de septiembre de 2023 por ser un duplicado.

La vulnerabilidad detectada en la biblioteca WebP libwebp afecta a mucho más que los navegadores y las aplicaciones basadas en Chrome (por ejemplo, 1Password para macOS). Esto es especialmente importante porque la biblioteca libwebp es utilizada por muchos sistemas operativos y frameworks de aplicaciones populares para renderizar imágenes .webp, incluido el popular framework Electron. Por lo tanto, la vulnerabilidad de libwebp también afecta al software de uso general que incluye Pillow y a otras aplicaciones como ffmpeg y Gimp. Ten en cuenta que algunos de estos componentes de software y aplicaciones vienen incluidos en imágenes de contenedor.

Las versiones de webmproject/libwebp desde la 0.5.0 hasta la 1.3.1, inclusive, están afectadas. Debes asegurarte de que tu sistema operativo y tus proyectos de software requieran al menos la versión 1.3.2 para corregir la vulnerabilidad. Sin embargo, ten en cuenta que otros programas suelen usar libwebp de forma indirecta, al incluirla en sus paquetes, lo que amplía el impacto de esta vulnerabilidad en el ecosistema de software.

Google y otros proveedores publicaron rápidamente correcciones para los navegadores más populares en respuesta al CVE inicial. 

Snyk está monitoreando esta vulnerabilidad y actualizará este artículo cuando haya nueva información. También actualizaremos Snyk Vulnerability Database con los datos más recientes disponibles, así que sigue ejecutando tus análisis habituales para mantener seguros tus proyectos. Esta vulnerabilidad de libwebp vuelve a demostrar que es fundamental analizar tus aplicaciones e imágenes de contenedor en busca de vulnerabilidades y hacerlo con frecuencia para mantener segura tu cadena de suministro de software.

Vuelve a consultar esta página o síguenos en X (@snyksec) para conocer las últimas noticias y novedades. Sigue leyendo para obtener más información.

EPSS calcula directamente los resultados del modelo EPSS. Estas puntuaciones ofrecen una idea general de la amenaza de explotación en el entorno real. El percentil mide la probabilidad de EPSS en relación con todas las puntuaciones de EPSS conocidas. En este caso, CVE-2023-4863 tiene una probabilidad de explotación mayor que el 97 % de todas las vulnerabilidades evaluadas, lo que significa que es más probable que un actor malicioso la explote que a la mayoría de las vulnerabilidades. Estos datos se actualizan a diario con la versión más reciente disponible del modelo EPSS. Consulta la documentación de EPSS para obtener más información.

¿Qué usa libwebp?

Es probable que la vulnerabilidad también esté muy extendida en los ecosistemas de desarrollo, ya que los lenguajes de programación de alto nivel suelen usar la biblioteca subyacente libwebp. Por ejemplo, el motor de videojuegos GoDot, que se usa para crear juegos 2D y 3D, depende de la biblioteca libwebp, y la utilidad FFmpeg, de uso extendido, también la utiliza biblioteca libwebp. 

Los expertos en seguridad aún están determinando el alcance total de su uso en distintas aplicaciones, ya que es probable que la vulnerabilidad afecte a componentes de software que usan códecs de imágenes .webp y renderizan su contenido (como navegadores, herramientas de diseño, etc.).

Explicación de la vulnerabilidad de libwebp

La biblioteca libwebp procesa imágenes en formato .webp. Google la creó hace más de una década y se usa en la mayoría de las aplicaciones que renderizan imágenes .webp. La vulnerabilidad puede explotarse mediante un archivo .webp sin pérdida creado maliciosamente, que provoca un desbordamiento en la biblioteca vulnerable.

Los ataques que aprovechan esta vulnerabilidad pueden ir desde la denegación de servicio (DoS) hasta la posible ejecución remota de código (RCE). Por ejemplo, ataques estrechamente relacionados, como el exploit de día cero BLASTPASS (Apple CVE-2023-41064,CVE-2023-41061), demostraron que las imágenes .webp maliciosas enviadas mediante iMessage podían comprometer el dispositivo iOS de una víctima sin que su propietario tuviera que hacer nada.

Consulta la página de Snyk Vulnerability Database para obtener más información y acceder a análisis detallados y ejemplos de pruebas de concepto.

Cómo detectar la vulnerabilidad de libwebp con Snyk

Hay varias formas de detectar la vulnerabilidad de libwebp con Snyk. Con la CLI de Snyk, puedes analizar tus proyectos localmente; también puedes importarlos a Snyk mediante nuestras integraciones de SCM o usar los informes de Snyk para buscar rápidamente libwebp en todos los proyectos que ya importaste a Snyk. 

Analiza tus proyectos con la CLI de Snyk

Snyk Container puede alertarte sobre paquetes del sistema operativo que dependen de versiones vulnerables de libwebp.  Snyk puede monitorear tus contenedores o Dockerfiles mediante la interfaz web, o puedes iniciar un análisis manualmente con el comando de la CLI: snyk container test.

El siguiente ejemplo muestra cómo se usa la CLI de Snyk para analizar la imagen de contenedor Docker python:3.11.1 y comprobar si tiene la vulnerabilidad de seguridad de día cero de libwebp:

$ snyk container test python:3.11.1

Testing python:3.11.1...
…
✗ Critical severity vulnerability found in libwebp/libwebpdemux2
  Description: Improper Input Validation
  Info: https://security.snyk.io/vuln/SNYK-DEBIAN11-LIBWEBP-5918870
  Introduced through: libwebp/libwebp-dev@0.6.1-2.1, imagemagick@8:6.9.11.60+dfsg-1.3, meta-common-packages@meta
  From: libwebp/libwebp-dev@0.6.1-2.1 > libwebp/libwebpdemux2@0.6.1-2.1
  From: imagemagick@8:6.9.11.60+dfsg-1.3 > imagemagick/imagemagick-6.q16@8:6.9.11.60+dfsg-1.3 > imagemagick/libmagickcore-6.q16-6@8:6.9.11.60+dfsg-1.3 > libwebp/libwebpdemux2@0.6.1-2.1
  From: libwebp/libwebp-dev@0.6.1-2.1 > libwebp/libwebpmux3@0.6.1-2.1
  and 3 more...
  Fixed in: 0.6.1-2.1+deb11u2
…

Tested 1 dependency for known issues, found 1 issue.

Análisis de proyectos C++ con la CLI

Snyk Open Source puede alertarte si hay una versión vulnerable de libwebp en las dependencias de tu aplicación C/C++. Snyk puede monitorear tus aplicaciones mediante la interfaz web, o puedes iniciar manualmente un análisis de tus dependencias de código abierto con este comando de la CLI: snyk test --unmanaged.

$ snyk test --unmanaged

Testing /Users/developer/myapp...

Issues:

 ✗ [Critical] Heap-based Buffer Overflow
   Introduced through: https://github.com|webmproject/libwebp@1.3.1
   URL: https://security.snyk.io/vuln/SNYK-UNMANAGED-WEBMPROJECTLIBWEBP-5918283

Tested 1 dependency for known issues, found 1 issue.

Consulta la documentación de usuario de Snyk para obtener más detalles sobre las capacidades de análisis de C/C++.

Analiza tus proyectos con la integración de SCM

Al importar tu proyecto a Snyk mediante nuestras integraciones de SCM compatibles (GitHub, Bitbucket, GitLab, Azure Repos), se iniciará automáticamente un análisis. Así podrás usar la interfaz de Snyk para identificar, priorizar y corregir la vulnerabilidad de libwebp en tus proyectos. 

Usa los informes de Snyk para detectar la vulnerabilidad de libwebp en tus proyectos

Los clientes de Snyk que tienen acceso a los informes de Snyk (plan Enterprise) pueden identificar rápidamente libwebp en los proyectos que ya importaron y monitorean con Snyk. En el informe de detalles de problemas, filtra por los CVE: CVE-2023-5129 AND CVE-2023-4863.

Informe de detalles de problemas de Snyk filtrado por CVE abiertas, que muestra 55 problemas por nivel de gravedad y una tabla de vulnerabilidades con CVE-2023-4863.

Copia la URL para compartir esta vista con otros miembros del equipo o expórtala a PDF para que sea más visible en toda la organización.

Si encuentras el problema, podrás ver exactamente dónde se está usando. Luego puedes hacer clic en el proyecto para obtener más información sobre el problema y consultar las instrucciones para corregirlo.

Priorizar las correcciones 

Es probable que identifiques varios problemas de libwebp en tus proyectos, lo que puede dificultar decidir por dónde empezar a corregirlos. Snyk ofrece varios mecanismos para ayudarte a priorizar.

Usa Priority Score de Snyk

Priority Score de Snyk calcula muchos factores de riesgo para ayudarte a identificar rápidamente los problemas que debes resolver primero. La puntuación calcula distintas señales, como EPSS, la madurez de los exploits, CVSS, tendencias en redes sociales y más. Así, puedes revisar rápidamente la lista de vulnerabilidades y priorizar las correcciones según corresponda. En el caso de libwebp, es comprensible que la puntuación sea alta en la mayoría de los casos. 

La puntuación aparece para cada problema de libwebp en la página Projects y también está disponible en los informes de Snyk.

Puntuación de prioridad de Snyk para el problema de libwebp

Usa Insights en Snyk

Si eres cliente de Snyk y usas Insights, podrás aprovechar el contexto adicional de las aplicaciones para comprender qué problemas representan un mayor riesgo. 

Insights agrega y correlaciona datos de toda la plataforma Snyk para crear una vista de 360° de tu aplicación. Esta incluye todos los componentes que intervienen en su creación y el contexto de cómo se implementa en producción. Esta vista permite que Insights te ayude a evaluar mejor el riesgo que representa un problema de libwebp, al responder preguntas como si el problema afecta a tu entorno, si el código que lo introduce está implementado o no, entre otras. 

Puedes abrir la pestaña Insights y usar los filtros de CVE y el embudo en la parte superior de la página para encontrar rápidamente los problemas de libwebp de mayor riesgo en tus proyectos. 

En el siguiente ejemplo, se indica que dos problemas de libwebp afectan al sistema operativo en uso. Están asociados a un contenedor implementado en producción con una ruta configurada a Internet, por lo que representan un mayor riesgo.

captura de pantalla del panel del informe de información de Snyk sobre la vulnerabilidad de libwebp

Para comprender exactamente cómo se introduce el riesgo y cómo se relaciona con la aplicación, abre el gráfico de evidencias para obtener más contexto:

captura de pantalla del gráfico de evidencias de Snyk sobre la vulnerabilidad de libwebp

Para obtener más información sobre Insights, cómo configurarlo y cómo usarlo, consulta nuestra documentación en línea.

Cómo corregir la vulnerabilidad de libwebp

Corrige libwebp en las imágenes base de contenedor

Actualiza tu imagen base a una etiqueta más reciente que incluya la corrección de la vulnerabilidad. En los ecosistemas compatibles, puedes iniciar desde Snyk pull requests con la corrección necesaria.

Por ejemplo, Snyk recomendará imágenes base de contenedor alternativas en la interfaz de usuario o la CLI. Además, cuando importes tu repositorio de código fuente mediante un SCM como GitHub, podrás automatizar la corrección de la imagen de contenedor mediante la creación de un pull request que actualice la entrada FROM de Dockerfile:

Snyk recomienda imágenes base alternativas para contenedores y te permite sugerir la corrección automáticamente al crear un pull request que actualiza la entrada FROM del Dockerfile

Snyk Container recomendará correcciones para la mayoría de las imágenes base oficiales de Docker Hub a medida que se publiquen:

Testing python:3.11.1-bullseye...
…

Base image:        python:3.11.1-bullseye

Tested 427 dependencies for known issues, found 395 issues.

Base Image              Vulnerabilities  Severity
python:3.11.1-bullseye  395              7 critical, 22 high, 71 medium, 295 low

Recommendations for base image upgrade:

Minor upgrades
Base Image                 Vulnerabilities  Severity
python:3.12.0rc3-bullseye  300              1 critical, 2 high, 2 medium, 295 lowpython:3.11.5-bullseye  300              1 critical, 2 high, 2 medium, 295 low

Alternative image types
Base Image                      Vulnerabilities  Severity
python:3.12.0rc2-slim-bullseye  63               0 critical, 0 high, 0 medium, 63 low
python:3.12.0rc2-slim           41               0 critical, 0 high, 1 medium, 40 low
python:3.12.0rc1-slim-bookworm  41               0 critical, 0 high, 1 medium, 40 low
python:3.11.4-bookworm          175              1 critical, 1 high, 3 medium, 170 low

Corrige libwebp en proyectos C y C++

Actualiza las dependencias de webmproject/libwebp de tu proyecto a la versión 1.3.2 o posterior y vuelve a compilar tu aplicación.

Próximos pasos para responder a la vulnerabilidad de «libwebp»

  1. Analiza tus proyectos con Snyk mediante los métodos descritos en este artículo. Para comenzar, regístrate para obtener una cuenta gratuita de Snyk y luego importa y analiza todos los proyectos potencialmente afectados con el asistente de importación.

  2. Identifica las correcciones prioritarias para la vulnerabilidad de libwebp mediante la puntuación de prioridad o Insights (para clientes del plan Snyk Enterprise).

  3. Aplica las correcciones actualizando la biblioteca libwebp a la versión 1.3.2 o posterior en las dependencias de código abierto de tus proyectos o en las imágenes de contenedor.

  4. Sigue monitoreando la situación a medida que evoluciona, asegúrate de seguirnos en X (@snyksec) y vuelve al blog de Snyk para enterarte de las novedades. Los equipos de seguridad de Snyk actualizarán nuestros recursos con regularidad.