JulesJacker: Ψεύτικο σκουλήκι npm μιμείται την τεχνητή νοημοσύνη του Jules

JulesJacker: Ένα ψεύτικο σκουλήκι npm PoC που μιμείται τον πράκτορα Jules της Google — και ενεργοποιεί το sandbox που το αναλύει

TL? DR

Ένας μόνο χειριστής npm πέρασε έξι εβδομάδες δημοσιεύοντας ψεύτικα πακέτα «βοηθητικών προγραμμάτων» TypeScript, όπως ts-form-utils, ts-project-lintκαι ts-enum-helper.

Ενώ τα πακέτα εκθέτουν μικρά βοηθήματα επικύρωσης που μοιάζουν νόμιμα, το πραγματικό ωφέλιμο φορτίο εκτελείται κατά την εγκατάσταση ή την πρώτη απαίτηση και εκτελεί αποτύπωση κεντρικού υπολογιστή, ανακάλυψη οργανισμού GitHub, κλωνοποίηση αποθετηρίου και εξαγωγή πηγαίου κώδικα.

Το κακόβουλο λογισμικό στοχεύει συγκεκριμένα οργανισμούς GitHub υψηλής αξίας, συμπεριλαμβανομένων πολλαπλών... Shopify αποθετήρια, στη συνέχεια αρχειοθετεί και απομακρύνει προσβάσιμα δέντρα πηγαίου κώδικα σε ένα κεντρικό τελικό σημείο συλλογής.

Ως μέρος της ροής εργασίας συμβιβασμού, το ωφέλιμο φορτίο commitsa αρχείο πίσω στα αποθετήρια των θυμάτων, ενώ παράλληλα μιμείται την αυτόνομη ταυτότητα κωδικοποίησης της Google google-labs-jules[bot].

Παρακολουθήσαμε την καμπάνια — με το όνομα Τζουλς Τζάκερ — σε πολλαπλά εύρη εκδοτών και τουλάχιστον πέντε γενιές ωφέλιμου φορτίου, συμπεριλαμβανομένων κρυπτογραφημένων και συμβατών με sandbox παραλλαγών.

Η νεότερη παραλλαγή στοχεύει συγκεκριμένα στην υποδομή ανάλυσης κακόβουλου λογισμικού: ενεργοποιείται μόνο εντός περιβαλλόντων ανάλυσης, κλέβει διακριτικά λογαριασμού υπηρεσίας μεταδεδομένων cloud και εξετάζει τα επίπεδα ελέγχου Kubernetes και τους κάδους αποθήκευσης cloud.

Το κύριο IOC που μοιράζεται σε όλες τις γενιές ωφέλιμου φορτίου είναι το τελικό σημείο συλλογής. aaronstack[.]com/jules-collect.

Σοβαρότητα: κρίσιμη.

Η Επίθεση: Πώς Λειτουργεί

Κάθε πακέτο JulesJacker ακολουθεί το ίδιο πρότυπο. πακέτο.json διαφημίζει έναν εύχρηστο βοηθό TypeScript με άδεια MIT και χωρίς συνδεδεμένο αποθετήριο πηγαίου κώδικα. index.js εξάγει μια χούφτα πραγματικών, λειτουργικών συναρτήσεων — regexes email, χάρτες enum, πίνακες κανόνων lint — έτσι ώστε ένας προγραμματιστής που εισάγει το πακέτο να βλέπει πιθανή συμπεριφορά. Η κακία βρίσκεται αλλού: σε ένα μετά την εγκατάσταση γάντζο ή σε ένα μπλοκ στο κάτω μέρος του index.js που εκτελείται τη στιγμή που απαιτείται η ενότητα.

Τα ωφέλιμα φορτία έχουν εξελιχθεί μέσω σαφώς αριθμημένων εσωτερικών σταδίων (ο χειριστής επισημαίνει τα δικά του συμβάντα τηλεμετρίας) sc1-, sc3-, sc4-, και ούτω καθεξής), και η παρακολούθηση αυτής της εξέλιξης είναι ο σαφέστερος τρόπος για να κατανοήσετε την καμπάνια.

 Γενιά 1–2: αναγνώριση και κλοπή git-config

