Сфарміраваны выпуск асноўнай галіны nginx 1.31.0, у рамках якой працягваецца развіццё новых магчымасцяў, а таксама выпуск раўналежна падтрымоўванай стабільнай галінкі nginx 1.30.1, у якую ўносяцца толькі змены, злучаныя з ухіленнем сур'ёзных памылак і ўразлівасцяў. У абнаўленнях ухілена 6 уразлівасцяў, найболей небяспечная з якіх дапушчае выдаленае выкананне кода праз адпраўку адмыслова аформленага HTTP-запыту. Для angie і freenginx на момант напісання навіны выпраўлення не апублікаваны.
Уразлівасць (CVE-2026-42945), якой прысвоены крытычны ўзровень небяспекі, выклікана перапаўненнем буфера ў модулі ngx_http_rewrite_module, якое можа быць эксплуатавана для выканання кода з правамі працоўнага працэсу nginx праз адпраўку HTTP-запыту са адмыслова аформленым URI. Праблема выяўляецца ў канфігурацыях з дырэктывай "rewrite", у якой у рэгулярных выразах выкарыстоўваюцца падстаноўкі масак пры дапамозе неназваных зменных (напрыклад, $1 і $2), пры ўмове, што ў які замяняе радку маецца знак "?". Прыклад уразлівай канструкцыі: rewrite ^/users/([0-9]+)/profile/(.*)$ /profile.php?id=$1&tab=$2 last;
Выразы з найменнымі падстаноўкамі ўразлівасці не схільныя. Напрыклад, уразлівасць не закранае канструкцыі: rewrite ^/users/(? [0-9]+)/profile/(? .*)$ /profile.php?id=$user_id&tab=$section last;
Уразлівасць прысутнічае пачынаючы з версіі 0.6.27, выпушчанай у сакавіку 2008 гады. Чыннікам з'яўлення ўразлівасці стала тое, што буфер вылучаўся з разлікам, што ў яго будуць запісаныя неэкранаваныя дадзеныя, а фактычна капіяваліся дадзеныя пасля выканання экранавання спецзнакаў, памер якіх быў больш, бо кожны знак "+", "%" і "&" кадзіраваўся не адным, а трыма байтамі. Падобнае разузгадненне ўзнікала з-за таго, што пры наяўнасці ў правіле rewrite сімвала "?" выстаўляўся сцяг "e->is_args", пры якім уключалася экранаванне, але вылучэнне буфера ажыццяўлялася пры скінутым сцягу, пры якім экранаванне не ўжывалася.
Іншыя ўразлівасці:
- CVE-2026-42926 - магчымасць падстаноўкі дадзеных атакавалага ў праксуемы запыт пры выкарыстанні ў наладах дырэктывы "proxy_set_body" і звароце да бэкэнду праз HTTP/2 (proxy_http_version=2).
- CVE-2026-40701 - зварот да памяці пасля яе вызвалення (use-after-free) у модулі ngx_http_ssl_module, якое ўзнікае пры апрацоўцы адказаў ад DNS-сервера ў канфігурацыях з дырэктывай "ssl_ocsp".
- CVE-2026-42946 - чытанне з вобласці за межамі буфера ў модулях ngx_http_uwsgi_module і ngx_http_scgi_module, якое ўзнікае пры апрацоўцы спецыяльна аформленага адказу. Праблема можа прывесці да ўцечкі змесціва памяці працоўнага працэсу або яго аварыйнага завяршэння.
- CVE-2026-42934 - чытанне з вобласці за межамі буфера ў працоўным працэсе, якое ўзнікае пры апрацоўцы адказаў з дэкадаваннем з кадоўкі UTF-8 пры выкарыстанні дырэктывы «charset_map». Праблема можа прывесці да ўцечкі змесціва памяці працоўнага працэсу або яго аварыйнага завяршэння.
- CVE-2026-40460 - уразлівасць у рэалізацыі пратаколу HTTP/3, якая дапускае спуфінг IP-адрасы для абыходу аўтарызацыі або абмежаванняў.
Паляпшэнні, дададзеныя ў выпуску nginx 1.31.0:
- У склад уключаны модуль ngx_http_tunnel_module, які рэалізуе магчымасць працы ў выглядзе проксі («forward proxy»), які перанакіроўвае запыты на іншы сервер пры звароце кліента пры дапамозе метаду HTTP/1.1 CONNECT. Магчыма настройка аўтэнтыфікацыі звароту да проксі, выкарыстоўваючы дырэктывы "auth_basic", "satisfy" і "auth_delay".
- У блок "upstream" дададзена дырэктыва "least_time", якая ўключае метад балансавання нагрузкі з перадачай запыту серверу з найменшымі сярэднім часам адказу і найменшай колькасцю актыўных злучэнняў.
- У модуль "stream_proxy" дададзена дырэктыва "proxy_ssl_alpn" для задання спісу пратаколаў, дапушчальных у пашырэнні ALPN пры падлучэнні да праксіраванага сервера. Напрыклад: "proxy_ssl_alpn h2 http/1.1".
- Забяспечана адхіленне запытаў па пратаколах HTTP/2 і HTTP/3, якія ўключаюць загалоўкі "Connection", "Proxy-Connection", "Keep-Alive", "Transfer-Encoding", "Upgrade".
- У модулі ngx_http_dav_module забяспечана адхіленне запытаў COPY і MOVE з паўтаральнымі зыходным і мэтавым рэсурсам або ўкладзенымі калекцыямі.
- Узровень лагавання памылак SSL "invalid alert", "record layer failure" і "SSL alert number N" паніжаны з "crit" да "info".
- У скрыпт configure дададзены параметр "-without-http_upstream_sticky_module" для адключэння зборкі модуля http_upstream_sticky_module (параметр "-without-http_upstream_sticky" абвешчаны састарэлым).
Дадатак: Даступны эксплоит для RCE-уразлівасці ў ngx_http_rewrite_module.
Крыніца: opennet.ru
