Предупреждение за сигурността · Висока
Node.js: слабости в HTTP/2 и HTTPS позволяват на клиенти да сринат сървъри и да четат данни на други потребители
· 1 минута четене · Centoculus Security Team
Известна от
Засегнати: Node.js 22.x преди 22.23.5, 24.x преди 24.22.3, 26.x преди 26.13.1. Линии с изтекъл срок на поддръжка, като 20.x и 25.x, също са засегнати и не получават корекция.
Какво се случи
На 11 ноември 2026 г. проектът Node.js публикува издания с корекции за сигурност за трите поддържани линии. Поправените версии са 22.23.5, 24.22.3 и 26.13.1. Те отстраняват 16 уязвимости в самия Node.js, а седем от тях са оценени като високи. Изданията също актуализират вградените зависимости llhttp (22.x, 24.x, 26.x), undici (24.x, 26.x) и sqlite (22.x, 24.x).
Най-важните проблеми са в сървърния код, който Node.js предоставя за HTTP/2, HTTPS и TLS:
- Срив на HTTP/2 сървър (24.x и 26.x): всеки неудостоверен клиент може да накара процеса на Node.js да спре. За целта сървърът се нуждае само от стандартната HTTP/2 конфигурация и обработчик, който отговаря, преди тялото на заявката да е пристигнало напълно. Проектът описва това поведение като типично. Атаката работи както през TLS, така и през некриптирани връзки.
- Разкриване на памет при HTTP/2 (всички три линии): сървър може да изпрати на клиента части от паметта си, включително отговори, предназначени за други връзки. От версии 24.22.0 и 26.9.0 нататък клиентът може да предизвика това сам. При версии 22.x и по-стари 24.x и 26.x сървърът може да предизвика това, когато затвори поток по средата на отговор, например след изтичане на време за неактивност.
- Разкриване на памет при HTTPS (всички три линии): неудостоверен клиент може да прочете памет от други връзки, "включително TLS частни ключове и заявки на други потребители", според проекта. Необходим е обработчик, който извиква
res.flushHeaders(), преди тялото на заявката да е приключило, и по-късно извикваres.end()с данни. За да прочете изтеклата памет, нападателят се нуждае и от маршрут, който връща или съхранява тяло на заявка. - Изчерпване на ресурси при HTTP/2 (всички три линии): клиент може да накара всеки HTTP/2 сървър със стандартна конфигурация да задържа памет и файлови дескриптори за постоянно.
- Сервиране на файлове през HTTP/2 (24.x и 26.x): клиент може да повреди паметта на сървъра, когато той сервира файлове чрез
stream.respondWithFile()илиstream.respondWithFD(). На всички три линии прекратяването на такива изтегляния може също да срине сървъра (оценено като средно). - Срив на TLS сървър (24.x и 26.x): клиент може да срине TLS сървър, който използва куките
SNICallback,OCSPRequest,newSessionилиresumeSession, илиserver.addContext(). - Заобикаляне на проверката на клиентски сертификат в TLS (всички три линии): някои сървъри прилагат по-строги правила за клиентски сертификати към определени имена на хостове. На такива сървъри клиент, одобрен за друго име на хост, може да премине към по-строго при повторно договаряне на TLS 1.2, без да изпълни неговите правила.
Съветът не съобщава за атаки, използващи тези слабости.
Кой е засегнат
- Сървъри с Node.js 22.x преди 22.23.5, 24.x преди 24.22.3 или 26.x преди 26.13.1.
- Линии с изтекъл срок на поддръжка, включително 20.x и 25.x, не получават корекция в това издание. Проектът посочва, че такива версии винаги са засегнати.
- Сериозните проблеми на страна на сървъра засягат само случаите, в които процес на Node.js приема HTTP/2, HTTPS или TLS връзки директно. Примери са вградените модули
node:http2,node:httpsилиnode:tls, или рамки, които ги използват за терминиране на TLS или HTTP/2. - Обикновени HTTP сървъри, изградени с
node:http, не са засегнати от разкриването на памет при HTTPS. - Срivът при HTTP/2 засяга само линиите 24.x и 26.x, а не 22.x.
Съществено по-малко сте изложени, ако обратен прокси сървър като nginx, Apache, HAProxy или балансьор на натоварването терминира TLS и HTTP/2, а Node.js получава от него само обикновен HTTP/1.1. Въпреки това Ви препоръчваме да актуализирате, тъй като изданието съдържа и други корекции и актуализации на зависимости.
Какво да направите сега
- Открийте всички инсталации на Node.js. Не пропускайте системни пакети, мениджъри на версии (nvm, n, Volta), Docker образи, CI изпълнители и хостинг панели, които доставят собствен Node.js.
- Актуализирайте до поправената версия за Вашата линия: 22.23.5, 24.22.3 или 26.13.1. Ако използвате пакети от дистрибуция или от доставчик (например NodeSource или дистрибуцията на Linux), инсталирайте актуализацията веднага щом източникът на пакети предложи тези версии.
- Преминете от версии с изтекъл срок на поддръжка. Ако все още използвате 20.x, 25.x или по-стари, надстройте до поддържана линия. Съветът не посочва заобиколно решение за сървъри, които не могат да се актуализират.
- Пресъздайте контейнерните образи с актуализиран базов образ на Node.js и ги разгърнете отново. Актуализирането само на хоста не променя Node.js в контейнерите.
- Рестартирайте всички процеси на Node.js (systemd единици, PM2, Docker контейнери и др.), за да се зареди новата среда за изпълнение. След това проверете дали приложенията Ви работят нормално.
- Обмислете подмяна на тайни данни, ако сте били изложени. Съветът не уточнява дали сървъри, отговарящи на условията за разкриване на памет при HTTPS, трябва да сменят TLS ключове или други тайни данни. Ако Ваш HTTPS сървър с Node.js е отговарял на тези условия и е бил достъпен от интернет, обмислете подновяване на TLS сертификата и ключа.
Как да проверите дали сте засегнати
- Изпълнете
node -vна всеки сървър и вътре във всеки контейнер (docker exec <container> node -v). Версии под 22.23.5, 24.22.3 или 26.13.1 в съответната линия или коя да е линия с изтекъл срок, като 20.x или 25.x, са засегнати. - С PM2 командите
pm2 listиpm2 show <app>показват кой двоичен файл и коя версия на Node.js използва всяко приложение. - Проверете дали Вашите приложения терминират HTTP/2 или TLS директно в Node.js: потърсете в кода
http2.createSecureServer,http2.createServer,https.createServer,tls.createServer,respondWithFile,respondWithFD,SNICallbackиaddContext. - Проверете мениджъра на процеси и системните журнали за неочаквани рестартирания или срivове на Node.js. Повтарящи се прекъсвания на HTTP/2 сървър може да сочат за опити за предизвикване на срив.
Източници
Свързани публикации
Предупреждения ·
Citrix NetScaler ADC и Gateway: критични грешки в паметта позволяват отказ на услуга (CVE-2026-120868)
Citrix е отстранила девет критични грешки в паметта в NetScaler ADC и NetScaler Gateway, които могат да доведат до отказ на услуга. CVE-2026-120868 засяга всяко внедряване. Актуализирайте до 14.1-73.57, 13.1-64.39 или съответстващите FIPS версии.
Предупреждения ·
PostgreSQL CVE-2026-6460: потребители на базата данни, които могат да създават обекти, могат да изпълняват код на сървъра
PostgreSQL 18.7, 17.12, 16.16, 15.20 и 14.25 отстраняват CVE-2026-6460 и още 51 други уязвимости. Потребител на базата данни, който може да създава обекти, може да изпълнява код с правата на потребителя на операционната система, под който работи PostgreSQL. Актуализирайте сървъра и C разширения...
Предупреждения ·
Хостинг доставчикът Mittwald е атакуван чрез MCP сървър: административните услуги са офлайн, клиентите трябва да проверят
Уеб хостинг доставчикът Mittwald е в режим на извънредно положение след атака през MCP сървър. Административните услуги за клиенти са изключени. Вие трябва да разчитате само на официалните съобщения и да се подготвите да проверите профилите и уебсайтовете си.