Κρίσιμη ευπάθεια στο protobuf.js επιτρέπει την εκτέλεση κακόβουλου κώδικα JavaScript
Τι ακριβώς συμβαίνει
Σύμφωνα με report της εταιρείας εφαρμοσμένης ασφάλειας Endor Labs, η RCE ευπάθεια στο protobuf.js προκαλείται από μη ασφαλή δυναμική δημιουργία κώδικα. Συγκεκριμένα, η βιβλιοθήκη κατασκευάζει JavaScript functions από protobuf schemas μέσω string concatenation και τις εκτελεί μέσω του Function() constructor, αλλά αδυνατεί να επικυρώσει τα schema-derived identifiers. Αυτό επιτρέπει σε επιτιθέμενους να εισάγουν αυθαίρετο κώδικα στις παραγόμενες functions, εκμεταλλευόμενοι ονόματα μηνυμάτων και άλλα schema-derived πεδία.
Σε εκδόσεις πριν από τις 8.0.1 και 7.5.5, οι επιτιθέμενοι μπορούν να εισάγουν αυθαίρετο κώδικα στα πεδία type των protobuf definitions, ο οποίος εκτελείται κατά τη διαδικασία decoding αντικειμένων. Η ευπάθεια έχει λάβει CVSS score 9.4 (Critical) με CWE-94: Improper Control of Generation of Code.
Γιατί είναι τόσο επικίνδυνη
Για την εκμετάλλευση αρκεί ο επιτιθέμενος να τροφοδοτήσει ένα κακόβουλο αρχείο ρυθμίσεων (protobuf schema) στην εφαρμογή-στόχο — μια προϋπόθεση που ακούγεται στενή αλλά είναι συνηθισμένη στην πράξη, καθώς εφαρμογές φορτώνουν τακτικά τέτοια αρχεία από shared registries, partner integrations ή third-party servers. Μόλις ένα «δηλητηριασμένο» αρχείο βρεθεί στη μνήμη, η εκμετάλλευση γίνεται τετριμμένη: το πρώτο μήνυμα που επεξεργάζεται η εφαρμογή ενεργοποιεί το payload, χωρίς authentication ή user interaction.
Το πακέτο αποτελεί εξάρτηση του @grpc/proto-loader, των Firebase SDKs, των Google Cloud client libraries, καθώς και πλήθους εργαλείων observability και data-plane tooling. Η Endor Labs προειδοποιεί ότι «η εκμετάλλευση είναι απλή», όπως αποδεικνύει και ο minimal PoC που συνοδεύει το advisory — ωστόσο δεν έχει παρατηρηθεί ενεργή εκμετάλλευση στη φύση μέχρι στιγμής.
Timeline ανακάλυψης και patches
Η ευπάθεια αναφέρθηκε από τον ερευνητή της Endor Labs Cristian Staicu στις 2 Μαρτίου, και οι maintainers του protobuf.js κυκλοφόρησαν patch στο GitHub στις 11 Μαρτίου. Τα fixes στα npm packages έγιναν διαθέσιμα στις 4 Απριλίου για τον κλάδο 8.x και στις 15 Απριλίου για τον κλάδο 7.x. Το ζήτημα δεν έχει λάβει ακόμα επίσημο CVE αριθμό και παρακολουθείται ως GHSA-xq3m-2v4x-88gg, με βάση τον identifier που του έχει αποδώσει το GitHub.
Τι πρέπει να κάνετε
Η ευπάθεια επηρεάζει εκδόσεις protobuf.js 8.0.0/7.5.4 και παλαιότερες· η Endor Labs συνιστά αναβάθμιση στις 8.0.1 και 7.5.5 που αντιμετωπίζουν το πρόβλημα. Το patch εκκαθαρίζει τα type names αφαιρώντας μη αλφαριθμητικούς χαρακτήρες, αποτρέποντας έτσι τον επιτιθέμενο από το να «κλείσει» τη συνθετική function.
Παράλληλα με την αναβάθμιση, η Endor Labs συνιστά στους διαχειριστές συστημάτων να ελέγχουν τις transitive dependencies, να αντιμετωπίζουν το schema-loading ως μη έμπιστη είσοδο, και να προτιμούν precompiled/static schemas στην παραγωγή. Το συγκεκριμένο bug αποτελεί υπενθύμιση ότι τα schema αρχεία που οι developers συνηθίζουν να αντιγράφουν και να εισάγουν αποτελούν ολοένα και μεγαλύτερη επιφάνεια επίθεσης.
Πηγές
BleepingComputer – Critical flaw in Protobuf library enables JavaScript code execution Endor Labs – The Dangers of Reusing Protobuf Definitions: Critical Code Execution in protobuf.js Vulnerability-Lookup – CVE-2026-41242 (GHSA-xq3m-2v4x-88gg)
320
