HeadlinesBriefing HeadlinesBriefing.com

Cómo hallé en Google una vulnerabilidad RCE de 90.000 $

Hacker News •
×

Un investigador de seguridad encontró una vulnerabilidad de ejecución remota de código en los sitios de documentación para desarrolladores de Google. Al analizar el flujo OAuth compartido entre estos sitios, el investigador notó que el endpoint /oauth2authorize establecía una cookie de sesión de Flask inusualmente grande, de unos 1.200 bytes, muy por encima de lo que requieren un token CSRF y una URL de retorno. Las cookies de sesión de Flask están firmadas pero no cifradas, por lo que su contenido era legible por cualquiera que tuviera una.

Al decodificar la cookie, el investigador encontró un objeto serializado con pickle que contenía el client_id y el client_secret de OAuth de Google en texto plano. Descubrió que el client secret también servía como SECRET_KEY de Flask, lo que significa que el mismo valor almacenaba y verificaba la firma. Como la clave de firma estaba expuesta dentro de la propia cookie, el investigador pudo recalcular firmas válidas sin conexión y falsificar datos de sesión arbitrarios.

El endpoint de callback lee los datos del flujo OAuth desde la sesión y los pasa a pickle.loads. Con una sesión falsificada, un atacante podía suministrar una carga maliciosa de pickle, convirtiendo esto en una ruta de ejecución remota de código sin autenticación. El investigador verificó el problema de forma segura usando una carga que solo activaba time.sleep, evitando ejecutar comandos en los sistemas de producción de Google.

El hallazgo ilustra cómo almacenar secretos en datos de sesión del lado del cliente y deserializar datos pickle no confiables pueden combinarse hasta convertirse en una vulnerabilidad crítica. El error obtuvo una recompensa de 90.000 dólares.

Fuente: Hacker News · Resumido por HeadlinesBriefing