JulesJacker: Phần mềm độc hại npm giả mạo Jules AI

JulesJacker: Một loại sâu máy tính giả mạo npm, mạo danh Jules Agent của Google — và kích hoạt công cụ phân tích Sandbox của nó.

TL; DR

Một người vận hành npm đã dành sáu tuần để xuất bản các gói "tiện ích" TypeScript giả mạo, chẳng hạn như: ts-form-utils, ts-project-lintts-enum-helper.

Mặc dù các gói phần mềm này chỉ hiển thị các công cụ hỗ trợ xác thực nhỏ trông có vẻ hợp pháp, nhưng phần mềm độc hại thực sự sẽ được thực thi khi cài đặt hoặc yêu cầu lần đầu tiên và tiến hành nhận dạng máy chủ, phát hiện tổ chức GitHub, sao chép kho lưu trữ và đánh cắp mã nguồn.

Phần mềm độc hại này nhắm mục tiêu cụ thể vào các tổ chức GitHub có giá trị cao, bao gồm nhiều tổ chức khác nhau. Shopify Các kho lưu trữ, sau đó là các bản sao lưu và trích xuất các cây mã nguồn có thể truy cập được đến một điểm cuối thu thập tập trung.

Là một phần của quy trình xâm nhập, tải trọng được truyền đi. commitđưa tập tin sa trở lại kho lưu trữ của nạn nhân trong khi mạo danh danh tính mã hóa tự động của Google. google-labs-jules[bot].

Chúng tôi đã theo dõi chiến dịch — có tên là JulesJacker — trên nhiều phạm vi nhà xuất bản và ít nhất năm thế hệ dữ liệu, bao gồm cả các biến thể được mã hóa và có khả năng hoạt động trong môi trường sandbox.

Biến thể mới nhất nhắm mục tiêu cụ thể vào cơ sở hạ tầng phân tích phần mềm độc hại: nó chỉ kích hoạt bên trong môi trường phân tích, đánh cắp mã thông báo tài khoản dịch vụ siêu dữ liệu đám mây và dò tìm các mặt phẳng điều khiển Kubernetes cũng như các thùng lưu trữ đám mây.

Điểm cuối thu thập thông tin (collection endpoint) là chỉ báo xâm nhập (IOC) chính được chia sẻ giữa tất cả các thế hệ tải trọng. aaronstack[.]com/jules-collect.

Mức độ nghiêm trọng: nguy kịch.

Cuộc tấn công: Cơ chế hoạt động

Mọi gói sản phẩm của JulesJacker đều tuân theo cùng một mẫu. package.json Quảng cáo một công cụ hỗ trợ TypeScript lành tính với giấy phép MIT và không có kho lưu trữ mã nguồn liên kết. chỉ mục.js Gói này xuất ra một số ít các hàm thực sự hoạt động được — biểu thức chính quy email, bản đồ enum, bảng quy tắc lint — để nhà phát triển khi thực sự nhập gói này sẽ thấy được hành vi hợp lý. Sự độc hại nằm ở chỗ khác: trong một... sau khi cài đặt móc, hoặc trong một khối ở dưới cùng của chỉ mục.js Đoạn mã này sẽ được thực thi ngay khi mô-đun được yêu cầu.

Các thiết bị mang tải đã trải qua các giai đoạn nội bộ được đánh số rõ ràng (người vận hành tự đặt tên cho các sự kiện đo từ xa của mình). sc1-, sc3-, sc4-và cứ thế tiếp diễn), và việc quan sát quá trình phát triển đó là cách rõ ràng nhất để hiểu về chiến dịch.

 Thế hệ 1–2: trinh sát và đánh cắp git-config

