Valve ha corregido una vulnerabilidad crítica en el cliente de Steam, que estuvo al acecho sin ser detectado durante al menos 10 años.
La vulnerabilidad afecta a todas las versiones de la plataforma de juego.
Tom Court, un investigador de seguridad proveniente de Context Information Security, descubrió el error y reveló sus hallazgos el jueves.
En una publicación de blog , el investigador dijo que, sin parchear, el error permite a los actores de amenazas realizar ataques de ejecución remota de código (RCE).
No fue sino hasta julio del año pasado cuando Valve agregó protecciones modernas de exploits ASLR a su código fuente de Steam. Sin embargo, esta adición aseguró que la vulnerabilidad solo causaría un bloqueo del cliente si se explota, a menos que una vulnerabilidad de fuga de información separada también estuviera activa en la cadena de exploits.
En este escenario, aún era posible un RCE completo y, teniendo en cuenta que Steam representa aproximadamente 15 millones de usuarios activos, existe un gran grupo de víctimas potenciales.
La falla de seguridad es un problema de corrupción de montón dentro de una de las bibliotecas del cliente Steam. Un aspecto del código que trata sobre el reensamblaje de datagramas fragmentados a partir de paquetes UDP recibidos podría activarse de forma remota y utilizarse para ejecutar código malicioso de forma remota.
El software Steam de Valve utiliza un protocolo personalizado, conocido como el «Steam Protocol», que se entrega en la parte superior de UDP.
El protocolo registra la longitud del paquete y la longitud total del datagrama reensamblado; sin embargo, la vulnerabilidad fue causada por una simple falta de controles para garantizar que, para el primer paquete de un datagrama fragmentado, la longitud especificada fuera menor o igual que la longitud total del datagrama.
Todo lo que un atacante debía hacer era enviar un paquete UDP malformado para activar el exploit.
«Esto significa que es posible suministrar un data_len más pequeño que packet_len y tener hasta 64kb de datos (debido al ancho de 2 bytes del campo packet_len) copiado en un buffer muy pequeño, lo que resulta en una corrupción de montón explotable,» Court dice. «Esto parece una simple supervisión, dado que el cheque estaba presente para todos los paquetes posteriores que llevan fragmentos del datagrama».
La vulnerabilidad se informó a Valve el 20 de febrero y se corrigió en una versión beta menos de 12 horas después. Este parche fue empujado a una liberación estable el 22 de marzo.
La fecha de divulgación pública tardía debería haber dado a los usuarios suficiente tiempo para actualizar sus compilaciones y evitar que los atacantes utilicen el error en sus filas, lo que podría haber sido un incidente de seguridad catastrófico para Valve.
«Este fue un error muy simple, relativamente fácil de explotar debido a la falta de protecciones de exploits modernas», dice Court. «El código vulnerable probablemente era muy viejo, pero como estaba en buen estado de funcionamiento, los desarrolladores probablemente no vieron ninguna razón para acercarse o actualizar sus scripts de compilación».
«La lección aquí es que, como desarrollador, es importante incluir periódicamente código antiguo y sistemas de compilación en sus revisiones para garantizar que se ajusten a los estándares de seguridad modernos, incluso si la funcionalidad real del código no ha cambiado», agregó el investigador.
Fuente: Zdnet.com