TL; DR
Đối với khoảng hai thángMột phần mềm đánh cắp thông tin npm duy nhất đã tái xuất hiện dưới một loạt tên gói thay đổi liên tục trong khi vẫn giữ nguyên nội dung độc hại. Ban đầu, nó hoạt động công khai dưới tên gọi... forge-jsxy, sinh ra forge-jsx3 / forge-jsx4 các anh chị em ruột, sau đó đã hoàn toàn bỏ đi thương hiệu "forge" để tự nhận là cơ sở hạ tầng dành cho nhà phát triển — đầu tiên zredis-typedvà gần đây nhất pinokio-redis.
Mỗi biến thể đều mang cùng một chuỗi công cụ nội bộ: các tệp có tên forge-jsx-explorer-*, Một relayPackageServe mô-đun phục vụ cho forge-jsxy-package.tgzvà một môi trường chạy bền vững được ẩn trong một thư mục có dấu chấm để nó vẫn hoạt động sau khi gói npm bị xóa.
Nội dung tải trọng là vật liệu ví tiền điện tử và thông tin đăng nhập của nhà phát triển từ máy chủ rồi truyền chúng đến Discord web.hooksNó bao gồm các tệp tải lên từ HuggingFace Hub và một điểm cuối C2 được mã hóa cứng. Nó cài đặt tính năng tự khởi động ở cấp độ hệ điều hành để chạy lại sau khi khởi động lại hệ thống, và nó thu thập hoạt động của clipboard, bàn phím và màn hình. Phiên bản mới nhất, pinokio-redisNó tự mô tả mình là một sự tích hợp "Autodesk Forge" — một mô tả không liên quan gì đến chức năng của đoạn mã.
| Hệ sinh thái | NPM |
| Lớp tải trọng | Phần mềm đánh cắp thông tin đa tầng + tác nhân điều khiển từ xa (RAT) |
| Mục tiêu chính | ví tiền điện tử, tiện ích mở rộng ví trên trình duyệt, thông tin đăng nhập nhà phát triển/đám mây |
| Persistence | Môi trường chạy ẩn bền bỉ + Tự khởi động hệ điều hành (vẫn hoạt động sau khi gỡ bỏ gói phần mềm) |
| Lọc | bất hòa webhooks + relay, HuggingFace Hub, C2 được mã hóa cứng trên cổng 9877 |
| Khoảng thời gian quan sát được | Tháng 5 năm 2026 – Tháng 7 năm 2026 (đang diễn ra) |
| Tên mới nhất | pinokio-redis:1.0.127 |
Cấu trúc tấn công
Mọi biến thể trong dòng sản phẩm này đều được lắp đặt thông qua cùng một hình dạng: một gói. Trang liệt kê trông có vẻ không hoạt động nhưng nó lại khai báo một hook postinstall, vì vậy Đoạn mã độc sẽ được thực thi ngay khi gói phần mềm được cài đặt như một phần phụ thuộc. Móc truyền động cho một chuỗi năm cấp.
- Giai đoạn 1 — hiện thực hóa. Tập lệnh cài đặt giải mã một gói được mã hóa. Chuyển đổi dữ liệu dạng blob thành một tập hợp các tập lệnh thời gian chạy và ghi chúng vào một thư mục ẩn nằm dưới vị trí cấu hình nền tảng (các phiên bản forge-jsxy sử dụng đường dẫn chấm .forge-jsxy/runtime/v). (/ đường dẫn). Vì bản sao này nằm ngoài thư mục node_modules, việc xóa hoặc hủy xuất bản gói npm không xóa tác nhân đang chạy.
- Giai đoạn 2 — Kiên trì. Chuỗi này đăng ký một mục tự khởi động hệ điều hành để tác nhân khởi chạy lại khi khởi động lại hệ thống. Trên Windows, điều này chạy thông qua một kịch bản chẩn đoán PowerShell ẩn; tiến trình tác nhân được tạo ra ở chế độ tách biệt và với thuộc tính windowsHide được đặt để không có cửa sổ dòng lệnh nào xuất hiện.
- Giai đoạn 3 — né tránh. Môi trường runtime kiểm tra các dấu hiệu tích hợp liên tục và tự động thoát khi phát hiện môi trường CI, do đó các sandbox xây dựng tự động sẽ không thấy gì. Trong các phiên bản forge-jsxy, một bình luận trong mã nguồn cho biết trường forgeInstall hiển thị đã cố tình bị bỏ qua trong package.json “vì trường đó sẽ hiển thị trên npm” — nhà điều hành đã cố tình giữ siêu dữ liệu kích hoạt khỏi danh sách công khai.
- Giai đoạn 4 — Thu thập. Sau khi khởi chạy, tác nhân sẽ thu thập dữ liệu chỉ trong một lần xử lý:
- Vật liệu làm ví tiền điện tử. Danh sách mục tiêu secret_filename_patterns.json được đóng gói sẽ thực hiện quét hệ thống tệp để tìm wallet.dat, *.mnemonic /Các tệp .seed / *.phrase, keypair.json, Ethereum UTC– Các kho khóa, và các kho khóa *.p12 / *.pfx / *.jks. Các thư viện tạo ví (bip39, secp256k1, base58check và các công cụ hỗ trợ Solana) đều có trong gói.
- Tiện ích mở rộng ví điện tử trên trình duyệt. Mô-đun chromiumExtensionDbHarvest đọc các cơ sở dữ liệu lưu trữ tiện ích mở rộng cục bộ của trình duyệt Chromium, nơi các tiện ích mở rộng ví dựa trên trình duyệt lưu trữ dữ liệu kho tiền của chúng.
- Thông tin xác thực và bí mật. Phần mềm quét lịch sử lệnh shell và các tập tin chứa thông tin bí mật, đọc thông tin đăng nhập của nhà phát triển/đám mây, sau đó mã hóa thông tin đăng nhập HuggingFace để tải lên.
- Nhập dữ liệu trực tiếp. Nội dung clipboard, dữ liệu nhập từ bàn phím và ảnh chụp màn hình được ghi lại liên tục.
Giai đoạn 5 — rút luiDữ liệu thu thập được rời khỏi máy chủ thông qua ba bước. Các kênh hoạt động song song: Discord webhooks (discordWebhookPost) và một trình tải lên trung gian Discord giao tiếp với `discord.com/api/v10` (discordRelayUpload), các bài đăng tải trên HuggingFace Hub (hfUpload), và một Điểm cuối C2 được mã hóa cứng đã được truy cập qua cổng 9877. Một relayPackageServe Ngoài ra, mô-đun này còn trả về tệp forge-jsxy-package.tgz — giống hệt như vậy. Tên hiện vật được giữ nguyên trong mọi lần đổi tên.
Điểm cấu trúc quan trọng là các giai đoạn 1-3 được thực hiện trong quá trình cài đặt. Không có tương tác người dùng, và giai đoạn 1 đặt tải trọng vào một vị trí nào đó trong gói hàng. Người quản lý không theo dõi. Một nhà phát triển nhận thấy sự phụ thuộc bất thường và Lệnh `npm uninstall` xóa danh sách nhưng không xóa tác nhân.
Dữ liệu tải trọng cũng chống lại việc đọc nhanh. Các tập lệnh thời gian chạy không được cung cấp. Rõ ràng: bước mã hóa-triển khai giữ nguyên logic vận hành. Khối dữ liệu được mã hóa chỉ được giải mã thành các đoạn mã có thể đọc được sau khi hoàn tất chuỗi cài đặt. Giải mã nó thành thư mục runtime ẩn. Các tệp có thể nhìn thấy trên danh sách — miếng đệm mỏng sau khi lắp đặt và sự phân tán vật chất Trợ giúp — tiết lộ rất ít về những gì thực sự đang diễn ra. Việc phân phối được mã hóa này Thiết kế đã có tác động rõ rệt đến việc phân loại bệnh nhân: xuyên suốt vòng đời của gia đình, Nhiều biến thể đã được xác nhận đều được đánh giá là an toàn bằng hệ thống phân loại tự động. và nội dung dữ liệu đủ khó hiểu để ngăn chặn hoàn toàn quá trình xem xét tự động. Những hành vi tố cáo gia đình chỉ được phát hiện sau khi quá trình mã hóa hoàn tất. Giai đoạn được mở rộng và thời gian chạy được đọc trực tiếp.
Lịch Trình Sự Kiện
Tải trọng của gia đình vẫn duy trì ổn định đáng kể; điều thay đổi là... Tên trên hộp. Đường cong chạy từ logo "forge" mở hướng về phía được ngụy trang dưới dạng các công cụ dành cho nhà phát triển không liên quan.
| Ngày (2026) | Gói: phiên bản | Lưu ý |
|---|---|---|
| Tháng Năm (đầu tháng) | forge-jsxy:1.0.81, :1.0.90 | Các biến thể được xác nhận sớm nhất — RAT với C2 được mã hóa AES-256-GCM |
| 19 Tháng Năm | forge-jsxy:1.0.92 / 1.0.105 / 1.0.107 / 1.0.108 | Chiến dịch đang được triển khai; phiên bản 1.0.92 ban đầu bị dán nhãn sai là an toàn và đã được khôi phục lại sau khi xem xét lại mã. |
| Cuối tháng XNUMX | forge-jsx3 / forge-jsx4:1.0.122 / 1.0.123, zod-pino | Tên gói tương đương, cùng một chuỗi công cụ |
| Tháng Sáu 4 | forge-jsxy:1.0.120 | Tiếp tục; được mô hình ML phân loại là an toàn (sai sót) |
| Ngày 21–23 tháng 6 | forge-jsxy:1.0.121 | Bộ mô-đun không thay đổi so với phiên bản 1.0.120. |
| Tháng Bảy 6 | zredis-typed:1.0.127 | "Forge" đã bị lược bỏ khỏi tên; các tàu vẫn hoạt động. forge-jsxy-package.tgz và forgeAgent* khóa cấu hình |
| Tháng Bảy 7 | pinokio-redis:1.0.127 | Cùng một bộ công cụ; C2 mới; tự mô tả là sự tích hợp "Autodesk Forge". |
Có hai điểm nổi bật xuyên suốt dòng thời gian. Thứ nhất, số phiên bản 1.0.127 được cả zredis-typed và pinokio-redis sử dụng lại nguyên văn — tên gọi thay đổi nhưng dòng dõi xây dựng không bị thiết lập lại. Thứ hai, sự chuyển dịch khỏi các tên gọi “forge-*” trùng khớp với sự chuyển dịch sang các tên gọi dễ hiểu hơn, giống như cơ sở hạ tầng thông thường (redis, pinokio), làm giảm khả năng nhà phát triển chỉ lướt qua tên và do dự.
Các chỉ số về sự thỏa hiệp
Các IOC bên dưới đã bị vô hiệu hóa. Máy chủ C2 đã được xoay vòng giữa dòng forge-jsxy. và phiên bản mới nhất trong khi vẫn giữ nguyên cổng kết nối.
| chỉ số | Giá trị | Thay trong |
|---|---|---|
| Điểm cuối C2 | 212.193.3[.]61:9877 | pinokio-redis:1.0.127 |
| Điểm cuối C2 | 79.108.162[.]160:9877 | dòng forge-jsxy, zredis-typed:1.0.127 |
| Kênh thoát hiểm | discord.com/api/webhooks/… (Bài đăng webhook) | tất cả các biến thể |
| Kênh thoát hiểm | discord.com/api/v10 (Tải lên qua trung gian) | tất cả các biến thể |
| Kênh thoát hiểm | Tải lên từ HuggingFace Hub | tất cả các biến thể |
| Vật phẩm được phục vụ | forge-jsxy-package.tgz (Qua relayPackageServe) | tất cả các biến thể |
| Tệp chuỗi công cụ | chromiumExtensionDbHarvest, discordRelayUpload, discordWebhookPost, hfUpload, encode-hf-credentials, forge-jsx-explorer-* | tất cả các biến thể |
| Danh sách mục tiêu | secret_filename_patterns.json (wallet.dat, .mnemonic/.seed/.phrase, keypair.json, UTC--, .p12/.pfx/*.jks) | tất cả các biến thể |
| Thời gian chạy ẩn | say mê …/.forge-jsxy/runtime/v<version>/ Đường dẫn thư mục cấu hình | dòng forge-jsxy |
| Khả năng lưu trữ dữ liệu của Windows | tập lệnh tự khởi động ẩn PowerShell "chẩn đoán forge" | tất cả các biến thể |
| Cài đặt trình kích hoạt | Hook postinstall gọi chuỗi script dist-materialization | tất cả các biến thể |
Tín hiệu phát hiện bền vững nhất không phải là bất kỳ máy chủ hay webhook đơn lẻ nào — mà là những tín hiệu đó. xoay — nhưng tên tệp chuỗi công cụ và forge-jsxy-package.tgz hiện vật này vẫn được giữ nguyên vẹn qua mọi lần đổi tên.
Sự quy kết và hành vi quan sát được
Các gói phần mềm đã được xuất bản dưới nhiều tài khoản npm khác nhau. forge-jsxy dòng được sử dụng bởi nhà xuất bản jacksonkaandorp2 (jacksonkaandorp2@outlook[.]com); Biến thể pinokio-redis mới nhất được xuất bản bởi donimique (donimiqueakers@gmail.com). Cả hai tài khoản đều không có địa chỉ email đã được xác minh hoặc một kho lưu trữ nguồn được liên kết. Điểm chung giữa các tài khoản là... chuỗi công cụ, không phải danh tính nhà xuất bản — cùng tên mô-đun, cùng Đã phân phát tệp .tgz, và thiết kế trích xuất dữ liệu tương tự lặp lại bất kể ai là người phát hành.
Một số hành vi có thể quan sát được cho thấy đây là hành động cố ý che giấu chứ không phải là Thu gom quá mức ngoài ý muốn:
Môi trường thực thi được đặt bên ngoài thư mục node_modules trong một thư mục ẩn, do đó nó tồn tại lâu hơn gói phần mềm đã cung cấp nó.
Tác nhân sẽ thoát khỏi trạng thái hoạt động khi phát hiện môi trường CI, hạn chế khả năng tiếp xúc trong các môi trường phân tích tự động.
Quá trình xử lý của tác nhân được khởi chạy độc lập và cửa sổ ẩn. Trong các phiên bản forge-jsxy, một bình luận cho rằng việc thiếu trường cài đặt hiển thị có liên quan đến việc trường đó "hiển thị trên npm".
Các mô tả gói công khai không liên quan đến mã nguồn — pinokio-redis được giới thiệu như một tích hợp “Autodesk Forge”.
Một lỗ hổng phát hiện thường xuyên xuất hiện đáng chú ý đối với những người phòng thủ dựa vào... phân loại tự động: nhiều biến thể đã được xác nhận trong gia đình này là được phân loại là an toàn bởi một thuật toán phân loại ML trước khi quá trình xem xét mã nguồn sửa lỗi. Kết luận. Các yếu tố ổn định mà người đánh giá có thể dựa vào — thời gian cài đặt chuỗi, thời gian chạy ẩn, tên tệp chuỗi công cụ — chính xác là những thứ đó. Những thứ vẫn tồn tại sau khi đổi tên.
Chúng tôi mô tả những điều trên là hành vi quan sát được. Chúng tôi không quy kết cho ai cả. chiến dịch này nhắm đến bất kỳ cá nhân nào được nêu tên, và chúng tôi không đưa ra bất kỳ tuyên bố nào về nhà điều hành. danh tính hoặc mục tiêu vượt ra ngoài những gì mã nguồn và cơ sở hạ tầng thể hiện.
Tác động, xu hướng và hướng dẫn dành cho người bảo vệ
Ai bị lộ thông tin? Bộ sưu tập này nhắm thẳng vào các nhà phát triển. Các công cụ: ví tiền điện tử và kho khóa, tiện ích mở rộng ví trên trình duyệt, lịch sử lệnh shell và thông tin đăng nhập dịch vụ/đám mây. Bất kỳ ai cài đặt một gói hàng bị ảnh hưởng — trực tiếp hoặc gián tiếp phụ thuộc bắc cầu — trong suốt Cửa sổ thời gian nó hoạt động nằm trong phạm vi, và thiết kế tính bền vững có nghĩa là... Việc tiếp xúc không kết thúc khi bao bì được gỡ bỏ.
Vì sao sự kiên trì lại quan trọng. Vì giai đoạn 1 sao chép dữ liệu vào một thư mục thời gian chạy ẩn và đăng ký giai đoạn 2 tự động khởi động, thông thường bản năng khắc phục (gỡ cài đặt phần phụ thuộc lỗi, xóa node_modules, Việc cài đặt lại) không loại bỏ tác nhân. Nhóm xử lý sự cố phải tìm kiếm... Môi trường chạy ngoài cây thư mục và mục tự khởi động, chứ không chỉ riêng gói phần mềm.
Xu hướng. Gia đình này minh họa một mô hình đáng chú ý: một tải trọng ổn định và hoàn thiện, được bao bọc trong một dòng vật liệu dùng một lần.Tên gói phần mềm khác với bất kỳ tên nào đã được tạo trước đó. dễ nhận biết, hướng tới những cái tên nghe quen thuộc như cơ sở hạ tầng thông thường. Dựa trên tên gọi Danh sách chặn và danh tiếng nhà xuất bản sẽ nhanh chóng lỗi thời trước điều này; hành vi- và các tín hiệu dựa trên hiện vật thì không.
Dành cho nhà phát triển và người tiêu dùng
Hãy coi các tập lệnh cài đặt là điểm rủi ro chính. Cài đặt mà không bật các tập lệnh nếu có thể và xem xét bất kỳ phụ thuộc nào khai báo sau khi cài đặt. Xác định và kiểm tra kỹ các phụ thuộc bắc cầu; loại phần mềm độc hại này có thể xâm nhập dễ dàng thông qua phụ thuộc con cũng như phụ thuộc trực tiếp.
Trên máy chủ bị nghi ngờ, hãy tìm kiếm ngoài gói phần mềm: tìm thư mục runtime ẩn trong vị trí cấu hình nền tảng, mục tự khởi động bất ngờ, và các kết nối đi ra tới webhook Discord hoặc các điểm cuối :9877.
Giả định rằng bất kỳ cụm từ hạt giống ví, kho khóa hoặc thông tin xác thực nào có trên máy chủ bị ảnh hưởng trong khoảng thời gian xảy ra sự cố đều bị xâm phạm, và hãy thay thế chúng.
Dành cho các cơ quan đăng ký và phòng thủ
Cảnh báo về các hiện vật bền vững (forge-jsxy-package.tgz, forge-jsx-explorer-* / chromiumExtensionDbHarvest / discordRelayUpload) (tên tệp) chứ không phải tên gói, tên này có thể thay đổi.
Đánh dấu tổ hợp cấu trúc mà gia đình dựa vào — một quá trình cài đặt sau đó sẽ hiện thực hóa các tập lệnh vào một đường dẫn thư mục cấu hình ẩn cộng với hệ điều hành. Đăng ký tự khởi động — độc lập với các chuỗi ký tự cụ thể liên quan.
Tên trên bao bì đã thay đổi ít nhất bốn lần; thùng hàng bên trong Không phải vậy. Việc phát hiện dựa trên hoạt động của mã nguồn đã tồn tại lâu hơn mọi thứ. Việc dán nhãn lại cho đến nay.







