El 13 de enero de 2022, los usuarios de Firefox de todo el mundo comenzaron a informar problemas de conexión. El navegador no pudo conectarse a ningún sitio y los usuarios informaron bloqueos y fallas.

diagrama atascado de mozilla firefox

Mozilla publicó una explicación técnica detallada del incidente en el sitio web de la empresa. Hacks de Mozilla sitio web el 2 de febrero de 2022.

La organización recibió informes sobre Firefox colgado durante los intentos de conexión el 13 de enero de 2022. En ese momento, vio que los informes de fallas estaban aumentando, pero no tenía mucha información sobre la causa del problema.

Los ingenieros de Mozilla descubrieron que una solicitud de red estaba provocando bloqueos para los usuarios de Firefox. Los ingenieros observaron cambios o actualizaciones recientes, pero no encontraron ninguno que pudiera causar el problema que experimentaron los usuarios.

Mozilla sospechó que el problema podría haber sido causado por un cambio de configuración «invisible» reciente por parte de uno de los proveedores de la nube que utiliza para equilibrar la carga. La organización utiliza la infraestructura de varios proveedores para servicios como informes de fallos, telemetría, actualización o gestión de certificados.

La configuración no se cambió en la inspección, pero los ingenieros notaron que el servicio de telemetría estaba sirviendo conexiones HTTP/3, lo que no había hecho antes. Mozilla deshabilitó HTTP/3 y los usuarios finalmente pudieron usar Firefox nuevamente para conectarse a los servicios. La configuración de HTTP/3 en el proveedor de la nube se configuró con el valor automático.

Mozilla investigó el problema con más detalle después de solucionar el problema más urgente. Todas las conexiones HTTP/3 pasan por la pila de red Necko, pero los componentes de Rust usan una biblioteca llamada viaduct para llamar a Necko.

Necko comprueba si hay un encabezado presente y, si no lo está, lo agregará. HTTP/3 se basa en el encabezado para determinar el tamaño de la solicitud. Los cheques de Necko distinguen entre mayúsculas y minúsculas. Sucedió ahora que las solicitudes que pasaban por viaducto eran puestas en minúsculas automáticamente por la biblioteca; esto significaba que cualquier solicitud a través del viaducto que agregara un encabezado de longitud de contenido pasaba a Necko pero tenía problemas con el código HTTP/3.

El único componente de Rust que utiliza la pila de red y agrega un encabezado de longitud de contenido es el componente de telemetría del navegador web Firefox. Mozilla señala que esta fue la razón por la que deshabilitar la telemetría en Firefox resolvió el problema del lado del usuario. Deshabilitar HTTP/3 también lo resolvió.

El problema causaría un bucle infinito, que bloquearía toda la comunicación de red adicional porque «todas las solicitudes de red pasan por un hilo de socket», según Mozilla.

Mozilla afirma que ha aprendido varias lecciones del problema. Está investigando todos los balanceadores de carga y revisando sus configuraciones para poder evitar futuros problemas como ese. El despliegue de HTTP/3 en Google, que era el proveedor de la nube en cuestión, no se anunció. Por último, Mozilla planea ejecutar más pruebas del sistema en el futuro con «diferentes versiones de HTTP».

Palabras de cierre

Mozilla reaccionó rápidamente a la situación de emergencia y la resolvió. Puede haber dañado la reputación y algunos usuarios pueden haber cambiado a un navegador diferente en el proceso. Mozilla debería preguntarse si es una buena idea confiar en la infraestructura de la nube operada por su mayor rival en el espacio de los navegadores. Algunos usuarios de Firefox también pueden sugerir que la organización observe el manejo de las solicitudes por parte del navegador para asegurarse de que las innecesarias, por ejemplo, los informes de telemetría o los informes de fallas, nunca bloquearán las conexiones que el usuario intente realizar en el futuro.

Ahora tu: ¿Cuál es su opinión sobre el incidente?