Τα πρώτα πακέτα ήταν απλά infostealer. Κατά την εγκατάσταση, συνέλεγαν μεταβλητές περιβάλλοντος, το αρχείο hosts CLI του GitHub και την καθολική διαμόρφωση git (git config –global –list, git remote -v), στη συνέχεια, δημοσίευσε την δέσμη στο τελικό σημείο της συλλογής. Αυτό καθιέρωσε την υπογραφή του χειριστή: μια ιστορία εξωφύλλου "βοηθητικά προγράμματα επικύρωσης φόρμας TypeScript", ένα εξερχόμενο beacon σε έναν μόνο τομέα και μια προτίμηση για τα διαπιστευτήρια προγραμματιστή αντί για τα δεδομένα καταναλωτών.

Γενιά 3: υπερεπόπτης και ανιχνευτές διαφυγής πυρήνα

Μια έκδοση στα μέσα της καμπάνιας στράφηκε έντονα σε επιθέσεις υποδομής. Αντί να κλέβει ρυθμίσεις, εκτέλεσε μια λειτουργία ανίχνευσης καλωδίωσης αναγνώρισης. AF_VSOCK πρίζες, περιοχές virtio MMIO, / dev / mem, και σημαίες σκλήρυνσης πυρήνα, ακόμη και απόπειρες διακοπής λειτουργίας πυρήνα που ενεργοποιούνται από το sysrq — συμπεριφορά που σχετίζεται με προσπάθειες εξόδου από μια εικονική μηχανή ή κοντέινερ. Οι ετικέτες τηλεμετρίας (s0-vmm-αναγνώριση, s1-vmm-vsock-fuzz, s2-vmm-mmio, ανιχνευτής-πυρήνα-s3) έκανε σαφή την πρόθεση. Αυτή η παραλλαγή στόχευε ξεκάθαρα σε περιβάλλοντα cloud-sandbox και serverless-runner — το είδος της εφήμερης εικονικής μηχανής (VM) που δημιουργεί και δοκιμάζει μη αξιόπιστο κώδικα.

Γενιά 3 (SC3): ο ιός τύπου worm εγγραφής cross-repo

Το κέντρο βάρους της καμπάνιας έγινε ένας αυτοδιαδιδόμενος κλέφτης αποθετηρίων. Κατά την εγκατάσταση, το ωφέλιμο φορτίο εκτελεί μια χρονική ακολουθία πέντε σταδίων:

  • Στάδιο 0 (~100 ms): δακτυλικό αποτύπωμα του κεντρικού υπολογιστή — όνομα κεντρικού υπολογιστή, πληροφορίες χρήστη, ταυτότητα git.
  • Στάδιο 1 (~3 δευτ.): προσδιορίστε σε ποιον οργανισμό ανήκει το θύμα επιθεωρώντας git remote -v, στη συνέχεια αναζητήστε ένα ενσωματωμένο κώδικα ORG_CONFIG πίνακας και δοκιμαστική πρόσβαση στο αποθετήριο με git ls-remote — δρομολογείται μέσω ενός proxy SSRF που ελέγχεται από εισβολέα στη διεύθυνση http://git@192.168.0.1:8080.
  • Στάδιο 2 (~10 δευτ.): git κλώνος κάθε προσβάσιμο αποθετήριο στη λίστα στόχων, εκτελέστε tarball και gzip στο δέντρο, κωδικοποιήστε το με base64 και αποσπάστε το με chunk.
  • Στάδιο 3 (~45 δευτ.): η «απόδειξη πρόσβασης» — κλωνοποίηση ενός εγγράψιμου αποθετηρίου, απόθεση ενός αρχείου με το όνομα SECURITY-POC.md και commit με τον συντάκτη να έχει οριστεί σε google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com> και το μήνυμα chore: update dependency cache, then push to the mainline branch of thrum.

