Το έργο Node.js κυκλοφόρησε μια κρίσιμη ενημέρωση ασφαλείας στις 24 Μαρτίου 2026, για τον κλάδο Long-Term Support (LTS), ορίζοντας την έκδοση 20.20.2 «Iron» ως έκδοση ασφαλείας.
Η ενημέρωση επιλύει επτά παρακολουθούμενα τρωτά σημεία που καλύπτουν τον χειρισμό σφαλμάτων TLS, τον έλεγχο ροής HTTP/2, τις διαρροές κρυπτογραφικού χρονισμού, τις παρακάμψεις μοντέλων αδειών και μια αδυναμία κατακερματισμού του πίνακα V8, πολλά από τα οποία μπορούν να ενεργοποιηθούν απομακρυσμένα χωρίς έλεγχο ταυτότητας.
Το κρίσιμο ελάττωμα επιστροφής SNIC TLS ενεργοποιεί τη συντριβή απομακρυσμένης διαδικασίας
Το πιο σοβαρό ζήτημα σε αυτήν την παρτίδα είναι το CVE-2026-21637 (αξιολόγηση Υψηλή), μια ελλιπής διόρθωση μιας προηγούμενης ευπάθειας TLS από το ίδιο αναγνωριστικό. Φεύγει ένα ελάττωμα στον χειρισμό σφαλμάτων TLS του Node.js SNICallback Οι επικλήσεις δεν προστατεύονται από σύγχρονες εξαιρέσεις, ενώ αντίστοιχες επανακλήσεις ALPN και PSK είχαν ήδη αντιμετωπιστεί νωρίτερα.
Όταν ένας πελάτης TLS στέλνει ένα απροσδόκητο servername τιμή, η εξαίρεση που ρίχνεται παρακάμπτει όλους τους χειριστές σφαλμάτων TLS και διαδίδεται ως εξαίρεση που δεν έχει εντοπιστεί, διακόπτοντας τη διαδικασία Node.js εντελώς.
Η επιδιόρθωση, που συνέβαλε ο Matteo Collina, αναδιπλώνεται SNICallback επικλήσεις σε α try/catch φραγμός. Οποιοσδήποτε διακομιστής TLS λειτουργεί σε εκδόσεις 20.x, 22.x, 24.x ή 25.x όπου SNICallback μπορεί να ρίξει επηρεάζεται.
Σφάλμα ελέγχου ροής HTTP/2 Ενεργοποιεί διαρροή μνήμης και DoS
Το CVE-2026-21714 (Μεσαίο) επηρεάζει τους διακομιστές Node.js HTTP/2 και περιλαμβάνει μη χειρισμένους NGHTTP2_ERR_FLOW_CONTROL κωδικούς σφαλμάτων. Ένας κακόβουλος πελάτης μπορεί να στείλει λανθασμένη μορφή WINDOW_UPDATE καρέ στη ροή 0, προκαλώντας διαρροή μνήμης στη διαδικασία διακομιστή μέσω επαναλαμβανόμενων συνδέσεων.
Αν δεν αντιμετωπιστεί, αυτό οδηγεί σε εξάντληση των πόρων και τελικά σε άρνηση παροχής υπηρεσιών. Το RafaelGSS συνέταξε την επιδιόρθωση, προσθέτοντας ρητό χειρισμό για αυτόν τον κωδικό σφάλματος nghttp2 στο επίπεδο πηγής Node.js.
V8 HashDoS μέσω Σύγκρουσης ευρετηρίου Array
Το CVE-2026-21717 (Μεσαίο) στοχεύει τον εσωτερικό μηχανισμό κατακερματισμού συμβολοσειρών του V8, ο οποίος κατακερματίζει τις συμβολοσειρές που μοιάζουν με ακέραιο αριθμό στις αριθμητικές τους τιμές — καθιστώντας τις συγκρούσεις κατακερματισμού ασήμαντα προβλέψιμες.
Δημιουργώντας ένα ωφέλιμο φορτίο που αναγκάζει πολλές τέτοιες συγκρούσεις, συνηθέστερα μέσω του JSON.parse() σε είσοδο ελεγχόμενη από τον εισβολέα, ένας αντίπαλος μπορεί να υποβαθμίσει σημαντικά την απόδοση της διαδικασίας Node.js σε μια κλασική επίθεση HashDoS. Αυτή η επιδιόρθωση, που συνεισέφερε ο Joyee Cheung, εφαρμόστηκε στα επίπεδα βάθους, κατασκευής και δοκιμής.
Cryptographic Timing Oracle στην επαλήθευση HMAC
Το CVE-2026-21713 (Medium) εισάγει ένα πλευρικό κανάλι χρονισμού στην επαλήθευση HMAC Web Cryptography Node.js. Το ελάττωμα προκύπτει από τη χρήση ενός μη σταθερού χρόνου memcmp() σύγκριση κατά την επικύρωση υπογραφών HMAC που παρέχονται από τον χρήστη, διαρροή πληροφοριών χρονισμού ανάλογα με τον αριθμό των byte που ταιριάζουν.
Υπό συνθήκες μέτρησης υψηλής ανάλυσης, αυτό μπορεί να χρησιμεύσει ως χρησμός χρονισμού για να συναχθούν τιμές HMAC. Ο Filip Skokan το έλυσε αυτό αντικαθιστώντας τη σύγκριση με ένα πρωτόγονο που είναι ασφαλές για χρονισμό που είναι ήδη διαθέσιμο στη βάση κωδικών.
Παράκαμψη μοντέλου αδειών
Επιδιορθώθηκαν επίσης δύο παρακάμψεις μοντέλων αδειών χαμηλής σοβαρότητας. Το CVE-2026-21715 επιτρέπει την εκτέλεση κώδικα κάτω από --permission με περιορισμένη --allow-fs-read για χρήση fs.realpathSync.native() για να αποκαλύψει την ύπαρξη αρχείου και να επιλύσει διαδρομές συμβολικής σύνδεσης εκτός επιτρεπόμενων καταλόγων.
Το CVE-2026-21716 επεκτείνει την κάλυψη σε lib/fs/promisesτο οποίο ομοίως δεν είχε επιβολή άδειας. Και τα δύο διορθώθηκαν από τη RafaelGSS. Επιπλέον, το CVE-2026-21710 αντιμετωπίζει ένα πρωτότυπο διάνυσμα ρύπανσης κεφαλίδας HTTP χρησιμοποιώντας ένα αντικείμενο μηδενικού πρωτοτύπου για headersDistinct και trailersDistinct χωράφια.
Περίληψη ευπάθειας
| CVE | Αυστηρότητα | Συστατικό | Σύγκρουση |
|---|---|---|---|
| CVE-2026-21637 | Ψηλά | TLS / SNICallback | Συντριβή απομακρυσμένης διαδικασίας |
| CVE-2026-21717 | Μέσον | V8 / ανάλυση JSON | Εξάντληση HashDoS / CPU |
| CVE-2026-21713 | Μέσον | Web Crypto / HMAC | Χρονισμός χρονισμού / πλαστογραφία MAC |
| CVE-2026-21714 | Μέσον | HTTP/2 / nghttp2 | Διαρροή μνήμης / DoS |
| CVE-2026-21710 | Μέσον | Κεφαλίδες HTTP | Πρωτότυπη ρύπανση |
| CVE-2026-21716 | Χαμηλός | Μοντέλο άδειας (fs/promises) | Αποκάλυψη διαδρομής συστήματος αρχείων |
| CVE-2026-21715 | Χαμηλός | Μοντέλο άδειας (realpath) | Αποκάλυψη διαδρομής συστήματος αρχείων |
Οι προγραμματιστές και οι διαχειριστές συστήματος προτρέπονται να αναβαθμίσουν άμεσα στις επιδιορθωμένες εκδόσεις: v20.20.2, v22.22.2, v24.14.1ή v25.8.2.
Δεδομένου ότι το CVE-2026-21637 δεν απαιτεί έλεγχο ταυτότητας και προκαλεί άμεσα τον τερματισμό της διαδικασίας, τα περιβάλλοντα που φιλοξενούν διακομιστές TLS προσβάσιμους στο κοινό θα πρέπει να αντιμετωπίζουν αυτήν την αναβάθμιση ως κρίσιμη προτεραιότητα.
Προγράμματα εγκατάστασης και δυαδικά αρχεία είναι διαθέσιμα σε πλατφόρμες Windows, macOS, Linux (x64, ARM, PPC, s390x) και AIX μέσω του επίσημου καναλιού διανομής Node.js.
