Tietoturvahälytys · Korkea
Node.js: HTTP/2- ja HTTPS-virheet mahdollistavat palvelimien kaatamisen ja muiden käyttäjien tietojen lukemisen
· 4 minuutin lukuaika · Centoculus Security Team
Tiedossa alkaen
Koskee: Node.js 22.x ennen 22.23.5, 24.x ennen 24.22.3, 26.x ennen 26.13.1. Myös tukiajan päättyneet linjat, kuten 20.x ja 25.x, ovat haavoittuvia eivätkä saa korjausta.
Mitä tapahtui
Node.js-projekti julkaisi 11. marraskuuta 2026 tietoturvapäivitykset kaikille kolmelle tuetulle julkaisulinjalleen. Korjatut versiot ovat 22.23.5, 24.22.3 ja 26.13.1. Ne korjaavat 16 haavoittuvuutta Node.js:ssä itsessään, ja seitsemän niistä on luokiteltu korkeiksi. Julkaisut päivittävät myös mukana tulevat riippuvuudet llhttp (22.x, 24.x, 26.x), undici (24.x, 26.x) ja sqlite (22.x, 24.x).
Tärkeimmät ongelmat liittyvät Node.js:n omaan palvelinkoodiin HTTP/2:lle, HTTPS:lle ja TLS:lle:
- HTTP/2-palvelimen kaatuminen (24.x ja 26.x): mikä tahansa tunnistautumaton asiakas voi pysäyttää Node.js-prosessin. Palvelin tarvitsee vain oletusarvoisen HTTP/2-asetuksen ja käsittelijän, joka vastaa ennen kuin pyynnön runko on kokonaan saapunut. Projekti kuvaa tätä käyttäytymistä tyypilliseksi. Hyökkäys onnistuu sekä TLS-yhteyden että salaamattoman yhteyden kautta.
- HTTP/2:n muistin paljastuminen (kaikki kolme linjaa): palvelin voi lähettää asiakkaalle osia muististaan, mukaan lukien muille yhteyksille tarkoitettuja vastauksia. Versiosta 24.22.0 ja 26.9.0 alkaen asiakas voi käynnistää tämän itse. Vanhemmissa 22.x-, 24.x- ja 26.x-versioissa se voi tapahtua, kun palvelin sulkee streamin kesken vastauksen, esimerkiksi idle-aikakatkaisun jälkeen.
- HTTPS:n muistin paljastuminen (kaikki kolme linjaa): tunnistautumaton asiakas voi lukea muistia muista yhteyksistä, "mukaan lukien TLS-yksityisavaimet ja muiden käyttäjien pyynnöt", projektin mukaan. Tämä edellyttää käsittelijää, joka kutsuu
res.flushHeaders()-metodia ennen kuin pyynnön runko on päättynyt ja kutsuu myöhemminres.end()-metodia datalla. Vuotanutta muistia lukeakseen hyökkääjä tarvitsee lisäksi reitin, joka palauttaa tai tallentaa pyynnön rungon. - HTTP/2:n resurssien ehtyminen (kaikki kolme linjaa): asiakas voi saada minkä tahansa oletusarvoisen HTTP/2-palvelimen pitämään muistia ja tiedostokuvaajia pysyvästi varattuina.
- HTTP/2:n tiedostojen tarjoaminen (24.x ja 26.x): asiakas voi vioittaa palvelimen muistia, kun palvelin tarjoaa tiedostoja metodeilla
stream.respondWithFile()taistream.respondWithFD(). Kaikilla kolmella linjalla tällaisten latausten peruuttaminen voi myös kaataa palvelimen (luokitus keskitaso). - TLS-palvelimen kaatuminen (24.x ja 26.x): asiakas voi kaataa TLS-palvelimen, joka käyttää koukkuja
SNICallback,OCSPRequest,newSessiontairesumeSession, tai metodiaserver.addContext(). - TLS-asiakassertifikaatin ohitus (kaikki kolme linjaa): joillakin palvelimilla tiettyihin isäntänimiin sovelletaan tiukempia asiakassertifikaatin sääntöjä. Näillä palvelimilla toiseen isäntänimeen hyväksytty asiakas voi vaihtaa tiukemmalle isäntänimelle TLS 1.2 -uudelleenneuvottelun aikana ilman, että täyttää sen sääntöjä.
Tiedotteen mukaan näitä virheitä ei ole hyödynnetty hyökkäyksissä.
Kenelle asia kuuluu
- Palvelimet, joilla on käytössä Node.js 22.x ennen 22.23.5, 24.x ennen 24.22.3 tai 26.x ennen 26.13.1.
- Tukiajan päättyneet linjat, mukaan lukien 20.x ja 25.x, eivät saa korjausta tässä julkaisussa. Projektin mukaan tällaiset versiot ovat aina haavoittuvia.
- Palvelinpuolen vakavat ongelmat koskevat vain tilanteita, joissa Node.js-prosessi itse hyväksyy HTTP/2-, HTTPS- tai TLS-yhteyksiä. Esimerkkejä ovat sisäänrakennetut moduulit
node:http2,node:httpsjanode:tlstai kehykset, jotka käyttävät niitä TLS:n tai HTTP/2:n päätepisteenä. - Tavalliset HTTP-palvelimet, jotka on rakennettu moduulilla
node:http, eivät ole haavoittuvia HTTPS-muistivuodon osalta. - HTTP/2-kaatuminen koskee vain linjoja 24.x ja 26.x, ei 22.x:ää.
Tilanne on paljon pienempi riski, jos käänteisvälityspalvelin, kuten nginx, Apache, HAProxy tai kuormituksen tasaaja, päättää TLS:n ja HTTP/2:n ja Node.js saa siltä vain tavallista HTTP/1.1-liikennettä. Päivitä silti, sillä julkaisu sisältää myös muita korjauksia ja riippuvuuspäivityksiä.
Mitä kannattaa tehdä nyt
- Etsi kaikki Node.js-asennukset. Muista järjestelmäpaketit, versionhallintatyökalut (nvm, n, Volta), Docker-imaget, CI-ajurit ja hallintapaneelit, jotka asentavat oman Node.js:n.
- Päivitä oman linjasi korjattuun versioon: 22.23.5, 24.22.3 tai 26.13.1. Jos käytät jakelun tai toimittajan paketteja (esimerkiksi NodeSourcea tai Linux-jakelusi paketteja), asenna päivitys heti, kun paketinlähde tarjoaa nämä versiot.
- Siirry pois tukiajan päättyneistä versioista. Jos käytät vielä 20.x-, 25.x- tai vanhempaa versiota, siirry tuettuun linjaan. Tiedote ei listaa ohitusta palvelimille, joita ei voi päivittää.
- Rakenna konttien imagot uudelleen päivitetyllä Node.js-pohjaimella ja ota ne uudelleen käyttöön. Pelkkä isäntäjärjestelmän päivitys ei muuta konttien sisällä olevaa Node.js:ää.
- Käynnistä kaikki Node.js-prosessit uudelleen (systemd-yksiköt, PM2, Docker-kontit jne.), jotta uusi ajoympäristö latautuu. Tarkista sen jälkeen, että sovelluksesi vastaavat normaalisti.
- Harkitse salaisuuksien uusimista, jos olit altistunut. Tiedote ei kerro, pitäisikö palvelimien, jotka täyttivät HTTPS-muistivuodon ehdot, vaihtaa TLS-avaimet tai muut salaisuudet. Jos jokin Node.js-HTTPS-palvelimistasi täytti nämä ehdot ja oli saavutettavissa internetistä, harkitse sen TLS-varmenteen ja -avaimen uusimista.
Miten tarkistat, oletko haavoittuva
- Aja
node -vjokaisella palvelimella ja jokaisen kontin sisällä (docker exec <kontti> node -v). Versiot, jotka ovat alle 22.23.5, 24.22.3 tai 26.13.1 omalla linjallaan, tai mikä tahansa tukiajan päättynyt linja, kuten 20.x tai 25.x, ovat haavoittuvia. - PM2:lla komennot
pm2 listjapm2 show <sovellus>näyttävät, mitä Node.js-binääriä ja -versiota kukin sovellus käyttää. - Tarkista, päättävätkö sovelluksesi HTTP/2:n tai TLS:n itse Node.js:ssä: etsi koodista merkkijonot
http2.createSecureServer,http2.createServer,https.createServer,tls.createServer,respondWithFile,respondWithFD,SNICallbackjaaddContext. - Tarkista prosessienhallinnan ja järjestelmälokien avulla odottamattomat Node.js-uudelleenkäynnistykset tai kaatumiset. Toistuvat HTTP/2-palvelimen keskeytykset voivat viitata yritykseen käynnistää kaatuminen.
Lähteet
Aiheeseen liittyvät artikkelit
Hälytykset ·
Citrix NetScaler ADC ja Gateway: kriittiset muistivirheet mahdollistavat palvelunestohyökkäyksen (CVE-2026-120868)
Citrix on korjannut yhdeksän kriittistä muistivirhettä NetScaler ADC:ssa ja NetScaler Gatewayssa, jotka voivat johtaa palvelunestoon. CVE-2026-120868 koskee jokaista käyttöönottoa. Päivitä versioon 14.1-73.57, 13.1-64.39 tai vastaaviin FIPS-buildeihin.
Hälytykset ·
PostgreSQL CVE-2026-6460: tietokantakäyttäjät, jotka voivat luoda objekteja, voivat suorittaa koodia palvelimella
PostgreSQL 18.7, 17.12, 16.16, 15.20 ja 14.25 korjaavat CVE-2026-6460:n ja 51 muuta haavoittuvuutta. Tietokantakäyttäjä, joka voi luoda objekteja, voi suorittaa koodia sen käyttöjärjestelmäkäyttäjän nimissä, joka ajaa PostgreSQL:ää. Päivitä palvelin ja C-laajennukset yhdessä.
Hälytykset ·
Mittwald-hosting hyökätty MCP-palvelimen kautta: hallintapalvelut offline, asiakkaiden kannattaa tarkistaa
Web-hosting-palveluntarjoaja Mittwald on hätätilassa MCP-palvelimen kautta tehdyn hyökkäyksen jälkeen. Asiakkaiden hallintapalvelut on kytketty pois päältä. Luota vain virallisiin tiedotteisiin ja valmistaudu tarkistamaan tilisi ja verkkosivustosi.