Ειδοποίηση ασφαλείας · Υψηλή
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, μπορεί να συμβεί όταν ο διακομιστής κλείνει ένα stream στη μέση μιας απάντησης, για παράδειγμα μετά από timeout αδράνειας.
- Διαρροή μνήμης HTTPS (και οι τρεις γραμμές): ένας μη πιστοποιημένος πελάτης μπορεί να διαβάσει μνήμη από άλλες συνδέσεις, «συμπεριλαμβανομένων ιδιωτικών κλειδιών TLS και αιτημάτων άλλων χρηστών», σύμφωνα με το έργο. Απαιτείται χειριστής που καλεί
res.flushHeaders()πριν τελειώσει το σώμα του αιτήματος και στη συνέχεια καλείres.end()με δεδομένα. Για να διαβάσει τη διαρρευσμένη μνήμη, ο επιτιθέμενος χρειάζεται επίσης μια διαδρομή που στέλνει πίσω ή αποθηκεύει ένα σώμα αιτήματος. - Εξάντληση πόρων HTTP/2 (και οι τρεις γραμμές): ένας πελάτης μπορεί να κάνει οποιονδήποτε προεπιλεγμένο διακομιστή HTTP/2 να κρατά μόνιμα μνήμη και file descriptors.
- Σερβίρισμα αρχείων HTTP/2 (24.x και 26.x): ένας πελάτης μπορεί να αλλοιώσει τη μνήμη του διακομιστή όταν ο διακομιστής σερβίρει αρχεία με
stream.respondWithFile()ήstream.respondWithFD(). Και στις τρεις γραμμές, η ακύρωση τέτοιων λήψεων μπορεί επίσης να καταρρίψει τον διακομιστή (βαθμολογία μέτρια). - Κατάρρευση διακομιστή TLS (24.x και 26.x): ένας πελάτης μπορεί να καταρρίψει διακομιστή TLS που χρησιμοποιεί τα hooks
SNICallback,OCSPRequest,newSessionήresumeSession, ή τοserver.addContext(). - Παράκαμψη πιστοποιητικού πελάτη TLS (και οι τρεις γραμμές): ορισμένοι διακομιστές εφαρμόζουν αυστηρότερους κανόνες πιστοποιητικών πελάτη για συγκεκριμένα hostnames. Σε αυτούς, ένας πελάτης εγκεκριμένος για άλλο hostname μπορεί να μεταβεί σε αυστηρότερο κατά τη διαπραγμάτευση εκ νέου του 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 απευθείας. Παραδείγματα είναι τα ενσωματωμένα modules
node:http2,node:httpsήnode:tls, ή frameworks που τα χρησιμοποιούν για τερματισμό TLS ή HTTP/2. - Οι απλοί HTTP διακομιστές που χτίζονται με
node:httpδεν επηρεάζονται από τη διαρροή μνήμης HTTPS. - Η κατάρρευση HTTP/2 επηρεάζει μόνο τις γραμμές 24.x και 26.x, όχι την 22.x.
Η έκθεσή σας είναι πολύ μικρότερη αν ένας reverse proxy, όπως το nginx, το Apache, το HAProxy ή ένας load balancer, τερματίζει το TLS και το HTTP/2, και το Node.js λαμβάνει από αυτόν μόνο απλό HTTP/1.1. Πρέπει παρ' όλα αυτά να κάνετε ενημέρωση, επειδή η έκδοση περιλαμβάνει και άλλες διορθώσεις και ενημερώσεις εξαρτήσεων.
Τι να κάνεις τώρα
- Βρες όλες τις εγκαταστάσεις Node.js. Θυμήσου τα πακέτα συστήματος, τους διαχειριστές εκδόσεων (nvm, n, Volta), τα Docker images, τους CI runners και τους πίνακες φιλοξενίας που έχουν δικό τους Node.js.
- Ενημέρωσε στη διορθωμένη έκδοση της γραμμής σου: 22.23.5, 24.22.3 ή 26.13.1. Αν χρησιμοποιείς πακέτα διανομής ή προμηθευτή (για παράδειγμα NodeSource ή τη διανομή Linux σου), εγκατάστησε την ενημέρωση μόλις η πηγή πακέτων σου προσφέρει αυτές τις εκδόσεις.
- Απομακρύνσου από εκδόσεις τέλους ζωής. Αν εξακολουθείς να τρέχεις 20.x, 25.x ή παλαιότερες, αναβάθμισε σε υποστηριζόμενη γραμμή. Η συμβουλή δεν αναφέρει παρακάμψη για διακομιστές που δεν μπορούν να ενημερωθούν.
- Ξαναχτίσε τα container images με ενημερωμένο βασικό image Node.js και ξανανέβασέ τα. Η ενημέρωση μόνο του host δεν αλλάζει το Node.js μέσα στα containers.
- Κάνε επανεκκίνηση όλων των διεργασιών Node.js (μονάδες systemd, PM2, Docker containers κ.λπ.) ώστε να φορτωθεί το νέο runtime. Έπειτα έλεγξε ότι οι εφαρμογές σου ανταποκρίνονται κανονικά.
- Σκέψου την ανανέωση μυστικών αν ήσουν εκτεθειμένος. Η συμβουλή δεν αναφέρει αν οι διακομιστές που πληρούσαν τις συνθήκες της διαρροής μνήμης HTTPS πρέπει να αντικαταστήσουν κλειδιά TLS ή άλλα μυστικά. Αν ένας δικός σου διακομιστής HTTPS με Node.js πληρούσε αυτές τις συνθήκες και ήταν προσβάσιμος από το internet, σκέψου την ανανέωση του πιστοποιητικού και του κλειδιού TLS.
Πώς να ελέγξεις αν επηρεάζεσαι
- Τρέξε
node -vσε κάθε διακομιστή και μέσα σε κάθε container (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. - Έλεγξε τον διαχειριστή διεργασιών και τα αρχεία καταγραφής του συστήματος για απρόσμενες επανεκκινήσεις ή καταρρεύσεις 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 builds.
Ειδοποιήσεις ·
PostgreSQL CVE-2026-6460: χρήστες βάσης που μπορούν να δημιουργούν αντικείμενα μπορούν να εκτελέσουν κώδικα στον διακομιστή
Οι εκδόσεις PostgreSQL 18.7, 17.12, 16.16, 15.20 και 14.25 διορθώνουν το CVE-2026-6460 και 51 άλλα ελαττώματα. Ένας χρήστης βάσης που μπορεί να δημιουργεί αντικείμενα μπορεί να εκτελέσει κώδικα ως ο χρήστης του λειτουργικού συστήματος που εκτελεί το PostgreSQL. Ενημέρωσε μαζί τον διακομιστή και...
Ειδοποιήσεις ·
Η φιλοξενία Mittwald δέχθηκε επίθεση μέσω διακομιστή MCP: οι υπηρεσίες διαχείρισης είναι εκτός λειτουργίας, οι πελάτες να ελέγξουν
Η εταιρεία φιλοξενίας ιστοσελίδων Mittwald βρίσκεται σε κατάσταση έκτακτης ανάγκης μετά από επίθεση μέσω ενός διακομιστή MCP. Οι υπηρεσίες διαχείρισης για τους πελάτες έχουν απενεργοποιηθεί. Βασίσου μόνο στις επίσημες ανακοινώσεις και ετοιμάσου να ελέγξεις τους λογαριασμούς και τις ιστοσελίδες...