Η λίστα στόχων με σκληρό κώδικα δεν είναι γενική. Απαριθμεί περισσότερους από τριάντα Shopify αποθετήρια με βάση το όνομα — Shopify/shopify, Shopify/ταυτότητα, Shopify/χρέωση, Shopify/θησαυροφυλάκιο, Shopify/μυστικά, Shopify/υποδομές, Shopify/.githubκαι πολλά άλλα — παράλληλα με έναν οργανισμό δοκιμών, Άαρον ΣτακΜπαρνς, το οποίο ο χειριστής φαίνεται να ελέγχει και να χρησιμοποιεί ως στόχο εγγραφής.

Γενιά 4 (SC4): κρυπτογραφημένη και με πύλη

Η νεότερη παραλλαγή που απευθύνεται σε προγραμματιστές προσθέτει δύο επίπεδα αποφυγής πέρα ​​από τον ιό τύπου worm SC3.

Καταρχάς, το ωφέλιμο φορτίο δεν αποστέλλεται πλέον ως απλό κείμενο. Η πραγματική λογική βρίσκεται σε ένα κρυπτογραφημένο με AES-256-CBC blob, lib/.perf.dat, με το IV στα πρώτα δεκαέξι byte του. Ο φορτωτής στο index.js ανακατασκευάζει το κλειδί αποκρυπτογράφησης από συνενωμένα τμήματα συμβολοσειρών, αποκρυπτογραφεί το blob και το εκτελεί με νέα Συνάρτηση()Ακόμα και τα ονόματα των μονάδων είναι χωρισμένα για να αποφεύγονται οι στατικοί σαρωτές — require('crypt' + 'o'), απαιτούν('f' + 's').

Δεύτερον, είναι host-gated. Μία παραλλαγή αποκρυπτογραφεί και εκτελείται μόνο όταν os.hostname() ισούται με devbox or ubuntu-fc-uvm (μια προεπιλογή microVM του Firecracker) ή περιέχει την υποσυμβολοσειρά devboxΜια άλλη πύλη στην παρουσία ενός .jules/ κατάλογος εργασίας:

Με άλλα λόγια, το ωφέλιμο φορτίο SC4 έχει σχεδιαστεί για να παραμένει αδρανές στον φορητό υπολογιστή ενός συνηθισμένου προγραμματιστή και να ξυπνάει μόνο μέσα στον αυτοματοποιημένο παράγοντα τεχνητής νοημοσύνης και περιβάλλοντα sandbox ο χειριστής θέλει στην πραγματικότητα να κάνει συμβιβασμούς.

Ενεργοποίηση του Εργαστηρίου: η Παραλλαγή Ανάλυσης-Υποδομής

Το πιο καινοτόμο πακέτο της καμπάνιας, Βοηθός-αριθμού-ts, δεν επιτίθεται καθόλου στους προγραμματιστές ή στο Shopify. Είναι postinstall.sh ανοίγει με μια πύλη που αποκαλύπτει το παιχνίδι:

Το σενάριο δεν κάνει τίποτα εκτός αν οριστεί μια μεταβλητή περιβάλλοντος συγκεκριμένη για μια πλατφόρμα ανάλυσης κακόβουλου λογισμικού. Όταν οριστεί, το ωφέλιμο φορτίο γνωρίζει ότι εκτελείται μέσα στο sandbox που υπάρχει για να πυροδοτεί και να μελετά πακέτα ακριβώς όπως αυτό — και αντεπιτίθεται.

Αρχικά, τραβάει το διακριτικό OAuth του λογαριασμού υπηρεσίας GCP από τον διακομιστή μεταδεδομένων στιγμιότυπου και το εξάγει. Στη συνέχεια, χρησιμοποιώντας αυτό το διακριτικό, σαρώνει το Αεροπλάνο ελέγχου Kubernetes προσβάσιμο στο kubernetes.default.svc:

  • παραθέτει τις Συνδέσεις Ρόλων Συστήματος (ClusterRoleBindings), τους Ρόλους Συστήματος (ClusterRoles) και τους Κόμβους (Nodes).
  • pods ανιχνευτών, μυστικά και χάρτες διαμόρφωσης σε όλη την σύστημα κύβων, αθέτηση, kube-δημόσιο, μίσθωση-κόμβου-kubeκαι ο χώρος ονομάτων ανάλυσης.
  • προβλήματα που προκύπτουν κατά τις κλήσεις του SelfSubjectAccessReview για να χαρτογραφήσει ακριβώς τι επιτρέπεται να κάνει η κλεμμένη ταυτότητα.

