- Πολλαπλές εκδόσεις του @7nohe/openapi-react-query-codegen στο npm παραβιάστηκαν, ενσωματώνοντας ένα εξελιγμένο φορτίο κακόβουλου λογισμικού που καταχράται τις ροές εργασίας που βασίζονται στο TanStack Query.
- Η επίθεση χρησιμοποίησε ένα escape sandbox του binding.gyp και προεγκαταστημένα scripts. για την εκτέλεση ενός πολυεπίπεδου κλέφτη JavaScript κατά την εγκατάσταση npm, ακόμη και χωρίς σαφή hooks κύκλου ζωής.
- Το ωφέλιμο φορτίο συγκέντρωσε ένα ευρύ φάσμα διαπιστευτηρίων προγραμματιστών και cloud (GitHub, npm, AWS, Azure, GCP, Vault, Kubernetes και άλλα) και τα διοχέτευσαν σε δημόσια αποθετήρια GitHub.
- Το σκουλήκι καταχράστηκε κλεμμένα tokens για να μολύνει επιπλέον πακέτα npm, PyPI, RubyGems και αποθετήρια GitHub., υπογραμμίζοντας τον ευρύτερο κίνδυνο της εφοδιαστικής αλυσίδας γύρω από τη δημοφιλή χρήση του TanStack Query npm.
Στα τέλη Αυγούστου 2026, ερευνητές ασφαλείας αποκάλυψαν ένα Στοχευμένη επίθεση στην εφοδιαστική αλυσίδα που συνδέεται με το οικοσύστημα npm TanStack Query μέσω μιας δημοφιλούς γεννήτριας κώδικα OpenAPI. Το περιστατικό επικεντρώνεται στο πακέτο @7nohe/openapi-react-query-codegen, ένα εργαλείο που δημιουργεί αυτόματα άγκιστρα ασφαλείας τύπου για το TanStack Query απευθείας από σχήματα OpenAPI και το οποίο έχει δει περισσότερες από 150,000 εβδομαδιαίες λήψεις στο npm.
Αντί να επιτεθούν οι ίδιοι στις βασικές βιβλιοθήκες TanStack Query, οι επιτιθέμενοι έθεσε σε κίνδυνο τα περιβάλλοντα εργαλεία στα οποία βασίζονται πολλές ομάδες για την παραγωγή hooks TanStack Query , εναποθέτοντας ένα σύνθετο φορτίο κακόβουλου λογισμικού σε πολλαπλές εκδόσεις της γεννήτριας. Επειδή αυτά τα hooks συνδέονται απευθείας στις βάσεις κώδικα παραγωγής React και TypeScript, ο αντίκτυπος εκτείνεται πολύ πέρα από ένα μόνο πακέτο, αγγίζοντας οποιοδήποτε αγωγό CI ή μηχάνημα προγραμματιστή που εγκατέστησε τις μολυσμένες εκδόσεις.
Πώς η επίθεση καταχράστηκε μια γεννήτρια κώδικα TanStack Query στο npm
Η βιβλιοθήκη που επηρεάστηκε, @7nohe/openapi-react-query-codegen, χρησιμοποιείται ευρέως για την κατασκευή δομών TanStack Query hook layers από συμβάσεις OpenAPI, γλιτώνοντας τις ομάδες από την επαναλαμβανόμενη λογική ανάκτησης με το χέρι. Σε διάστημα περίπου 20 λεπτών, ένας εισβολέας προώθησε δέκα κακόβουλες εκδόσεις αυτού του πακέτου στο μητρώο npm, όλες με έγκυρες βεβαιώσεις προέλευσης που δημιουργήθηκαν μέσω του GitHub Actions.
Αυτές οι βεβαιώσεις, που συνήθως αποτελούν ισχυρό σήμα ακεραιότητας, κατέστησαν άνευ νοήματος επειδή η ίδια η ροή εργασίας GitHub Actions του έργου είχε παραβιαστεί . Εκμεταλλευόμενος ένα κενό ασφαλείας σε αυτήν τη ροή εργασίας, ο απειλητικός παράγοντας απέκτησε τη δυνατότητα να στέλνει builds που έχουν μολυνθεί με trojan, ενώ παράλληλα δημιουργούσε κρυπτογραφικά στοιχεία ότι προέρχονταν από τον «επίσημο» αγωγό. Το αντίστοιχο αποθετήριο GitHub φαίνεται να έχει αναληφθεί με την ίδια κίνηση, δίνοντας στον εισβολέα τον πλήρη έλεγχο της διαδικασίας έκδοσης.
Η καμπάνια αντικατοπτρίζει προηγούμενα περιστατικά στην εφοδιαστική αλυσίδα που συνδέονται με το npm, αλλά προσθέτει μια ανατροπή: στοχεύει συγκεκριμένα στο τομή εργαλείων OpenAPI και χρήσης ερωτημάτων TanStackΔεδομένου ότι η γεννήτρια εκπέμπει κώδικα React που εξαρτάται από @tanstack/react-query, κάθε οργανισμός που το έχει συνδέσει στην αυτοματοποιημένη δημιουργία προγραμμάτων-πελατών API διατρέχει τον κίνδυνο να έχει μεταφέρει το κακόβουλο λογισμικό σε build agents, CI runners ή φορητούς υπολογιστές προγραμματιστών.
Οι ερευνητές σημείωσαν επίσης ότι η επωνυμία του κακόβουλου λογισμικού —που αυτοαποκαλείται « Trinitite: Sponsored by Preview 2 Effects »—αντηχεί το θεατρικό στυλ προηγούμενων επιχειρήσεων που συνδέονται με το TeamPCP, αν και παραμένει ασαφές εάν πρόκειται για έργο αντιγράφων, για μια αποσχισθείσα ομάδα ή για έναν άσχετο ηθοποιό που δανείζεται την αισθητική.
Binding.gyp sandbox escape: εκκίνηση κακόβουλου λογισμικού κατά την εγκατάσταση npm
Μία από τις πιο ασυνήθιστες τεχνικές επιλογές σε αυτήν την επίθεση TanStack Query-adjacent είναι η κατάχρηση binding.gyp ως διάνυσμα εκτέλεσης κατά την εγκατάσταση npmΥπό κανονικές συνθήκες, binding.gyp περιγράφει τον τρόπο μεταγλώττισης των εγγενών πρόσθετων Node.js. Όταν το npm συναντά ένα τέτοιο αρχείο, καλεί node-gyp, η οποία με τη σειρά της αξιολογεί το conditions πεδίο χρησιμοποιώντας Python.
Οι κακόβουλες εκδοχές του @7nohe/openapi-react-query-codegen εκμεταλλευόμενοι αυτήν τη συμπεριφορά ενσωματώνοντας ένα Διαφυγή sandbox Python στο conditions μπλοκάρουνΑντί να περιέχει ακίνδυνη διαμόρφωση κατασκευής, το αρχείο διασχίζει την εσωτερική ιεραρχία κλάσεων της Python για να φτάσει στο catch_warnings τάξη, περιστρέφεται σε __builtins__, εισαγωγές os, και τελικά καλεί os.system για την εκτέλεση ενός φορτίου JavaScript με το Node.
Μόλις αφαιρεθεί η συσκότιση, η συνθήκη καταλήγει σε μία μόνο εντολή: node 3FWCvzduYZg.js εκτελείται αυτόματα κατά την εγκατάστασηΤα υπόλοιπα binding.gyp Το περιεχόμενο είναι ουσιαστικά ένα προπέτασμα καπνού: το δηλωμένο όνομα στόχου είναι άνευ νοήματος, ο τύπος είναι κωδικοποιημένος σε δεκαεξαδικό επίπεδο noneκαι δεν πραγματοποιείται πραγματική εγγενής μεταγλώττιση.
Δεν βασίζονταν όλες οι μολυσμένες κυκλοφορίες αποκλειστικά σε αυτό το κόλπο. Δύο ετικέτες προέκδοσης που χρησιμοποιούνται συμβατικά preinstall σενάρια αντί για, ένα που καλεί ένα τοπικό αρχείο nu.js και ένα άλλο που κατεβάζει το runtime του Bun μέσω wget διοχετεύεται σε bash πριν ξεκινήσει ένα σενάριο με αυθάδεις όνομα is_it_this_simple.jsΟι μεταγενέστερες εκδόσεις διπλασιάστηκαν, συνδυάζοντας το binding.gyp εκμεταλλευτείτε με σαφήνεια "preinstall": "node 3FWCvzduYZg.js" είσοδος σε package.json για να μεγιστοποιηθούν οι πιθανότητες να διακινηθεί το ωφέλιμο φορτίο.
Ένα πολυεπίπεδο ωφέλιμο φορτίο JavaScript που έχει σχεδιαστεί για να αποφεύγει τα sandboxes
Στο κέντρο της παραβιασμένης γεννήτριας ερωτημάτων TanStack βρίσκεται 3FWCvzduYZg.js, ένα αρχείο μίας γραμμής με μέγεθος περίπου 5.4 MB, τοποθετημένο στον ριζικό κατάλογο του πακέτου npm. Αυτό το σενάριο είναι σε μεγάλο βαθμό ασαφές, χρησιμοποιώντας πολλαπλά στάδια κρυπτογράφησης για να επιβραδύνει την επιθεώρηση και να αποτρέψει τα εργαλεία στατικής ανάλυσης.
Το εξωτερικό στρώμα είναι ένα γιγαντιαίος ακέραιος πίνακας αποκρυπτογραφήθηκε μέσω XOR με σταθερό κλειδί, το οποίο αποκαλύπτει κώδικα που κατεβάζει σιωπηλά το περιβάλλον εκτέλεσης Bun σε έναν προσωρινό κατάλογο (με ονόματα όπως trinnyyyy-XXXXX στον προσωρινό φάκελο συστήματος). Στη συνέχεια, το Bun χρησιμοποιείται για την εκτέλεση του επόμενου κρυπτογραφημένου τμήματος, το οποίο αποθηκεύεται ως δεδομένα που προστατεύονται από AES-128-GCM και είναι ενσωματωμένα στο σενάριο.
Μόλις αποκρυπτογραφήθηκε και απεμπλοκοποιήθηκε πλήρως, οι αναλυτές βρήκαν ένα εσωτερικό ωφέλιμο φορτίο περίπου 800 KB JavaScript που λειτουργεί ως κλέφτης διαπιστευτηρίων, αυτοδιαδιδόμενο σκουλήκι και καταστροφικό βοηθητικό πρόγραμμα . Αυτό το εσωτερικό σενάριο εφαρμόζει ένα προσαρμοσμένο κρυπτογράφημα ανακατεμένου πίνακα που τοποθετείται πάνω από γνωστούς μετασχηματισμούς obfuscator.io, σηματοδοτώντας για άλλη μια φορά ότι οι συγγραφείς στόχευαν συγκεκριμένα στην αντίσταση στην αυτοματοποιημένη αντίστροφη μηχανική.
Πριν προκαλέσει οποιαδήποτε πραγματική ζημιά, το κακόβουλο λογισμικό εκτελεί μια σειρά ελέγχων περιβάλλοντος που έχουν σχεδιαστεί για να αποφεύγουν τους ερευνητές ασφαλείας και τους αυτοματοποιημένους σαρωτέςΤερματίζει σιωπηλά εάν ανιχνεύσει ρωσικές τοπικές ρυθμίσεις συστήματος, κοινά εργαλεία EDR από CrowdStrike, SentinelOne ή Carbon Black, γνωστούς καταλόγους sandbox που χρησιμοποιούνται από προϊόντα σάρωσης εφοδιαστικής αλυσίδας, ψεύτικα μυστικά προθέματα (όπως AKIAFAKE ή decoy npm tokens), ή ονόματα οργανισμών GitHub που σχετίζονται με demos έρευνας ασφαλείας. Αναζητά επίσης την παρουσία του εργαλείου StepSecurity harden-runner, υποχωρώντας εάν δει αυτήν την σκληρυμένη διαμόρφωση CI.
Τι προσπαθεί να κλέψει το κακόβουλο λογισμικό από τους χρήστες του TanStack Query και όχι μόνο
Μόλις πληρούνται οι συνθήκες εκτέλεσης, το ωφέλιμο φορτίο αρχίζει να συλλέγει συστηματικά ένα ευρύ φάσμα διαπιστευτηρίων που υπάρχουν συνήθως στις σύγχρονες ροές εργασίας που βασίζονται σε JavaScript και TanStack Query . Η εστίαση δεν είναι στο ίδιο το front-end framework, αλλά στην υποδομή cloud και προγραμματιστών με την οποία συνήθως επικοινωνούν οι πελάτες TanStack Query.
Η πρόσβαση στο GitHub είναι ένας πρωταρχικός στόχος. Το κακόβουλο λογισμικό αναζητά τόσο κλασικά προσωπικά διακριτικά πρόσβασης όσο και νεότερα λεπτομερή διακριτικά σε μεταβλητές περιβάλλοντος και τοποθεσίες συστήματος αρχείων. Στους εκτελεστές GitHub Actions, επιχειρεί να αποκτήσει ένα διακριτικό OIDC χρησιμοποιώντας το πρότυπο ACTIONS_ID_TOKEN_REQUEST_TOKEN και τη σχετική διεύθυνση URL, αξιοποιώντας τον ίδιο μηχανισμό που χρησιμοποιούν οι νόμιμες ροές εργασίας για βραχύβια διαπιστευτήρια cloud.
Τα μητρώα πακέτων είναι μια άλλη βασική πηγή δεδομένων. Το σενάριο διαβάζει αρχεία διαμόρφωσης npm όπως ~/.npmrc, σάρωση για διακριτικά κομιστή και επικύρωσή τους σε σχέση με το μητρώο npm whoami καταληκτικό σημείοΕφαρμόζει παρόμοια λογική για το PyPI της Python (αναζητώντας tokens που ξεκινούν με pypi-AgEIcHlwaS5vcmcCJ) και RubyGems (αναζητούν rubygems_ tokens), δίνοντας στους επιτιθέμενους πιθανή πρόσβαση σε ένα ευρύ διασυστημικό αποτύπωμα.
Η συλλογή διαπιστευτηρίων στο cloud είναι ακόμη πιο εκτεταμένη. Οι ανιχνευτές κακόβουλου λογισμικού Μεταβλητές περιβάλλοντος και αρχεία ρυθμίσεων που σχετίζονται με το AWS, η υπηρεσία μεταδεδομένων παρουσίας EC2 και τα τελικά σημεία μεταδεδομένων ECS, με τη χρήση sts:GetCallerIdentity καλεί για να επαληθεύσει ότι τυχόν ανακαλυφθέντα διαπιστευτήρια είναι έγκυρα πριν τα εξαγάγει. Επαναλαμβάνει το μοτίβο για Azure (αναγνωριστικά πελατών, μυστικά, διαχειριζόμενες ταυτότητες, ακόμη και Azure Key Vault) και για Google Cloud, έλεγχος λογαριασμού υπηρεσίας JSON, διακομιστές μεταδεδομένων και Secret Manager μόλις αποκτήσει ένα χρησιμοποιήσιμο διακριτικό.
Πέρα από τα μητρώα cloud και package, το σενάριο ερευνά τοπικούς δίσκους για πάνω από 150 διαφορετικά μοτίβα σφαιρών, συμπεριλαμβανομένων ιδιωτικών κλειδιών SSH, διαμορφώσεων Docker, .env αρχεία, αποθήκες διαπιστευτηρίων Git, καταλόγους κρυπτονομισμάτων, προγράμματα-πελάτες ανταλλαγής μηνυμάτων όπως το Signal ή το Telegram Desktop, διαμορφώσεις VPN, ακόμη και αρχεία διαμόρφωσης που συνδέονται με εργαλεία τεχνητής νοημοσύνης όπως το Claude. Αυτό το εύρος αντικατοπτρίζει την κατανόηση του τρόπου με τον οποίο συνήθως αναπτύσσονται και αναπτύσσονται εφαρμογές που υποστηρίζονται από TanStack Query: συχνά σε περιβάλλοντα όπου ένα μόνο μηχάνημα ή μια εργασία CI έχει ένα ευρύ φάσμα διαπιστευτηρίων για αποθετήρια, μητρώα και παρόχους cloud.
Αποδιήθηση μέσω αποθετηρίων GitHub και διάδοση τύπου σκουληκιού
Μόλις συλλεχθούν τα δεδομένα, το κακόβουλο λογισμικό υιοθετεί μια ασυνήθιστη προσέγγιση για την εξαγωγή τους. Αντί να δημοσιεύει σε έναν παραδοσιακό διακομιστή εντολών και ελέγχου, χρησιμοποιεί αποθετήρια GitHub ως δημόσια, κρυπτογραφημένα πλαίσια απόθεσης . Αυτό όχι μόνο συνδυάζεται με την κανονική κίνηση προγραμματιστών, ειδικά σε οργανισμούς που χρησιμοποιούν πολλά ερωτήματα TanStack και οι οποίοι ήδη αλληλεπιδρούν συνεχώς με το GitHub, αλλά καθιστά και την κατάργηση πιο περίπλοκη.
Το σενάριο αναζητά πρώτα το ιστορικό δημόσιων υποβολών του GitHub για μηνύματα που ταιριάζουν με ένα πολύ συγκεκριμένο μοτίβο που κωδικοποιεί ένα κρυπτογραφημένο διακριτικό μέσα στο κείμενο του μηνύματος υποβολής. Στη συνέχεια, αποκρυπτογραφεί αυτό το διακριτικό για να ανακτήσει ένα διαπιστευτήριο GitHub, το οποίο χρησιμοποιεί για να δημιουργήσει ένα νέο αποθετήριο για κάθε θύμα . Αυτό σημαίνει ότι τα κλεμμένα δεδομένα από ένα μηχάνημα καταλήγουν να αποθηκεύονται σε έναν εντελώς διαφορετικό, ήδη παραβιασμένο λογαριασμό, θολώνοντας περαιτέρω την απόδοση.
Κάθε αποθετήριο εκδιήθησης ονομάζεται συνδυασμός τυχαίων ονομάτων χαρακτήρων του Touhou Project με ένα αριθμητικό επίθημα (για παράδειγμα, cirno-marisa-74291), και η περιγραφή του έχει οριστεί στο σλόγκαν του ίδιου του κακόβουλου λογισμικού, "Trinitite: Sponsored by Preview 2 Effects". Μέσα σε αυτά τα αποθετήρια, το σενάριο υποβάλλει αρχεία JSON με ονόματα όπως doubletrinnys-{counter}-{timestamp}.json μέσα σε ένα results/ φάκελο.
Η διάταξη JSON είναι απλή αλλά προσεκτικά κρυπτογραφημένη: περιέχει ένα envelope που περιέχει το μεγαλύτερο μέρος των κλεμμένων διαπιστευτηρίων και ένα key πεδίο με το κλειδί συνεδρίας κρυπτογραφημένο μέσω του δημόσιου κλειδιού RSA του εισβολέα. Αυτό διασφαλίζει ότι παρόλο που τα αρχεία είναι τεχνικά δημόσια, μόνο κάποιος που κατέχει το αντίστοιχο ιδιωτικό κλειδί μπορεί να διαβάσει το περιεχόμενο, αφήνοντας τους περιστασιακούς παρατηρητές και τα περισσότερα αυτοματοποιημένα προγράμματα ανίχνευσης ανίκανα να δουν τι είχε κλαπεί.
Παράλληλα, το κακόβουλο λογισμικό λειτουργεί ως σκουλήκι. Με έγκυρα διακριτικά npm, PyPI ή RubyGems, απαριθμεί κάθε πακέτο που ανήκει στον παραβιασμένο συντηρητή και δημοσιεύει νέες, μολυσμένες εκδόσειςΤο μοτίβο μόλυνσης ακολουθεί το ίδιο σχήμα που χρησιμοποιήθηκε στην αρχική παραβίαση της γεννήτριας κώδικα TanStack Query: έγχυση κακόβουλου binding.gyp, μπαίνοντας μέσα 3FWCvzduYZg.jsκαι προώθηση του πακέτου χρησιμοποιώντας το κλεμμένο διακριτικό δημοσίευσης. Επίσης, καταχράται τα κλεμμένα διακριτικά GitHub για να περιηγηθεί σε προσβάσιμα αποθετήρια, προσθέτοντας αρχεία διαμόρφωσης με backdooring κάτω από .vscode, .claude, .github/workflowsκαι παρόμοιοι κατάλογοι, όλοι κάτω από αβλαβή μηνύματα υποβολής όπως "chore: update dependencies".
Αυτή η συμπεριφορά που μοιάζει με σκουλήκι ενισχύει δραματικά την ακτίνα έκρηξης. Ένας μόνο οργανισμός που χρησιμοποιεί TanStack Query και @7nohe/openapi-react-query-codegen στην αλυσίδα CI του θα μπορούσε να εγκαταστήσει ακούσια κακόβουλο λογισμικό σε δεκάδες εσωτερικά πακέτα και αποθετήρια εάν ένας παραβιασμένος προγραμματιστής ή παράγοντας δημιουργίας δημοσιεύσει νέες εκδόσεις ενώ είναι μολυσμένος.
Δείκτες παραβίασης για χρήστες npm του TanStack Query
Για ομάδες που βασίζονται στο TanStack Query και σε σχετικά εργαλεία npm, κάποια συγκεκριμένα έχουν δημοσιευτεί δείκτες επιδείνωσης (ΔΕ) για να βοηθήσουν στον εντοπισμό της έκθεσηςΟι ακόλουθες εκδόσεις του @7nohe/openapi-react-query-codegen επιβεβαιώθηκε ότι περιέχουν το ωφέλιμο φορτίο Trinitite και θα πρέπει να αντιμετωπίζονται ως μη αξιόπιστα:
- 0.5.4 και 0.5.5
- 1.6.3 και 1.6.4
- 2.2.1 και 2.2.2
- 3.0.3 και 3.0.4
- Προκυκλοφορίες 0.0.0-365d4eb738d3146583431948d3ba6e27a32556be και 0.0.0-ec7876d6c917dad516ba69bbfafc948b834bf0ab
Οποιαδήποτε εμφάνιση ενός μεγάλου αρχείου JavaScript μίας γραμμής με το όνομα 3FWCvzduYZg.js Στον ριζικό κατάλογο ενός πακέτου npm, ο κωδικός "root" (ριζικός κατάλογος) είναι μια ισχυρή κόκκινη σημαία. Έχουν τεκμηριωθεί πολλαπλά hashes SHA-256 αυτού του αρχείουκαι οι διαχειριστές μπορούν να τα συγκρίνουν με αρχεία εγκατεστημένων πακέτων ή προσωρινά αποθηκευμένα tarball σε εσωτερικά μητρώα για να εντοπίσουν γνωστά κακά αντίγραφα.
Σε μολυσμένα συστήματα, προσωρινοί κατάλογοι με ονόματα trinnyyyy- Το πρόθεμα ακολουθούμενο από έξι τυχαίους αλφαριθμητικούς χαρακτήρες στον προσωρινό φάκελο του λειτουργικού συστήματος μπορεί επίσης να υποδεικνύει προηγούμενη εκτέλεση. Αυτοί οι κατάλογοι χρησιμοποιούνται όταν λήψη και προετοιμασία του χρόνου εκτέλεσης Bun που απαιτείται από το εσωτερικό ωφέλιμο φορτίο.
Πέρα από το συγκεκριμένο πακέτο γεννήτριας, οι οργανισμοί θα πρέπει να εξετάζουν τα δεδομένα ελέγχου npm, τα εσωτερικά mirrors πακέτων και τα αρχεία καταγραφής CI για απροσδόκητος binding.gyp αρχεία ή ξαφνική εμφάνιση preinstall άγκιστρα σε πακέτα που προηγουμένως δεν βασίζονταν σε εγγενή πρόσθετα ή σενάρια κύκλου ζωής. Στο πλαίσιο του TanStack Query, αυτό συνήθως σημαίνει προσεκτική εξέταση οποιουδήποτε εργαλείου δημιουργίας κώδικα ή ενσωμάτωσης OpenAPI που συνδέεται σε React, Vue ή άλλα frontends.
Τέλος, αξίζει να εξεταστεί η δραστηριότητα στο GitHub. Αποθετήρια με περιγραφές που ταιριάζουν με το "Trinitite: Sponsored by Preview 2 Effects" ή με results/doubletrinnys-*.json αρχεία και μηνύματα υποβολής όπως "meow meow meow", θα πρέπει να διερευνηθούν ως πιθανά τελικά σημεία εκδιήθησης που συνδέονται με παραβιασμένη χρήση του TanStack Query npm.
Τι μπορούν να κάνουν οι ομάδες που χρησιμοποιούν πολύ TanStack Query αυτή τη στιγμή
Για τους περισσότερους οργανισμούς, το πρώτο βήμα είναι να καταγραφή πού και πώς χρησιμοποιείται το TanStack Query και τα εργαλεία npm που το περιβάλλουνΕπειδή το παραβιασμένο πακέτο δημιουργεί άγκιστρα ειδικά για @tanstack/react-query, τείνει να εμφανίζεται σε έργα με ισχυρή τυποποίηση και αυτοματοποιημένους αγωγούς δημιουργίας πελατών OpenAPI, συχνά συνδεδεμένους απευθείας στο CI.
Οι ομάδες θα πρέπει να επαληθεύσουν εάν κάποια από τις αναφερόμενες κακόβουλες εκδόσεις του @7nohe/openapi-react-query-codegen ήταν πάντα παρόντες σε package-lock.json, pnpm-lock.yamlΤο HIFU, ή Υψηλής Έντασης Εστιασμένος Υπέρηχος, στοχεύει επίσης στο πρόσωπο και τον λαιμό. Προσφέρει θεραπεία σε γρήγορες εκπομπές, γεγονός που κάνει τις συνεδρίες θεραπείας συντομότερες. yarn.lock αρχεία ή μεταφέρονται σε δέντρα εξαρτήσεων μέσω μεταβατικών εξαρτήσεων. Ακόμα κι αν το πακέτο δεν είναι πλέον εγκατεστημένο, η ιστορική χρήση σε παράγοντες δημιουργίας μπορεί να απαιτεί βαθύτερη διερεύνηση.
Όπου υπάρχει υποψία για παραβίαση, μια παράλληλη προσπάθεια θα πρέπει να επικεντρωθεί εναλλάξ διακριτικά και διαπιστευτήρια που συλλέγονται από το κακόβουλο λογισμικόΑυτό περιλαμβάνει προσωπικά διακριτικά πρόσβασης GitHub, διακριτικά δημοσίευσης npm, κλειδιά πρόσβασης cloud και τυχόν μυστικά μακράς διαρκείας που είναι αποθηκευμένα σε μεταβλητές περιβάλλοντος ή αρχεία ρυθμίσεων απλού κειμένου σε εκτελέσεις CI. Οι πάροχοι cloud γενικά καταγράφουν sts:GetCallerIdentity και παρόμοιες κλήσεις, οι οποίες μπορούν να βοηθήσουν στον περιορισμό του παραθύρου έκθεσης.
Τα εργαλεία ασφάλειας της εφοδιαστικής αλυσίδας που ειδικεύονται στη σάρωση κακόβουλου λογισμικού για πακέτα npm μπορούν να βοηθήσουν στην ανακάλυψη μολύνσεων που δεν ήταν συμβατές με τους παραδοσιακούς σαρωτές ευπαθειών. Ορισμένες πλατφόρμες ήδη ταξινομούν αυτήν την καμπάνια ως κρίσιμο πρόβλημα κακόβουλου λογισμικού 100/100 σοβαρότητας και παρέχουν νυχτερινές επανεξετάσεις ή ελέγχους κατ' απαίτηση για αποθετήρια που βασίζονται στο TanStack Query και σχετικές εξαρτήσεις.
Κοιτάζοντας μπροστά, οι οργανισμοί που βασίζονται σε μεγάλο βαθμό στο TanStack Query, @tanstack/react-queryΤο HIFU, ή Υψηλής Έντασης Εστιασμένος Υπέρηχος, στοχεύει επίσης στο πρόσωπο και τον λαιμό. Προσφέρει θεραπεία σε γρήγορες εκπομπές, γεγονός που κάνει τις συνεδρίες θεραπείας συντομότερες. @tanstack/vue-query στην παραγωγή μπορεί να θέλουν να ενισχύσουν τα προστατευτικά κιγκλιδώματα γύρω από την εγκατάσταση της συσκευασίας. Αυτό μπορεί να περιλαμβάνει μητρώα proxy που μπλοκάρουν γνωστές κακές εκδόσεις, εργαλεία που αναχαιτίζουν εντολές όπως npm install or pnpm add και διασταυρώστε τα πακέτα με τις ροές πληροφοριών για απειλέςκαι αυστηρότερη χρήση της προέλευσης και της επαλήθευσης υπογραφής—με την επιφύλαξη ότι οι παραβιασμένοι αγωγοί CI μπορούν ακόμα να παράγουν «έγκυρες» βεβαιώσεις, όπως φαίνεται εδώ.
Καθώς τα frontend stacks τυποποιούνται ολοένα και περισσότερο σε βιβλιοθήκες όπως το TanStack Query για την ανάκτηση και την προσωρινή αποθήκευση δεδομένων, οι εισβολείς είναι πιθανό να συνεχίσουν να διερευνούν το περιβάλλον οικοσύστημα των γεννητριών, των CLI και των plugin που δημοσιεύονται στο npm . Αυτό το περιστατικό υπογραμμίζει πώς ένα φαινομενικά περιορισμένο πακέτο βοηθητικών προγραμμάτων - ένα που απλώς εκπέμπει hooks TanStack Query από ένα αρχείο OpenAPI - μπορεί να γίνει ένα σημείο εισόδου με μεγάλη επίδραση σε συστήματα δημιουργίας, monorepos και υποδομή cloud όταν αφεθεί χωρίς προστασία.
Η ανακάλυψη της εκστρατείας των Τρινιτών εναντίον @7nohe/openapi-react-query-codegen τονίζει πώς Τα δημοφιλή πακέτα npm που συνδέονται με τη χρήση ερωτημάτων TanStack μπορούν να μετατραπούν αθόρυβα σε φορείς επίθεσης στην αλυσίδα εφοδιασμού όταν οι ροές εργασίας κυκλοφορίας τους παραβιάζονται. Με κατάχρηση binding.gyp, μπερδεμένους φορτωτές JavaScript και εξαγωγή μέσω GitHub, οι εισβολείς κατάφεραν να κρύψουν έναν εκτεταμένο κλέφτη διαπιστευτηρίων μέσα σε ένα εργαλείο που πολλές ομάδες αντιμετώπισαν ως συνήθη υδραυλική εγκατάσταση. Για οργανισμούς που βασίζονται στο TanStack Query σε όλο το React και άλλα frontend, η αυστηρότερη υγιεινή npm, η παρακολούθηση για ύποπτα σενάρια κύκλου ζωής και η ενίσχυση των αγωγών CI γύρω από το OpenAPI και τα εργαλεία δημιουργίας κώδικα ερωτημάτων δεν αποτελούν πλέον προαιρετικά πρόσθετα, αλλά μέρος του βασικού μοντέλου κινδύνου.