Các gói phần mềm đầu tiên chỉ đơn giản là những phần mềm đánh cắp thông tin. Khi cài đặt, chúng thu thập các biến môi trường, tệp hosts của GitHub CLI và cấu hình git toàn cục (cấu hình git –global –list, git từ xa -vSau đó, nó gửi gói dữ liệu đến điểm cuối thu thập dữ liệu bằng phương thức POST. Điều này đã thiết lập dấu ấn của nhà điều hành: một câu chuyện vỏ bọc về "các tiện ích xác thực biểu mẫu TypeScript", một tín hiệu gửi đi đến một miền duy nhất và sự ưu tiên đối với thông tin đăng nhập của nhà phát triển hơn là dữ liệu người dùng.

Thế hệ 3: Các công cụ dò tìm lỗ hổng bảo mật của hypervisor và kernel

Một phiên bản giữa chiến dịch đã chuyển hướng mạnh mẽ sang các cuộc tấn công vào cơ sở hạ tầng. Thay vì đánh cắp cấu hình, nó đã chạy một công cụ dò tìm để thu thập thông tin. AF_VSOCK ổ cắm, virtio, vùng MMIO, / dev / memvà các cờ tăng cường bảo mật hạt nhân, và thậm chí cả các nỗ lực gây ra sự cố hạt nhân do sysrq kích hoạt — hành vi liên quan đến các nỗ lực thoát khỏi máy ảo hoặc vùng chứa. Các thẻ đo từ xa (s0-vmm-recon, s1-vmm-vsock-fuzz, s2-vmm-mmio, s3-kernel-probe) đã nêu rõ ý định. Biến thể này rõ ràng nhắm vào môi trường cloud-andbox và serverless-runner — loại máy ảo tạm thời dùng để xây dựng và kiểm thử mã không đáng tin cậy.

Thế hệ 3 (SC3): sâu ghi dữ liệu xuyên kho lưu trữ

Trọng tâm của chiến dịch trở thành một phần mềm đánh cắp kho lưu trữ tự lan truyền. Khi cài đặt, phần mềm độc hại sẽ chạy một chuỗi năm giai đoạn theo thời gian định sẵn:

  • Giai đoạn 0 (~100 ms): xác định dấu vân tay của máy chủ — tên máy chủ, thông tin người dùng, danh tính git.
  • Giai đoạn 1 (~3 giây): xác định nạn nhân thuộc tổ chức nào bằng cách kiểm tra git từ xa -vsau đó tìm kiếm một mã được mã hóa cứng. ORG_CONFIG bảng và kiểm tra quyền truy cập kho lưu trữ với git ls-remote — được định tuyến thông qua máy chủ proxy SSRF do kẻ tấn công kiểm soát tại http://git@192.168.0.1:8080.
  • Giai đoạn 2 (~10 giây): git clone Tìm tất cả các kho lưu trữ có thể truy cập được trong danh sách mục tiêu, nén cây thư mục bằng tarball và gzip, mã hóa base64 và trích xuất từng phần.
  • Giai đoạn 3 (~45 giây): “bằng chứng truy cập” — sao chép kho lưu trữ có thể ghi, thả một tệp có tên SECURITY-POC.md và commit với tác giả được đặt là google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com> và thông báo công việc: cập nhật bộ nhớ cache phụ thuộc, sau đó đẩy lên nhánh chính của nạn nhân.

Danh sách mục tiêu được mã hóa cứng không mang tính tổng quát. Nó liệt kê hơn ba mươi mục tiêu. Shopify kho lưu trữ theo tên — Shopify/shopify, Shopify/nhận dạng, Shopify/thanh toán, Shopify/vault, Shopify/bí mật, Shopify/cơ sở hạ tầng, Shopify/.githubvà nhiều tổ chức khác nữa — cùng với một tổ chức thử nghiệm, AaronStackBarnes, mà người vận hành dường như kiểm soát và sử dụng làm đích ghi.

Thế hệ 4 (SC4): được mã hóa và kiểm soát truy cập.

Phiên bản mới nhất dành cho nhà phát triển bổ sung thêm hai lớp né tránh vào sâu SC3.

Thứ nhất, dữ liệu cần truyền tải không còn được gửi dưới dạng văn bản thuần nữa. Logic thực sự nằm trong một khối dữ liệu được mã hóa bằng AES-256-CBC. lib/.perf.dat, với IV nằm trong mười sáu byte đầu tiên. Trình tải trong chỉ mục.js Chương trình tái tạo khóa giải mã từ các đoạn chuỗi được nối lại, giải mã khối dữ liệu và chạy nó với... Hàm mới()Ngay cả tên mô-đun cũng được tách ra để tránh các trình quét tĩnh — yêu cầu('crypt' + 'o'), yêu cầu('f' + 's').

Thứ hai, nó bị giới hạn bởi máy chủ. Một biến thể chỉ giải mã và chạy khi os.hostname() bằng hộp phát triển or ubuntu-fc-uvm (mặc định của microVM Firecracker) hoặc chứa chuỗi con hộp phát triểnMột cánh cổng khác xuất hiện khi có sự hiện diện của... .jules/ thư mục làm việc:

Nói cách khác, phần mềm độc hại SC4 được thiết kế để nằm im trên máy tính xách tay của một nhà phát triển thông thường và chỉ được kích hoạt bên trong hệ thống AI tự động. môi trường hộp cát Trên thực tế, nhà điều hành muốn thỏa hiệp.

Khởi động phòng thí nghiệm: Biến thể cơ sở hạ tầng phân tích

Gói sản phẩm độc đáo nhất trong chiến dịch này, ts-enum-helperNó hoàn toàn không tấn công các nhà phát triển hay Shopify. postinstall.sh Mở đầu bằng một cánh cổng hé lộ bí mật:

Đoạn mã sẽ không làm gì trừ khi một biến môi trường cụ thể của nền tảng phân tích phần mềm độc hại được thiết lập. Khi biến này được thiết lập, phần mềm độc hại sẽ biết nó đang chạy bên trong môi trường sandbox được tạo ra để kích nổ và nghiên cứu các gói phần mềm giống như gói này — và nó sẽ phản công.

Đầu tiên, nó lấy mã thông báo OAuth của tài khoản dịch vụ GCP từ máy chủ siêu dữ liệu của phiên bản và đánh cắp nó. Sau đó, sử dụng mã thông báo đó, nó quét... Mặt phẳng điều khiển Kubernetes có thể truy cập tại kubernetes.default.svc:

  • Liệt kê các ClusterRoleBindings, ClusterRoles và Nodes;
  • thăm dò các pod, bí mật và configmap trên khắp hệ thống. kube-system, mặc định, kube-public, kube-node-leasevà không gian tên phân tích;
  • Các vấn đề liên quan đến SelfSubjectAccessReview yêu cầu xác định chính xác những gì danh tính bị đánh cắp được phép thực hiện.

Cuối cùng, nó sử dụng phương pháp vét cạn để tìm tên bucket Google Cloud Storage được tạo từ ID dự án GCP được mã hóa cứng (rare-signer-437603-p9) và số dự án, đoán các tổ hợp như *-xây dựng, *-hiện vậtvà một số phân tích- tiền tố (kết quả phân tích, gói phân tích, phân tích-quétMọi mã phản hồi và nội dung phản hồi đều được ghi lại và gửi lại bằng phương thức POST. jules-collect điểm cuối.

Đây là trường hợp hiếm hoi của một phần mềm độc hại tấn công chuỗi cung ứng được thiết kế đặc biệt để tấn công cơ sở hạ tầng của chính bên phòng thủ. Câu chuyện bao trùm toàn bộ chiến dịch — những đoạn trích của nó xuất hiện bên trong các phần mềm độc hại dưới dạng bình luận mô tả hành vi này như một “Thử nghiệm nghiên cứu bảo mật… ghi dữ liệu chéo kho lưu trữ thông qua mã thông báo proxy git có phạm vi quá rộng” — đều là cùng một lời tự biện minh, bất kể mục tiêu thực thi là kho lưu trữ đơn Shopify hay máy chủ siêu dữ liệu của cụm phân tích.

Dòng thời gian và sự chuyển đổi phạm vi

JulesJacker không phải là một vụ việc xảy ra một lần duy nhất. Đó là một hoạt động kéo dài, đã sống sót sau khi bị gỡ bỏ khỏi hệ thống đăng ký bằng cách đơn giản là thay đổi tên.

Thời Gian Sự kiện
Giữa tháng 2026 năm XNUMX Các gói đầu tiên xuất hiện trong phạm vi nhà xuất bản ban đầu: TS-utility façade, environment và git-config exfiltration.
Đầu tháng 2026 năm XNUMX Biến thể trinh sát thoát khỏi hệ thống ảo hóa và nhân hệ điều hành đã được công bố.
Giữa đến cuối tháng 5 năm 2026 Sâu ghi dữ liệu chéo kho lưu trữ SC3 xuất hiện cùng với các phần mềm độc hại nhắm mục tiêu vào Shopify và google-labs-jules[bot] mạo danh. SC4 giới thiệu các trình tải được mã hóa AES và được điều khiển bởi máy chủ.
Cuối tháng 2026 năm XNUMX npm loại bỏ phạm vi nhà xuất bản ban đầu; tên gói được giải quyết thành các chỗ giữ chỗ trống dùng để xác thực bảo mật.
Cùng tuần Kẻ tấn công chuyển sang phạm vi gần như giống hệt và phát tán lại sâu máy tính, bao gồm cả biến thể cơ sở hạ tầng phân tích.

Việc chuyển đổi hệ thống là phần mà những người phòng thủ nên chú trọng. Việc gỡ bỏ hệ thống đầu tiên không kết thúc chiến dịch hay thậm chí làm chậm nó lại. Người điều hành đã nhanh chóng tạo ra một hệ thống song song khác có tên khác với hệ thống ban đầu chỉ một ký tự, và tiếp tục đăng tải thông tin trong cùng tuần đó. Tính đến thời điểm viết bài này, hệ thống mới... ts-form-utils (phiên bản 1.0.0 đến 1.1.0), của nó ts-project-lint (1.0.0 và 1.1.0), và phiên bản độc lập ts-enum-helper (1.0.0) vẫn có thể cài đặt được.

Các chỉ số về sự thỏa hiệp

Tất cả các chỉ số bên dưới đã được xác nhận dựa trên nguồn gói phần mềm.

Kiểu chỉ số Ghi Chú
Mạng (C2) aaronstack[.]com/jules-collect Một điểm cuối thu thập dữ liệu duy nhất cho mọi thế hệ; nhận dữ liệu đo từ xa định dạng JSON và các đoạn dữ liệu nén tarball base64-gzip từ kho lưu trữ.
Mạng (proxy SSRF) http://git@192.168.0.1:8080 Giao diện cho mã thông báo proxy Git có phạm vi quá rộng được sử dụng để truy cập các kho lưu trữ của tổ chức mục tiêu.
Mạng (đám mây) metadata.google.internal/computeMetadata/v1
kubernetes.default.svc
storage.googleapis.com/storage/v1/b
Chỉ được sử dụng bởi biến thể cơ sở hạ tầng phân tích để đánh cắp token và do thám mặt phẳng điều khiển Kubernetes.
Bản sắc google-labs-jules[bot]
161369871+google-labs-jules[bot]@users.noreply.github.com
Giả mạo commit Danh tính tác giả bị đẩy vào các nhánh chính của nạn nhân.
Tập tin lib/.perf.dat Khối dữ liệu được mã hóa AES-256-CBC; IV được lưu trữ trong 16 byte đầu tiên và khóa được tái tạo động trong index.js.
Tập tin SECURITY-POC.md Rơi xuống và commitđược đưa trở lại kho lưu trữ nạn nhân với thông báo chore: update dependency cache.
Tập tin scripts/postinstall.sh Đã đóng cổng $MALYSIS_ANALYSIS_ID; xác định biến thể nhắm mục tiêu vào cơ sở hạ tầng phân tích.
Hành vi os.hostname() kiểm tra devbox / ubuntu-fc-uvm Kiểm soát môi trường hộp cát và tác nhân AI trước khi giải mã và thực thi dữ liệu.
Hành vi .jules//app/.jules đọc thư mục Xác định rõ ràng môi trường làm việc của tác nhân AI.
Hành vi sc1-, sc3-, sc4-, s0-vmm-recon Các nhãn giai đoạn đo từ xa do người vận hành định nghĩa rất hữu ích cho việc phát hiện và tìm kiếm.
Mục tiêu đám mây rare-signer-437603-p9
malysis-* dự đoán xô
Các mã định danh dự án GCP và mẫu liệt kê nhóm lưu trữ được mã hóa cứng nhúng trong biến thể cơ sở hạ tầng phân tích.
Hình dạng gói Giao diện gói tiện ích TS không có trường kho lưu trữ Mẫu chiến dịch nhất quán: các gói tiện ích TypeScript giả mạo chứa mã độc được nhúng bên trong. postinstall hooks hoặc được thêm vào index.js.
sca-tools-software-composition-analysis-tools
Ưu tiên, khắc phục và bảo mật các rủi ro phần mềm của bạn
Đăng ký tài khoản miễn phí ngay.
Không cần thẻ tín dụng.

Bảo mật quá trình phát triển và phân phối phần mềm của bạn.

với bộ sản phẩm Xygeni