Τέλος, επιβάλλει με βίαιο τρόπο ονόματα κάδων Google Cloud Storage που δημιουργούνται από ένα ενσωματωμένο αναγνωριστικό έργου GCP (σπάνιος-υπογράφων-437603-p9) και τον αριθμό έργου, μαντεύοντας συνδυασμούς όπως *-builds, *-τεχνουργήματα, και πολλά μάλυση- προθέματα (αποτελέσματα-μάλυσης, πακέτα malysis, σαρώσεις μαλάκυνσης). Κάθε κωδικός και σώμα απόκρισης καταγράφεται και αποστέλλεται ξανά στο ίδιο jules-collect τελικό σημείο

Αυτή είναι η σπάνια περίπτωση ενός φορτίου εφοδιαστικής αλυσίδας που έχει κατασκευαστεί ειδικά για να επιτεθεί στην υποδομή των ίδιων των αμυνόμενων. Το κύριο θέμα σε ολόκληρη την καμπάνια - αποσπάσματα του οποίου εμφανίζονται μέσα στα φορτία ως σχόλια που πλαισιώνουν τη συμπεριφορά ως "Security Research PoC ... cross-repo write via overscoped git proxy token" - είναι η ίδια αυτοδικαιολόγηση, είτε ο στόχος χρόνου εκτέλεσης είναι ένα monorepo Shopify είτε ο διακομιστής μεταδεδομένων του συμπλέγματος ανάλυσης.

Χρονολόγιο και μετεγκατάσταση πεδίου εφαρμογής

Το JulesJacker δεν είναι μια μονομιάς επιχείρηση. Είναι μια διαρκής επιχείρηση που επέζησε από την κατάργηση του μητρώου απλώς αλλάζοντας το όνομά της.

Κατά τη Συμβάν
Μέσα Απριλίου 2026 Τα πρώτα πακέτα εμφανίζονται στο πλαίσιο του αρχικού εκδότη: TS-utility facade, environment και git-config exfiltration.
Αρχές Μαΐου 2026 Δημοσιεύτηκε ο Hypervisor και η παραλλαγή αναγνώρισης kernel-escape.
Μέσα έως τέλη Μαΐου 2026 Το SC3 cross-repo write worm εμφανίζεται παράλληλα με τα payloads που στοχεύουν το Shopify και google-labs-jules[bot] πλαστοπροσωπία. Το SC4 εισάγει φορτωτές με κρυπτογράφηση AES και host-gated.
Τέλη Μαΐου 2026 Το npm καταργεί το αρχικό πεδίο εφαρμογής του εκδότη. Τα ονόματα πακέτων αδειάζουν τα placeholders που διατηρούν την ασφάλεια.
Ίδια εβδομάδα Ο χειριστής μετεγκαθίσταται σε ένα σχεδόν πανομοιότυπο πεδίο εφαρμογής και δημοσιεύει ξανά τον ιό τύπου worm, συμπεριλαμβανομένης της παραλλαγής υποδομής ανάλυσης.

Η μετεγκατάσταση είναι το μέρος που πρέπει να αποδεχτούν οι υπερασπιστές. Η κατάργηση του πρώτου σκοπευτικού δεν τερμάτισε την εκστρατεία ούτε καν την επιβράδυνε. Ο χειριστής είχε ήδη στήσει ένα παράλληλο σκοπευτικό του οποίου το όνομα διαφέρει από το αρχικό κατά έναν μόνο χαρακτήρα και συνέχισε να δημοσιεύει μέσα στην ίδια εβδομάδα. Τη στιγμή που γράφονται αυτές οι γραμμές, το νέο σκοπευτικό... βοηθητικά προγράμματα ts-form (εκδόσεις 1.0.0 έως 1.1.0), το ts-project-lint (1.0.0 και 1.1.0), και το αυτόνομο Βοηθός-αριθμού-ts (1.0.0) παραμένουν εγκαταστάσιμα.

