Fastly entre bastidores: una muestra de nuestro proceso de corrección de vulnerabilidades

No dejan de impresionarnos las formas en que los ingenieros usan nuestra plataforma para desarrollar cosas increíbles, diseñar servicios excepcionales e incluso comentarnos los errores que hemos cometido. Un ejemplo de esto último fue el informe que el investigador Emil Lerner envió a nuestro programa de divulgación de vulnerabilidades tras descubrir un error muy interesante. 

Creemos que esta es la ocasión perfecta para revelarte algunos datos clave para que conozcas mejor nuestro proceso de corrección de vulnerabilidades y al equipo encargado de ello. A fin de cuentas, nadie mejor para contarte qué funciona —y por qué— que nosotros mismos, ¿verdad? 

En este artículo, te contamos qué vulnerabilidad descubrió Emil Lerner, cómo desplegamos la corrección pertinente en tan solo siete días tras el triaje y cómo fuimos capaces de hacerlo tan rápido, frente al plazo medio de corrección que recomienda la Agencia de Ciberseguridad y Seguridad de Infraestructuras de los EE. UU., que es de 30 días.

Antes de entrar en detalle, nos gustaría subrayar que no tenemos pruebas ni razones para creer que nadie haya aprovechado esta vulnerabilidad para atacar a los clientes.

El equipo

Uno de los objetivos del equipo de corrección de vulnerabilidades, que forma parte de nuestro departamento de seguridad, es comprender las debilidades detectadas y ayudar a los equipos internos de ingeniería a solucionarlas. Colaboramos estrechamente con ellos y varios investigadores de seguridad para supervisar y corregir vulnerabilidades. Nos centramos en estudiar algunos aspectos que, por la metodología que manejamos, nos permiten trabajar con exhaustividad y rapidez. 

En primer lugar, tratamos de mejorar constantemente nuestro proceso de triaje de vulnerabilidades, en el que intentamos comprender y reproducir los problemas notificados en un plazo de cinco días laborables, lo que supone la mitad del plazo de triaje medio.  

En segundo lugar, nos aseguramos de que nuestro equipo de ingeniería tenga tanta información como sea posible para iniciar el proceso de depuración. Para ello, optimizamos la forma de comunicación del informe y, por ejemplo, damos al equipo un método para reproducir rápidamente el problema, a ser posible de forma automatizada. 

Por último, procuramos contratar a las mentes más brillantes en el campo de la ingeniería (por cierto, ahora mismo tenemos vacantes). En consecuencia, contamos con un equipo excelente, con amplia experiencia en programación de sistemas y en protocolos de red. Los procesos y flujos de trabajo que usan les permiten revisar el informe y tomar medidas rápidamente, tal y como sucedió con esta vulnerabilidad en particular.

La vulnerabilidad

La vulnerabilidad, notificada el 23 de noviembre de 2021, está relacionada con la implementación de HTTP/3 desde el servidor en H2O/QUIC, servidor HTTP optimizado que es compatible con los protocolos HTTP/1, HTTP/2 y HTTP/3. De hecho, somos colaboradores clave en QUIC, proyecto de código abierto que se ejecuta con HTTP/3. Se descubrió que, si el servidor H2O recibe un conjunto de marcos QUIC en un orden determinado, se puede engañar a H2O para que trate la memoria no inicializada como marcos HTTP/3 recibidos. 

Si, en esas circunstancias, se utiliza H2O como proxy inverso, un atacante puede aprovechar esta vulnerabilidad para hacer que el proxy inverso envíe el estado interno de H2O a los servidores backend controlados por el atacante o un tercero, como se detalla en el diagrama a continuación. El atacante no controla lo que vuelca exactamente el servidor H2O; pueden ser las peticiones de otros usuarios, las respuestas a estas o cualquier otro elemento presente en la memoria previamente liberada de H2O.

Esta vulnerabilidad, que se conoce como «CVE-2021-43848», solo habría podido afectar a usuarios que hubieran habilitado HTTP/3 en Fastly (y solo a servicios que se ejecutaran con HTTP/3). Reiteramos que no tenemos pruebas ni razones para creer que esta vulnerabilidad haya sido aprovechada para atacar a ninguno de esos clientes.

Blog Inside Fastly a look at our vulnerability remediation process

El proceso de corrección

Nuestro equipo de triaje inicial recibió y aceptó el informe, y lo reenvió a nuestro equipo de triaje de vulnerabilidades para someterlo a una revisión técnica más detallada. 

Tras revisar el informe y reproducir el error, nuestros ingenieros identificaron el problema, crearon la corrección y la desplegaron en un entorno de pruebas en un día. Descubrimos que, cuando se actualiza el búfer de recepción del protocolo HTTP/3 de H2O a través de h2o_http3_update_recvbuf en lib/http3/common.c, la memoria que está en uso para el búfer no se borra antes de ser reutilizada si el tamaño de este es inferior al nuevo. 

El equipo de triaje de vulnerabilidades volvió a realizar pruebas y confirmó que el problema se corregía con los cambios de código. Una vez confirmada la corrección, se inició y completó el proceso de despliegue. Puedes consultar la línea cronológica completa a continuación.

  • 23 de noviembre de 2021: un investigador notifica el problema.

  • 24 de noviembre de 2021: el equipo encargado del triaje inicial recibe la notificación.

  • 29 de noviembre de 2021: el equipo de triaje de vulnerabilidades completa el estudio de la notificación y confirma que el problema se puede reproducir.

  • 1 de diciembre de 2021: el equipo de ingeniería crea una corrección y un entorno de pruebas, y el equipo de triaje de vulnerabilidades realiza nuevas pruebas para revisar la corrección. El equipo de triaje de vulnerabilidades se comunica con el investigador para que este confirme que la modificación de código propuesta corrige la vulnerabilidad.

  • 8 de diciembre de 2021: finaliza el despliegue de la corrección.

Conclusión

Al final, el informe mereció una recompensa y, como puede verse en la cronología anterior, todo el proceso duró apenas dos semanas. Es un plazo del que estamos muy orgullosos y que fue posible gracias al excelente trabajo realizado por este equipo. Tenemos que agradecer a Emil Lerner que nos enviara ese informe. Aquí nos lo cuenta él mismo.

Sandra Escandor-O’Keefe
Offensive Security Engineer
Fecha de publicación:

4 min de lectura

Comparte esta entrada
Sandra Escandor-O’Keefe
Offensive Security Engineer

Como Offensive Security Engineer en Fastly, Sandra Escandor-O’Keefe se encarga de revisar la seguridad de la infraestructura central, investiga vulnerabilidades de seguridad y analiza el diseño de la red para garantizar que Fastly pueda proporcionar un edge seguro a las mayores plataformas online del mundo. Además, en colaboración con la Universidad de California Davis, elaboró e impartió el curso de Coursera «Identifying Security Vulnerabilities». Antes de entrar en Fastly, Sandra trabajó como desarrolladora de software y acumuló experiencia en el desarrollo a nivel de sistema. Es licenciada en Ingeniería Eléctrica y Biomédica por la McMaster University.

¿List@ para empezar?

Ponte en contacto o crea una cuenta.