Los desarrolladores de la plataforma JavaScript de servidor Node.js han publicado correcciones en las versiones 12.22.4, 14.17.4 y 16.6.0, en las que se ha mitigado parcialmente una vulnerabilidad (CVE-2021-22930) en el módulo http2 (cliente HTTP/2.0), que permite iniciar un fallo en el proceso o potencialmente ejecutar código arbitrario en el sistema al acceder a un host controlado por un atacante.
El problema es causado por el acceso a una área de memoria ya liberada al cerrar la conexión después de recibir tramas RST_STREAM (reinicio del flujo) para flujos que están realizando operaciones de lectura intensivas que bloquean la escritura. En caso de recibir un marco RST_STREAM sin un código de error, el módulo http2 llama adicionalmente al procedimiento de limpieza de los datos ya recibidos, desde donde el manejador de cierre se llama nuevamente para un flujo ya cerrado, lo que lleva a la doble liberación de estructuras de datos.
En la discusión sobre la corrección se señala que el problema no se ha solucionado completamente y sigue apareciendo bajo condiciones ligeramente modificadas en las actualizaciones publicadas. El análisis mostró que la corrección solo cierra uno de los casos particulares: cuando el flujo está en modo de lectura, pero no toma en cuenta otros estados del flujo (lectura y pausa, pausa y algunos tipos de escritura).
Fuente: opennet.ru
