Cómo encontrar y corregir la vulnerabilidad zero-day crítica de WebP CVE-2023-4863
5 de octubre de 2023
0 minutos de lecturaEl mes pasado, Apple Security Engineering and Architecture (SEA), en colaboración con The Citizen Lab de la Munk School de la Universidad de Toronto, identificó dos vulnerabilidades críticas (CVE-2023-4863 y CVE-2023-5129). Las vulnerabilidades involucraban imágenes WebP creadas con fines maliciosos que podían explotar los navegadores basados en Chromium y la biblioteca webmproject/libwebp proporcionada por Google. Puedes obtener más información sobre la vulnerabilidad y sus antecedentes recientes en nuestra publicación anterior del blog.
En particular, la vulnerabilidad de libwebp va más allá de los navegadores y afecta a los ecosistemas de desarrollo, los sistemas operativos y los contenedores. Estos son todos los ecosistemas y contenedores que encontramos afectados por libwebp:

Como muestra el amplio impacto de esta vulnerabilidad, se detecta en varios ecosistemas de desarrollo tanto como dependencia directa como transitiva. Se encuentra principalmente como dependencia transitiva en proyectos de Cocoapods, Swift y Python, lo que puede dificultar que los desarrolladores conozcan su impacto. Sin embargo, tanto Snyk Container como Snyk Open Source pueden detectar los paquetes afectados, y puedes usar Snyk gratis ahora para averiguar cuáles de tus proyectos los incluyen.

Aunque realizamos un análisis exhaustivo del impacto de libwebp, los expertos en seguridad todavía investigan los distintos usos de libwebp en aplicaciones, ecosistemas y sistemas operativos. Como la vulnerabilidad afecta a componentes de software que usan códecs de imágenes .webp y muestran su contenido (como navegadores, herramientas de diseño, etc.), el alcance seguirá aumentando. Por eso, es fundamental mantenerse al día con las últimas noticias sobre libwebp.
Esta publicación busca ofrecer una mejor comprensión del impacto de esta vulnerabilidad en los ecosistemas de software y servir como una referencia rápida para abordarla.
Al 3 de octubre de 2023, los CVE conocidos que se usan para dar seguimiento activo a esta vulnerabilidad de libwebp incluyen:
CVE-2023-4863: registrado el 11 de septiembre de 2023, con una puntuación CVSS de
9.6y una puntuación EPSS de 31.86 % (percentil 97). Nota: Este CVE recibió inicialmente una puntuación de8.8(“Alta”) antes de que se divulgaran más detalles.CVE-2023-5129: registrado 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.
Puedes obtener más información sobre la vulnerabilidad y sus antecedentes recientes en nuestra publicación anterior del blog. En esta publicación, veremos estas recomendaciones para corregirla:
Identifica dónde usas
libwebpActualiza a
libwebp1.3.2 o una versión posteriorMonitorea los proyectos con el soporte de auto-PR
1. Identifica dónde usas libwebp
La parte más difícil de abordar una vulnerabilidad zero-day es determinar si te afecta y dónde. En el caso de libwebp, no es diferente. libwebp puede encontrarse como dependencia de tu proyecto, ya sea directamente o de forma indirecta como dependencia transitiva. Por eso, identificarla es fundamental para abordar el problema correctamente, ya que es muy probable que te afecte en cierta medida sin que lo sepas. Algunas áreas afectadas son:
La vulnerabilidad afecta a cualquier software que desarrolles y que dependa directamente de la biblioteca
libwebpo indirectamente a través de dependencias transitivas.La vulnerabilidad afecta a cualquier software que uses para codificar o decodificar imágenes .webp.
La vulnerabilidad afecta a cualquier sistema operativo o imagen de contenedor que incluya herramientas para manejar imágenes .webp.
Un factor que contribuye a la amplia repercusión de esta vulnerabilidad en los ecosistemas de desarrollo es que los lenguajes de programación de alto nivel usan 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 popular utilidad FFmpeg también usa la biblioteca libwebp.
Cómo detectar la vulnerabilidad de libwebp con Snyk
Hay varias formas de detectar la vulnerabilidad de libwebp gratis con Snyk. Con la Snyk CLI, puedes probar tus proyectos localmente:
Para las aplicaciones, ejecuta
snyk test --unmanageddesde Snyk CLI para comparar las dependencias no administradas de tu repositorio y detectar paquetes individuales y sus vulnerabilidades.Para los contenedores, ejecuta
snyk container testpara detectar paquetes del sistema operativo que dependen de versiones vulnerables delibwebp.
También puedes escanear todos tus proyectos en tus repositorios de Git para obtener un informe de todas las dependencias directas y transitivas que usas. En este informe, verás si dependes de libwebp y en cuántas rutas de tu grafo de dependencias se usa. También puedes buscar rápidamente “CVE-2023-4863” en todos los proyectos.

