
STREAMERS EN LA MIRA
STREAMERS EN LA MIRA
OBS STUDIO PARA STREAMING
OBS Studio (Open Broadcaster Software) es una de las herramientas más populares del mundo para realizar transmisiones en vivo y grabaciones de video. Su código abierto, potencia y flexibilidad lo convirtieron en el estándar de facto para creadores de contenido, streamers y profesionales del video.
Figuras de renombre como Ibai Llanos, El Rubius, AuronPlay y TheGrefg han utilizado OBS Studio para sus transmisiones en Twitch o YouTube. Incluso streamers ingleses de gran calibre como Pokimane, Shroud o Ludwig han hecho uso de esta herramienta, personalizándola con plugins y configuraciones avanzadas.
VULNERABILIDAD EN OBS
En este documento analizaremos en profundidad la vulnerabilidad de heap overflow descubierta en OBS Studio, explicando su causa técnica, posibles impactos y cómo fue mitigada.
https://github.com/google/security-research/security/advisories/GHSA-mf24-5fxf-f4x5
Esta vulnerabilidad fue encontrada por un investigador de Google y reportada directamente en el Github de OBS Studio en 2024.
Aunque esta vulnerabilidad se manifestó dentro de OBS Studio, su origen se remonta a una biblioteca externa que el software incorporaba como dependencia. Es decir, el bug no era nuevo: ya existía desde hace tiempo en una librería de terceros, pero no había sido identificado ni corregido en ese contexto.
LIBRERIA VULNERABLE VIEJA
Este tipo de escenarios son comunes en el desarrollo de software moderno, donde aplicaciones complejas como OBS se apoyan en múltiples bibliotecas externas. El problema puntual, un heap overflow, ya estaba presente en esa librería, pero pasó desapercibido hasta que su uso dentro de OBS permitió explotarlo de forma práctica. https://github.com/advisories/GHSA-6vr7-cx9r-8cjr (Vulnerabilidad de 2015)
Este descubrimiento pone en evidencia la importancia de auditar no solo el código propio, sino también el de las dependencias utilizadas, especialmente en proyectos de código abierto que integran múltiples componentes mantenidos por distintas comunidades.
HEAP OVERFLOW (DESBORDAMIENTO DEL HEAP)
Un heap overflow es un tipo de vulnerabilidad que ocurre cuando un programa escribe más datos de los que debería en una zona especial de la memoria llamada heap. El heap es una parte de la memoria que los programas usan para almacenar información de forma dinámica mientras se están ejecutando.
Imaginá que tenés una caja (la memoria reservada) para guardar objetos, pero empezás a meter más cosas de las que entran. Al hacerlo, invadís el espacio de otras cajas cercanas, corrompiendo información que no deberías tocar. Eso es, en términos simples, un heap overflow.
Cuando un atacante logra controlar qué datos se escriben y cuánto se escriben, puede llegar a sobrescribir estructuras internas importantes del programa, como punteros o funciones. Esto puede permitirle hacer que el programa se comporte de forma inesperada, crashee, o peor aún: ejecute código malicioso.

LA VULNERABILIDAD
La vulnerabilidad esta en el siguiente archivo: https://github.com/obsproject/obs-studio/pull/10993/files?diff=split&w=0#diff-aabe4760f02f236d8e1ed8d90869d2bd432417a2ad4f9dab6d735d43f8189702
La función gif_next_LZW() es parte de la lógica encargada de decodificar imágenes GIF comprimidas con el algoritmo LZW (Lempel-Ziv-Welch). Este algoritmo usa una tabla de códigos que se va llenando dinámicamente mientras se decodifica la imagen.
El problema surgía porque la implementación no validaba correctamente los límites del buffer al construir y acceder a esa tabla. Específicamente:
- A medida que se procesaban los códigos del GIF, la función podía escribir más allá del espacio asignado para la tabla de descompresión.
- Esta tabla estaba alojada en el heap, así que al escribir fuera de sus límites, se corrompía memoria adyacente.
- No había controles suficientes para evitar que un archivo GIF malicioso provocara este desborde.
ANALIZANDO EL PARCHE
Si analizamos el parche podemos ver que gif->stack puede tener un tamaño menor que la cantidad de chunks que se descomprimen. Como no existe esta validación el programa sigue copiando datos sobreescribiendo datos en memoria.
La corrección principal de este parche consistió en validar correctamente los límites de la tabla de códigos LZW antes de escribir en ella.:
Se agregó una verificación explícita para asegurarse de que no se superara el tamaño máximo permitido al agregar nuevas entradas a la tabla.También se revisaron otras partes del código relacionadas para evitar escrituras fuera de los límites en funciones auxiliares conectadas con la decodificación LZW.En algunos casos, se añadieron mensajes de error para abortar el procesamiento del GIF si detectaban condiciones anómalas o inconsistencias en los datos comprimidos.
Este tipo de bug suele pasar desapercibido durante años, sobre todo en funciones muy específicas como el manejo de GIFs. Pero cuando se ejecutan en un contexto como OBS, que carga archivos sin demasiada validación por parte del usuario, se vuelven peligrosos.

VIDEO
👉 Si te resultó útil esta información, te invito a ver el video relacionado y dejar tu comentario. Tu participación ayuda a que este contenido llegue a más personas y siga creciendo esta comunidad.



