- Η ομάδα TeamPCP δημοσίευσε 84 κακόβουλες εκδόσεις σε 42 @tanstack/* npm packages μέσα σε μόλις 6 λεπτά, εκμεταλλευόμενη τριπλή αλυσίδα ευπαθειών στο GitHub Actions — χωρίς να κλέψει ούτε ένα npm token.
- Πρόκειται για την πρώτη τεκμηριωμένη επίθεση όπου κακόβουλα npm packages φέρουν έγκυρες SLSA Build Level 3 πιστοποιήσεις προέλευσης, καθιστώντας τα αδύνατα να διακριθούν από νόμιμες εκδόσεις.
- Όποιος εκτέλεσε npm install σε @tanstack/*, @uipath/*, @mistralai/* ή @draftlab/* packages στις 11 Μαΐου 2026 πρέπει να θεωρήσει το σύστημά του εκτεθειμένο και να ανανεώσει άμεσα όλα τα credentials.
Στις 11 Μαΐου 2026, μεταξύ 19:20 και 19:26 UTC, ένας εισβολέας δημοσίευσε 84 κακόβουλες εκδόσεις σε 42 @tanstack/* npm packages συνδυάζοντας το μοτίβο «Pwn Request» μέσω pull_request_target, δηλητηρίαση της κρυφής μνήμης GitHub Actions μέσω fork, και εξαγωγή OIDC token από τη μνήμη του runner. Κανένα npm token δεν εκλάπη και η ροή εργασίας δημοσίευσης npm δεν παραβιάστηκε άμεσα.
Η παραβίαση έχει λάβει τον κωδικό CVE-2026-45321 με βαθμολογία CVSS 9.6 στα 10 — κατηγορία «Κρίσιμη». Το @tanstack/react-router μόνο του λαμβάνει πάνω από 12,7 εκατομμύρια εβδομαδιαίες λήψεις σύμφωνα με το npm API.
Πώς στήθηκε η επίθεση: τριπλή αλυσίδα ευπαθειών
Στις 10 Μαΐου 2026, ο εισβολέας δημιούργησε ένα fork του TanStack/router υπό τον λογαριασμό zblgg (GitHub ID 127806521), δίνοντάς του σκόπιμα το όνομα zblgg/configuration για να αποφύγει τις αναζητήσεις στη λίστα fork. Η κακόβουλη δέσμευση κώδικα έφερε ψεύτικη ταυτότητα claude <claude@users.noreply.github.com>, πλαστογραφώντας το GitHub App του Anthropic Claude.
Μια μοναδική κακόβουλη δέσμευση πρόσθεσε ένα obfuscated JavaScript payload μεγέθους 2,3 MB. Στη συνέχεια, ο εισβολέας άνοιξε ένα pull request που ενεργοποίησε workflows τύπου pull_request_target — ένας τύπος trigger στο GitHub Actions που εκτελείται με δικαιώματα του βασικού repository ακόμα και για fork PRs — και τον χρησιμοποίησε για να δηλητηριάσει τη διαμοιρασμένη κρυφή μνήμη Actions με ένα κακόβουλο pnpm dependency store.
Ο κώδικας που ελέγχονταν από τον εισβολέα δηλητηρίασε την κρυφή μνήμη του pnpm store με μια καταχώριση που αντιστοιχούσε στο hash που αναζητεί η νόμιμη ροή εργασίας κυκλοφορίας. Όπως επισημαίνει το postmortem του TanStack, το actions/cache@v5 χρησιμοποιεί εσωτερικό token runner για αποθήκευση cache — όχι το GITHUB_TOKEN — οπότε ο ορισμός permissions: contents: read δεν εμποδίζει την αλλοίωσή του.
Τελικά, ο κακόβουλος κώδικας εξήγαγε OIDC tokens απευθείας από τη μνήμη του GitHub Actions runner μέσω /proc/<pid>/mem. Με αυτά τα tokens, ο εισβολέας δημοσίευσε τις κακόβουλες εκδόσεις packages χωρίς να χρειαστεί ποτέ να κλέψει npm credentials.
Ιστορικό πρώτο: έγκυρη πιστοποίηση SLSA σε κακόβουλα packages
Πρόκειται για εξαιρετικά σπάνια κλιμάκωση: τα παραβιασμένα packages φέρουν έγκυρες SLSA Build Level 3 πιστοποιήσεις προέλευσης, καθιστώντας αυτήν την πρώτη τεκμηριωμένη περίπτωση npm worm που παράγει εγκύρως πιστοποιημένα κακόβουλα packages.
Η SLSA provenance είναι ένα κρυπτογραφικό πιστοποιητικό που παράγεται από το Sigstore και προορίζεται να επαληθεύει ότι ένα package κατασκευάστηκε από αξιόπιστη πηγή. Η επίθεση κατάχρησε το «trusted publishing», επιτρέποντας στον κώδικα που ελέγχεται από τον εισβολέα να αξιοποιήσει τις άδειες OIDC για να «εκδώσει» ένα βραχύβιο publish token κατά τη διάρκεια της κατασκευής και να δημοσιεύσει τα packages χωρίς να κλέψει npm token.
Τι κάνει το κακόβουλο λογισμικό
Το κακόβουλο λογισμικό κλέβει credentials από πάνω από 100 διαδρομές αρχείων — κλειδιά cloud, SSH keys, npm tokens, GitHub tokens, πορτοφόλια κρυπτονομισμάτων, ακόμα και ρυθμίσεις εργαλείων AI — και εξάγει τα πάντα μέσω του Session Protocol CDN και του GraphQL API του GitHub.
Η εξαγωγή κλεμμένων credentials γίνεται μέσω τριών παράλληλων καναλιών: ένα typosquat domain (git-tanstack[.]com), το αποκεντρωμένο δίκτυο του Session messenger, και GitHub API dead drops μέσω κλεμμένων tokens.
Στις μηχανές προγραμματιστών, το κακόβουλο λογισμικό εγκαθιστά έναν μόνιμο daemon gh-token-monitor (μέσω macOS LaunchAgent ή Linux systemd) που ελέγχει το GitHub κάθε 60 δευτερόλεπτα. Αν λάβει σφάλμα 40X λόγω ανάκλησης token, ο monitor επιχειρεί εκτέλεση της εντολής rm -rf ~/. Ο daemon τερματίζεται αυτόματα μετά από 24 ώρες αν δεν ενεργοποιηθεί η καταστροφική ρουτίνα.
Όπως και στις προηγούμενες παραλλαγές Mini Shai-Hulud, το κακόβουλο λογισμικό ελέγχει αν το σύστημα είναι ρυθμισμένο για ρωσική γλώσσα και τερματίζεται χωρίς να εξάγει δεδομένα αν αυτό ισχύει. Σύμφωνα με την ανάλυση της Microsoft για το κακόβουλο mistralai PyPI package, το malware έχει έναν παραπλανητικό κλάδο που περιγράφει υποθετικές ρουτίνες σε άλλα περιβάλλοντα.
Ο ρόλος της TeamPCP και η ευρύτερη εκστρατεία Mini Shai-Hulud
Η TeamPCP, στην οποία αποδίδει την επίθεση η StepSecurity, είναι επίσης υπεύθυνη για την παραβίαση του Trivy scanner της Aqua Security (Μάρτιος 2026) και του Bitwarden CLI npm package (Απρίλιος 2026).

Recommended Comments
There are no comments to display.
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now