Các nhà nghiên cứu Cybersecurity đã phát hiện một cuộc tấn công chuỗi cung ứng mới, trong đó các gói hợp pháp trên npm và kho lưu trữ Python Package Index (PyPI) đã bị xâm nhập để đẩy các phiên bản độc hại, nhằm mục đích đánh cắp thông tin đăng nhập ví và thực thi mã từ xa.
Các phiên bản bị xâm nhập của hai gói được liệt kê dưới đây:
- @dydxprotocol/v4-client-js (npm) - 3.4.1, 1.22.1, 1.15.2, 1.0.31
- dydx-v4-client (PyPI) - 1.1.5post1
"Các gói @dydxprotocol/v4-client-js (npm) và dydx-v4-client (PyPI) cung cấp cho các nhà phát triển công cụ để tương tác với giao thức dYdX v4, bao gồm ký giao dịch, đặt lệnh và quản lý ví," nhà nghiên cứu bảo mật Socket Kush Pandya lưu ý. "Các ứng dụng sử dụng các gói này xử lý các hoạt động tiền điện tử nhạy cảm."
dYdX là một sàn giao dịch tiền điện tử phi tập trung, không giám sát để giao dịch ký quỹ và hoán đổi vĩnh viễn, đồng thời cho phép người dùng giữ toàn quyền kiểm soát tài sản của họ. Trên trang web của mình, sàn giao dịch DeFi này cho biết đã vượt mốc 1.5 nghìn tỷ USD khối lượng giao dịch tích lũy.
Mặc dù hiện chưa rõ cách thức các bản cập nhật độc hại này được đẩy lên, nhưng nghi ngờ đây là trường hợp tài khoản nhà phát triển bị xâm phạm, vì các phiên bản độc hại được xuất bản bằng thông tin đăng nhập phát hành hợp pháp.
Các thay đổi do tác nhân đe dọa đưa ra đã nhắm mục tiêu vào cả hệ sinh thái JavaScript và Python với các payload khác nhau. Trong trường hợp npm, mã độc hoạt động như một công cụ đánh cắp ví tiền điện tử, thu thập seed phrases và thông tin thiết bị. Mặt khác, gói Python còn tích hợp một Remote Access Trojan (RAT) cùng với chức năng đánh cắp ví.
Thành phần RAT, được chạy ngay khi gói được nhập, sẽ liên hệ với một máy chủ bên ngoài ("dydx.priceoracle[.]site/py") để lấy các lệnh thực thi tiếp theo trên máy chủ. Trên các hệ thống Windows, nó sử dụng cờ "CREATE_NO_WINDOW" để đảm bảo rằng nó được thực thi mà không có cửa sổ console.
"Tác nhân đe dọa đã thể hiện kiến thức chi tiết về cấu trúc bên trong của gói, chèn mã độc vào các tệp registry cốt lõi (registry.ts, registry.js, account.py) mà sẽ được thực thi trong quá trình sử dụng gói bình thường," Pandya cho biết.
"Việc mã hóa 100 vòng lặp trong phiên bản PyPI và việc triển khai phối hợp trên nhiều hệ sinh thái cho thấy tác nhân đe dọa đã có quyền truy cập trực tiếp vào cơ sở hạ tầng xuất bản thay vì khai thác một lỗ hổng kỹ thuật trong chính các registry."
Sau khi được tiết lộ một cách có trách nhiệm vào ngày 28 tháng 1 năm 2026, dYdX đã thừa nhận sự cố trong một loạt bài đăng trên X, và khuyến nghị người dùng đã tải xuống các phiên bản bị xâm nhập nên cách ly máy bị ảnh hưởng, chuyển tiền sang ví mới từ một hệ thống sạch và xoay vòng tất cả API keys và thông tin đăng nhập.
"Các phiên bản dydx-v4-clients được lưu trữ trong GitHub của dydxprotocol không chứa mã độc," họ nói thêm.
Đây không phải là lần đầu tiên hệ sinh thái dYdX trở thành mục tiêu của các cuộc tấn công chuỗi cung ứng. Vào tháng 9 năm 2022, Mend và Bleeping Computer đã báo cáo một trường hợp tương tự, trong đó tài khoản npm của một nhân viên dYdX bị chiếm đoạt để xuất bản các phiên bản mới của nhiều gói npm có chứa mã để đánh cắp thông tin đăng nhập và dữ liệu nhạy cảm khác.
Hai năm sau đó, sàn giao dịch này cũng tiết lộ rằng trang web liên quan đến nền tảng dYdX v3 đã ngừng hoạt động của họ đã bị xâm nhập để chuyển hướng người dùng đến một trang web phishing nhằm mục đích rút cạn ví của họ.
"Khi nhìn nhận cùng với vụ xâm nhập chuỗi cung ứng npm năm 2022 và sự cố DNS hijacking năm 2024, cuộc tấn công này cho thấy một mô hình dai dẳng của các đối thủ nhắm mục tiêu vào các tài sản liên quan đến dYdX thông qua các kênh phân phối đáng tin cậy," Socket cho biết.
"Việc triển khai đánh cắp thông tin đăng nhập gần như giống hệt nhau trên các ngôn ngữ cho thấy một kế hoạch có chủ đích. Tác nhân đe dọa đã duy trì các điểm cuối exfiltration, API keys và logic định danh thiết bị nhất quán trong khi triển khai các vector tấn công đặc thù theo hệ sinh thái. Phiên bản npm tập trung vào việc đánh cắp thông tin đăng nhập, trong khi phiên bản PyPI bổ sung quyền truy cập hệ thống liên tục."
Rủi ro chuỗi cung ứng với các gói không tồn tại
Tiết lộ này được đưa ra khi Aikido trình bày chi tiết cách các gói npm được tham chiếu trong các tệp README và script nhưng chưa bao giờ thực sự được xuất bản lại tạo ra một vector tấn công chuỗi cung ứng hấp dẫn, cho phép một tác nhân đe dọa xuất bản các gói dưới những tên đó để phân phối mã độc.
Phát hiện này là biểu hiện mới nhất của sự tinh vi ngày càng tăng của các mối đe dọa chuỗi cung ứng phần mềm, cho phép các tác nhân xấu xâm nhập nhiều người dùng cùng lúc bằng cách khai thác sự tin cậy liên quan đến các kho lưu trữ mã nguồn mở.
"Những kẻ tấn công tinh vi đang di chuyển lên phía trên chuỗi cung ứng phần mềm vì nó cung cấp một đường dẫn truy cập ban đầu sâu, ít gây tiếng ồn vào các môi trường hạ nguồn," Omer Kidron của Sygnia cho biết.
"Cách tiếp cận tương tự hỗ trợ cả sự xâm nhập chính xác (một nhà cung cấp, người bảo trì hoặc danh tính bản dựng cụ thể) và các cuộc tấn công cơ hội trên quy mô lớn ('spray') thông qua các hệ sinh thái được tin cậy rộng rãi – khiến nó phù hợp với tất cả các tổ chức, bất kể họ có tự coi mình là mục tiêu chính hay không."
Phân tích của Aikido cho thấy 128 gói ảo này đã có tổng cộng 121.539 lượt tải xuống từ tháng 7 năm 2025 đến tháng 1 năm 2026, trung bình 3.903 lượt tải xuống mỗi tuần và đạt đỉnh 4.236 lượt tải xuống vào tháng trước. Các gói có nhiều lượt tải xuống nhất được liệt kê dưới đây:
- openapi-generator-cli (48.356 lượt tải xuống), mô phỏng @openapitools/openapi-generator-cli
- cucumber-js (32.110 lượt tải xuống), mô phỏng @cucumber/cucumber
- depcruise (15.637 lượt tải xuống), mô phỏng dependency-cruiser
- jsdoc2md (4.641 lượt tải xuống)
- grpc_tools_node_protoc (4.518 lượt tải xuống)
- vue-demi-switch (1.166 lượt tải xuống)
"Openapi-generator-cli đã có 3.994 lượt tải xuống chỉ trong bảy ngày qua," nhà nghiên cứu bảo mật Charlie Eriksen cho biết. "Đó là gần 4.000 lần ai đó cố gắng chạy một lệnh không tồn tại. Trong một tuần."
Những phát hiện này làm nổi bật một điểm mù trong các biện pháp bảo vệ typosquatting của npm, vốn chủ động chặn các nỗ lực yêu cầu các tên có cách viết tương tự với các gói hiện có, nhưng không ngăn cản người dùng tạo các gói với những tên chưa bao giờ được đăng ký ngay từ đầu, vì không có gì để so sánh.
Để giảm thiểu rủi ro này với npx confusion, Aikido khuyến nghị thực hiện các bước sau:
- Sử dụng "npx --no-install" để chặn registry fallback, khiến việc cài đặt thất bại nếu không tìm thấy gói cục bộ.
- Cài đặt các công cụ CLI một cách rõ ràng.
- Xác minh rằng một gói tồn tại nếu tài liệu yêu cầu người dùng chạy nó.
- Đăng ký các alias và lỗi chính tả rõ ràng để ngăn chặn tác nhân xấu chiếm đoạt.
"Hệ sinh thái npm có hàng triệu gói," Eriksen nói. "Các nhà phát triển chạy lệnh npx hàng nghìn lần mỗi ngày. Khoảng cách giữa 'mặc định tiện lợi' và 'thực thi mã tùy ý' là một tên gói chưa được xác nhận."