Se ha formado el lanzamiento de la rama principal de nginx 1.25.4, en la cual continúa el desarrollo de nuevas capacidades. En la rama estable 1.24.x, que se mantiene paralelamente, solo se implementan cambios relacionados con la corrección de errores graves y vulnerabilidades. En el futuro, sobre la base de la rama principal 1.25.x, se formará una rama estable 1.26. El código del proyecto está escrito en lenguaje C y se distribuye bajo la licencia BSD.
En la nueva versión se han solucionado dos vulnerabilidades en el módulo experimental http_v3_module (deshabilitado por defecto), que proporciona soporte para el protocolo HTTP/3, el cual utiliza el protocolo QUIC como transporte para HTTP/2. La primera vulnerabilidad (CVE-2024-24989) es causada por la desreferencia de un puntero nulo, y la segunda (CVE-2024-24990) por un acceso a la memoria después de su liberación. En la lista de cambios se afirma que ambas vulnerabilidades solo pueden provocar el cierre inesperado del proceso de trabajo al manejar sesiones QUIC formateadas específicamente, pero para la segunda vulnerabilidad, aparentemente, no se realizó un análisis de consecuencias más graves.
Además de corregir vulnerabilidades, en la nueva versión también se han realizado mejoras generales y correcciones en la implementación de HTTP/3, así como se han solucionado errores relacionados con fugas de sockets, errores de sockets o cierres inesperados al usar AIO. Se ha resuelto el problema del cierre prematuro de conexiones con operaciones AIO no completadas durante el cierre suave de procesos de trabajo antiguos. Se ha eliminado el cierre inesperado al redirigir errores con el código 415 mediante la directiva error_page, en el caso de usar SSL-proxy y la directiva image_filter.
Además, hace unos días se lanzó njs 0.8.4, el intérprete de JavaScript para de un servidor web nginx. El intérprete njs implementa los estándares de ECMAScript y permite expandir las capacidades de nginx para procesar las solicitudes mediante scripts en la configuración. Los scripts pueden utilizarse en el archivo de configuración para definir lógica de procesamiento de solicitudes ampliada, formar configuraciones, generar dinámicamente respuestas, modificar solicitudes/respuestas o crear rápidamente simulacros para resolver problemas en aplicaciones web. En la nueva versión se ha señalado solo la corrección de errores.
Fuente: opennet.ru
