Una vulnerabilidad crítica de libwebp pone en jaque a medio Internet, actualiza tu software ya
Prácticamente todos los navegadores populares existentes están afectados con una nueva vulnerabilidad que se descubrió en la noche de ayer y que ha movido a las empresas a toda velocidad para lanzar parches de seguridad. De hecho, el problema es más agudo, bastante más agudo que esto, puesto que realmente la vulnerabilidad en WebP es más generalizada y afecta a cualquier software del mundo que utilice la librería libwebp, que en Internet son miles. Te contamos todo sobre ella y qué tienes que hacer para protegerte.
Si os habéis dado cuenta en los últimos meses no paran de salir vulnerabilidades por doquier. Es una guerra encubierta entre países que, conspiración aparte, está forzando a todas las compañías a gastar ingentes cantidades de dinero en seguridad. La de hoy, según NIST, está clasificada como crítica, y aunque no tiene puntuación como tal en estos momentos, ya podemos anticipar que estará entre 9 de 10 y 10 de 10 en gravedad.
La vulnerabilidad de WebP con la librería libwebp que ha puesto en jaque a medio internet
Prácticamente no hay nadie en Internet que se salve, porque la mayoría de navegadores se basan en Chromium para lo bueno y para lo malo, pero es que además hay servicios en Internet, software de lo más variopinto y algoritmos que usan estas librerías 24/7/365.
Por ello, la CVE-2023-4863, aunque sigue en análisis como vulnerabilidad crítica para WebP, ya ofrece una descripción más o menos clara del problema:
El desbordamiento del búfer "Heap" en WebP para Google Chrome anterior a 116.0.5845.187 permitía a un atacante remoto realizar una escritura en memoria fuera de los límites a través de una página HTML diseñada en concreto. (Severidad de seguridad de Chromium: crítica)
Realmente, y como hemos podido ver, no hace referencia a lo que hemos dicho del software comentado y demás. Esto es porque se está avanzando en el alcance de la misma, y los primeros datos para saber si estás afectado son estos.
Desde Chrome hasta Telegram, pasando por LibreOffice
La lista de programas, servicios o algoritmos incluso, no para de crecer, así que vamos a ofreceros lo que por ahora están en la palestra y están siendo actualizados ante esta vulnerabilidad crítica de WebP:
- Chrome
- Firefox
- Brave
- Egde
- Signal Electron
- Honeyview
- Affinity
- Gimp
- Inkscape
- LibreOffice
- Telegram
- Thunderbird
- ffmpeg
- 1Password
Y la lista sigue con cientos de aplicaciones de Android, decenas en Mac, miles en Windows. Como decimos, es tan general la vulnerabilidad con WebP que es difícil imaginar un software que no esté realmente afectado y que tenga que trabajar en Internet de múltiples formas con este formato.
La raíz del problema, según se describe técnicamente, tiene que ver con la función BuildHuffmanTable, la cual se introdujo en 2014 y es utilizada por todos los software para verificar si los datos son precisos. El problema con ella lo resume Alex Ivanov tal que así:
"La vulnerabilidad puede ocurrir cuando se asigna más memoria si la tabla no es lo suficientemente grande para datos válidos.
El código original optimizó un decodificador Huffman que utiliza una técnica común: lee varios bits por delante para determinar cuántos bits consumir y qué símbolo decodificar. La versión anterior utilizaba tablas de búsqueda para símbolos cortos, mientras que las más largas requerían un recorrido de gráfico más complejo. La versión más nueva simplificó este proceso empleando una variedad de tablas de búsqueda. Cada entrada de esta tabla contiene detalles sobre bits y valores, y si el número de bits supera un cierto límite, el valor se interpreta de manera diferente.
La nueva versión determinó el número máximo de entradas contando símbolos. Sin embargo, debido a que el árbol de Huffman proviene de una fuente que no es confiable, podrían surgir situaciones en las que la cantidad de bits sea excesivamente grande. El VP8 Lossless permite hasta 15 bits, lo que significa que la tabla más grande puede tener muchas entradas, más de las que debería. Curiosamente, si bien había un modo en el código para calcular solo el tamaño de la tabla, no se usó y se asumió un tamaño fijo, lo que generó posibles desbordamientos.
La razón detrás de estos cambios fue optimizar el paso de decodificación de Huffman, una parte crucial y computacionalmente intensiva de los formatos de compresión. Aunque se reconoce la técnica de optimización, generalmente no se da prioridad a los códigos más largos porque no aparecen con frecuencia. La actualización del código original argumentó en contra de esta creencia y fue aceptada.
El problema resaltado no es algo que pueda evitarse simplemente usando un lenguaje seguro para la memoria. Es un escenario único en el que se desea evitar comprobaciones de desbordamiento. Sin embargo, si bien la solución real no cambió la ReadSymbolfunción, garantizar la seguridad del circuito cerrado sigue siendo fundamental. Una justificación errónea de tales medidas de seguridad puede generar problemas."
Por tanto, todo software que esté trabajando con WebP es vulnerable, así que actualiza cuanto antes para no dejar un fácil acceso a tu PC a los atacantes.