Δείκτες συμβιβασμού

Όλες οι παρακάτω ενδείξεις επιβεβαιώθηκαν σε σχέση με την πηγή του πακέτου.

Χαρακτηριστικά Δείκτης Σημειώσεις
Δίκτυο (C2) aaronstack[.]com/jules-collect Ενιαίο τελικό σημείο συλλογής σε κάθε γενιά. λαμβάνει τηλεμετρία JSON και κομμάτια tarball αποθετηρίου base64-gzip.
Δίκτυο (διακομιστής μεσολάβησης SSRF) http://git@192.168.0.1:8080 Εμπρός για ένα υπερεμβεβλημένο διακριτικό git proxy που χρησιμοποιείται για την προσέγγιση των αποθετηρίων του οργανισμού-στόχου.
Δίκτυο (cloud) metadata.google.internal/computeMetadata/v1
kubernetes.default.svc
storage.googleapis.com/storage/v1/b
Χρησιμοποιείται μόνο από την παραλλαγή υποδομής ανάλυσης για κλοπή διακριτικών και αναγνώριση επιπέδου ελέγχου Kubernetes.
Ταυτότητα google-labs-jules[bot]
161369871+google-labs-jules[bot]@users.noreply.github.com
Σφυρήλατος commit Η ταυτότητα του συγγραφέα προωθείται στους κύριους κλάδους του θύματος.
Αρχεία lib/.perf.dat AES-256-CBC-κρυπτογραφημένο blob ωφέλιμου φορτίου. Το IV αποθηκεύτηκε στα πρώτα 16 byte και το κλειδί ανακατασκευάστηκε δυναμικά σε index.js.
Αρχεία SECURITY-POC.md Έπεσε και commitεπιστρέφεται στα αποθετήρια των θυμάτων με το μήνυμα chore: update dependency cache.
Αρχεία scripts/postinstall.sh Κλειστό σε πύλη $MALYSIS_ANALYSIS_ID; προσδιορίζει την παραλλαγή στόχευσης ανάλυσης-υποδομής.
Συμπεριφορά os.hostname() έλεγχοι για devbox / ubuntu-fc-uvm Πύλωση σε περιβάλλον sandbox και AI-agent πριν από την αποκρυπτογράφηση και την εκτέλεση του ωφέλιμου φορτίου.
Συμπεριφορά .jules/ και /app/.jules αναγνώσεις καταλόγου Ρητή στόχευση περιβαλλόντων χώρου εργασίας πρακτόρων τεχνητής νοημοσύνης.
Συμπεριφορά sc1-, sc3-, sc4-, s0-vmm-recon Ετικέτες σταδίου τηλεμετρίας που ορίζονται από τον χειριστή, χρήσιμες για ανίχνευση και κυνήγι.
Στόχος cloud rare-signer-437603-p9
malysis-* εικασίες κουβά
Αναγνωριστικά έργου GCP με σκληρό κώδικα και μοτίβα απαρίθμησης κάδου αποθήκευσης ενσωματωμένα στην παραλλαγή υποδομής ανάλυσης.
Σχήμα συσκευασίας Πρόσοψη πακέτου TS-utility χωρίς πεδίο αποθετηρίου Συνεπές πρότυπο καμπάνιας: ψεύτικα πακέτα βοηθητικών προγραμμάτων TypeScript με ενσωματωμένα κακόβουλα φορτία postinstall hooks ή προσαρτημένο σε index.js.
εργαλεία-ανάλυσης-σύνθεσης-λογισμικού-sca
Ιεράρχηση, αποκατάσταση και ασφάλεια των κινδύνων λογισμικού σας
Αποκτήστε τον Δωρεάν Λογαριασμό σας.
Δεν απαιτείται πιστωτική κάρτα.

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

με το Xygeni Product Suite