2a. Actualiza a libwebp 1.3.2 o una versión posterior (código abierto)
Corrección automática: Conecta Snyk a tus repositorios de Git para que pueda crear pull requests y actualizar tu grafo de dependencias cuando sea posible. Luego, vuelve a compilar tu aplicación.
Corrección manual: Si usas
libwebpcomo dependencia directa en tu aplicación, puedes actualizar el archivo de dependencias directamente a la versión1.3.2o posterior. Luego, vuelve a compilar tu aplicación.Corrección manual: Si usas
libwebpcomo dependencia transitiva en tu aplicación, identifica una versión de tu dependencia directa que incorpore la dependencia transitivalibwebpen la versión1.3.2o posterior. Luego, vuelve a compilar tu aplicación.
2b. Actualiza a libwebp 1.3.2 o una versión posterior (contenedor)
Corrección automática: Conecta Snyk a tus repositorios de Git para que pueda crear pull requests y actualizar la imagen base de tu Dockerfile cuando sea posible. Comprueba si la actualización de imagen base sugerida todavía tiene la vulnerabilidad en
https://snyk.io/test/docker/<image_name>; luego, vuelve a compilar tu contenedor cuando hayas identificado una opción de actualización adecuada.Corrección manual: Si tu imagen incluye una versión vulnerable de
libwebpy no hay una actualización de imagen base disponible o no quieres usarla, puedes actualizarla tú mismo con las recomendaciones de corrección de Snyk Container. Ejemplo: En una imagen basada en Debian, si Snyk Container CLI informa lo siguiente:
Podrías agregar algo como esto para actualizar la biblioteca manualmente:
3. Monitorea los proyectos con el soporte de auto-PR
Como se trata de una vulnerabilidad zero-day, cada día se descubren nuevos impactos. Por eso, es importante monitorear activamente tus proyectos con regularidad para conocer nuevas recomendaciones que permitan corregir el problema. Si usas Snyk, asegúrate de mantener tus proyectos monitoreados (esta opción está habilitada de forma predeterminada cuando importas un repositorio a la aplicación de Snyk). Esto significa que Snyk probará tus proyectos automáticamente todos los días, además de las otras pruebas que se ejecutan cuando haces actualizaciones.
Estas pruebas diarias identificarán automáticamente cuándo se pueden aplicar mejoras de seguridad y nuevas correcciones. Por ejemplo, si usas libwebp como dependencia transitiva de package A, necesitas que package A lance una versión que use libwebp en la versión 1.3.2 o posterior. Es posible que hoy no esté disponible, pero podría lanzarse mañana o la próxima semana. Con snyk monitor, se harán pruebas diarias y recibirás un PR cuando esté disponible la nueva actualización, que actualizará la versión de libwebp para corregir la vulnerabilidad.
También es importante tener en cuenta que Snyk te avisará, mediante PR u otros mecanismos, si se implementan más correcciones para esta vulnerabilidad o si se descubren vectores de ataque nuevos que revelen otras vulnerabilidades. Así te asegurarás de ser el primero en saber qué hacer si surgen otros problemas.
Mantén seguras tus aplicaciones que usan libwebp
Snyk ofrece pull requests de corrección con un clic para aplicaciones que usan libwebp como dependencia directa o transitiva.
