Shai-Hulud Trở Lại: Khi Chỉ Một Lệnh pip install Có Thể Đánh Cắp Toàn Bộ Secrets Của Bạn

Tổng quan chiến dịch
Tháng 6/2026 đã đánh dấu một sự leo thang đáng báo động của chiến dịch malware supply chain mang tên Shai-Hulud, khi các biến thể mới đã mở rộng từ hệ sinh thái Node.js sang Python, ảnh hưởng trực tiếp tới hơn 100 package trên hai kho phần mềm lớn nhất thế giới là npm và PyPI.
Ban đầu xuất hiện vào cuối năm 2025 dưới dạng một malware chuyên đánh cắp secrets trong môi trường phát triển phần mềm, Shai-Hulud đã nhanh chóng tiến hóa thành một loại worm có khả năng tự lây lan thông qua chính các package nguồn mở bị xâm phạm. Sau khi mã nguồn của biến thể Mini Shai-Hulud được công khai bởi nhóm TeamPCP vào tháng 5/2026, nhiều nhóm tấn công khác đã nhanh chóng tạo ra các phiên bản mới mang tên Miasma và Hades.
Các chiến dịch này đã làm nhiễm độc hơn 100 package thuộc nhiều lĩnh vực khác nhau, bao gồm các package được sử dụng trong môi trường doanh nghiệp, công cụ DevOps, các thư viện bioinformatics, AI tooling và thậm chí cả các package liên quan tới hệ sinh thái Red Hat.
Mục tiêu chính của malware là thu thập GitHub Personal Access Tokens (PAT), cloud credentials (AWS, Azure, GCP), SSH keys, CI/CD secrets, Docker configurations và các cấu hình liên quan đến AI coding assistants như Cursor, Claude Code hay GitHub Copilot.
Timeline sự kiện
| Thời gian | Sự kiện |
|---|---|
| Sep 2025 | Shai-Hulud lần đầu được phát hiện trên npm dưới dạng malware đánh cắp secrets |
| Q1 2026 | Một số thành phần của chiến dịch liên quan đến vụ compromise Trivy vulnerability scanner |
| Mid-May 2026 | TeamPCP công khai source code Mini Shai-Hulud |
| Cuối May 2026 | Các biến thể clone bắt đầu xuất hiện trên GitHub |
| 01/06/2026 | Red Hat xác nhận 32 package npm bị nhiễm malware |
| 01–05/06/2026 | Wave Miasma đầu tiên xuất hiện, ảnh hưởng hơn 57 package npm với trên 300 malicious versions |
| 07/06/2026 | Socket phát hiện Hades Wave 1 trên PyPI, ảnh hưởng 19 package và 37 malicious wheels |
| 08/06/2026 | Hades Wave 2 xuất hiện với hơn 29 package mới, tập trung vào bioinformatics và MCP ecosystem |
| 09/06/2026 | SecurityWeek ghi nhận tổng cộng 471 malicious artifacts liên quan tới chiến dịch |
| Hiện tại | Hoạt động lây lan vẫn đang được theo dõi |
Danh sách các packages ảnh hưởng
Miasma Mini Shai-Hulud Supply Chain Attack - Socket
Chuỗi tấn công chính
Điểm khác biệt khiến Shai-Hulud trở thành một trong những chiến dịch supply chain đáng chú ý nhất trong năm 2026 nằm ở khả năng kết hợp giữa đánh cắp credentials, tự lây lan sang package khác và lợi dụng chính hạ tầng phát triển phần mềm của nạn nhân để mở rộng quy mô tấn công. Không giống các chiến dịch typosquatting truyền thống vốn phụ thuộc vào việc đánh lừa người dùng cài đặt package giả mạo, Shai-Hulud nhắm trực tiếp vào các package hợp pháp đã bị xâm phạm hoặc các tài khoản maintainer bị đánh cắp.
Giai đoạn 1: Package bị Trojan hóa
Bước đầu tiên của chiến dịch là đưa mã độc vào các package hợp pháp. Trong nhiều trường hợp, kẻ tấn công không tạo package giả mà lợi dụng quyền truy cập vào tài khoản maintainer hoặc quy trình phát hành phần mềm để chèn payload vào phiên bản mới của package.
Khi người dùng thực hiện: npm install <package> hoặc pip install <package> thì họ chỉ nghĩ rằng mình đang cài các package còn thiếu nhưng không, thay vào đó họ đã cài đặt một package hợp lệ nhưng đã được bổ sung thêm thành phần độc hại.
Điều này khiến việc phát hiện trở nên khó khăn hơn đáng kể bởi tên package, metadata và chức năng chính của thư viện vẫn hoàn toàn bình thường.
Giai đoạn 2A: Miasma – Kích Hoạt Qua Node.js Build Process
Đối với biến thể Miasma trên npm, malware tận dụng cơ chế build native modules của Node.js để thực thi payload trong quá trình cài đặt package.
File binding.gyp được thiết kế để kích hoạt quá trình build thông qua node-gyp. Khi tiến trình build diễn ra, mã độc sẽ được thực thi mà không yêu cầu bất kỳ hành động bổ sung nào từ người dùng.
Kỹ thuật này đặc biệt hiệu quả vì các developer thường xem quá trình build dependency là hành vi bình thường và ít khi theo dõi chi tiết những gì đang diễn ra trong giai đoạn cài đặt package.
Giai đoạn 2B: Hades – Lạm Dụng Python Startup Hook
Trong khi đó, biến thể Hades trên PyPI sử dụng một kỹ thuật tinh vi hơn nhiều thông qua cơ chế .pth của Python.
Sau khi package được cài đặt, malware sẽ thả một file có dạng: <package>-setup.pth vào thư mục site-packages.
Khác với các file Python thông thường, mọi file .pth đều được Python interpreter xử lý tự động trong quá trình khởi động. Điều này đồng nghĩa với việc mã độc có thể được thực thi ngay khi người dùng mở Python hoặc bất kỳ ứng dụng nào sử dụng Python.
Để hình dung rõ hơn thì chúng ta có thể xem chuỗi lây nhiễm như sau:
Đây là một trong những kỹ thuật nguy hiểm nhất được ghi nhận trong chiến dịch Hades bởi malware không cần được import hoặc gọi trực tiếp. Chỉ cần một tiến trình Python khởi động, payload đã có thể được kích hoạt.
Giai đoạn 3: Tải Và Thực Thi Payload
Sau khi được kích hoạt, Hades sẽ tải Bun Runtime từ GitHub.
Việc lựa chọn Bun thay vì Node.js cho thấy tác nhân đe dọa đang hướng tới khả năng tái sử dụng mã nguồn giữa nhiều nền tảng khác nhau. Payload chính được viết bằng JavaScript và được lưu trong file _index.js với nhiều lớp obfuscation nhằm tránh bị phát hiện.
Các thành phần này chịu trách nhiệm:
Thu thập thông tin hệ thống
Truy cập credentials
Kết nối đến hạ tầng điều khiển
Chuẩn bị cho giai đoạn tự lây lan
Giai đoạn 4: Credential Harvesting
Sau khi giành được quyền thực thi trên hệ thống nạn nhân, malware bắt đầu tìm kiếm các thông tin xác thực có giá trị.
Mục tiêu bao gồm:
GitHub Personal Access Tokens
GitHub Actions Secrets
AWS Credentials
Azure Credentials
GCP Service Accounts
SSH Keys
Docker Configurations
.env Files
Kubernetes Tokens
AI Assistant Configurations
Các nhà nghiên cứu ghi nhận Hades đặc biệt quan tâm đến các môi trường phát triển hiện đại, nơi developer thường lưu trữ nhiều loại secrets trên cùng một thiết bị.
Ngoài cloud credentials và SSH keys, malware còn thu thập cấu hình từ các công cụ AI coding assistant như GitHub Copilot, Cursor và Claude Code, cho thấy các tác nhân đe dọa đang bắt đầu mở rộng mục tiêu sang hệ sinh thái AI development.
Giai đoạn 5: Exfiltration Thông Qua GitHub
Một điểm đáng chú ý khác là malware không sử dụng máy chủ C2 truyền thống.
Thay vào đó, dữ liệu đánh cắp được đẩy lên các GitHub repositories do kẻ tấn công kiểm soát.
Việc sử dụng GitHub làm kênh exfiltration giúp lưu lượng mạng trông giống hoạt động phát triển phần mềm thông thường, từ đó giảm khả năng bị phát hiện bởi các giải pháp giám sát mạng.
Giai đoạn 6: Self-Propagation
Đây là giai đoạn khiến Shai-Hulud trở nên khác biệt so với phần lớn malware supply chain từng được ghi nhận trước đây.
Sau khi đánh cắp được credentials, malware sẽ tìm cách truy cập: GitHub repositories, npm accounts, PyPI accounts, CI/CD pipelines. Từ đó phát hành thêm các package độc hại mới.
Chu trình này tạo thành một vòng lặp tự nhân rộng, biến chiến dịch từ một cuộc tấn công đánh cắp dữ liệu đơn lẻ thành một supply-chain worm có khả năng lây lan theo chiều ngang trong cùng hệ sinh thái phần mềm.
Tóm Tắt Ảnh Hưởng Của Chiến Dịch Shai-Hulud
| Danh mục | Ảnh hưởng |
|---|---|
| Quy mô | Hơn 100 package npm và PyPI bị nhiễm, tạo ra 471+ malicious artifacts |
| Đối tượng bị nhắm | Developer, Maintainer, DevOps, AI Engineers, Bioinformatics Researchers |
| Package bị ảnh hưởng | npm packages, PyPI packages, AI tooling, Bioinformatics libraries, MCP ecosystem |
| Dữ liệu bị đánh cắp | GitHub PAT, GitHub Actions Tokens, AWS/Azure/GCP Credentials, SSH Keys, Docker Configs, .env files |
| AI Assets | Cấu hình và token của GitHub Copilot, Cursor, Claude Code và các AI Coding Assistant |
| Tác động đến Developer | Mất quyền kiểm soát GitHub account, lộ source code, lộ secrets và tài nguyên cloud |
| Tác động đến Doanh nghiệp | Compromise CI/CD, phát hành package độc hại, rủi ro supply chain lan sang khách hàng |
| Tác động đến Cloud | Truy cập trái phép AWS, Azure, GCP, Kubernetes clusters và tài nguyên AI/ML |
| Khả năng lây lan | Malware sử dụng credentials đánh cắp để tiếp tục publish package độc hại mới |
| Kênh Exfiltration | GitHub repositories được sử dụng làm C2 và nơi lưu trữ dữ liệu đánh cắp |
| Điểm nguy hiểm nhất | Đây là một trong những chiến dịch đầu tiên có khả năng self-propagating supply-chain worm trên npm/PyPI |
| Mức độ rủi ro | Critical – Có khả năng ảnh hưởng đồng thời đến developer, source code, CI/CD và cloud infrastructure |
MITRE ATT&CK Mapping
| Tactic | Technique | ID | Mô tả |
|---|---|---|---|
| Initial Access | Supply Chain Compromise | T1195.001 | Trojanized packages trên PyPI/NPM |
| Execution | Command and Scripting Interpreter: Python | T1059.006 | .pth file abuse → Python startup hook |
| Execution | Command and Scripting Interpreter: JavaScript | T1059.007 | Bun runtime execute _index.js |
| Persistence | Boot or Logon Initialization Scripts | T1037 | .pth file persist across Python sessions |
| Credential Access | Credentials from Password Stores | T1555 | Harvest từ .env, configs |
| Credential Access | Steal Application Access Token | T1528 | GitHub PAT, cloud tokens |
| Collection | Data from Local System | T1005 | AWS/GCP keys, SSH keys |
| Exfiltration | Exfiltration to Cloud Storage | T1567 | GitHub repos làm C2/exfil |
| Defense Evasion | Obfuscated Files or Information | T1027 | _index.js obfuscated, encrypted components |
| Defense Evasion | Process Injection | T1055 | Memory read /proc/pid/mem, Mach APIs |
| Lateral Movement | Account Manipulation | T1098 | Dùng stolen tokens để infect packages khác |
Nhận định chuyên gia
Từ góc độ phân tích mối đe dọa, Shai-Hulud không đơn thuần là một chiến dịch đánh cắp credentials mà là dấu hiệu cho thấy các cuộc tấn công supply chain đang bước sang một giai đoạn mới: tự động hóa, tự lây lan và có khả năng mở rộng ở quy mô công nghiệp.
Điểm đáng chú ý nhất của chiến dịch này nằm ở khả năng self-propagation theo chiều ngang trong cùng hệ sinh thái phần mềm. Trong nhiều năm qua, các cuộc tấn công chuỗi cung ứng phổ biến thường xoay quanh typosquatting, dependency confusion hoặc chiếm quyền một số package phổ biến để phát tán mã độc. Tuy nhiên, Shai-Hulud đã tiến xa hơn khi sử dụng chính các credentials bị đánh cắp để tiếp tục xâm nhập tài khoản maintainer, CI/CD pipeline hoặc repository khác, từ đó phát hành thêm các phiên bản package độc hại mới. Mô hình lây lan này khiến malware hoạt động tương tự một "worm" trong hệ sinh thái mã nguồn mở, nơi mỗi nạn nhân mới có thể trở thành bàn đạp cho các đợt tấn công tiếp theo.
Đối với Việt Nam, chiến dịch này có mức độ liên quan rất cao. Hầu hết các nhóm phát triển phần mềm hiện nay đều phụ thuộc vào các package từ npm và PyPI trong quá trình phát triển sản phẩm. Việc sử dụng các lệnh như pip install hoặc npm install gần như diễn ra hàng ngày trong môi trường làm việc. Trong khi đó, nhiều doanh nghiệp vẫn tập trung vào quét lỗ hổng mã nguồn hoặc kiểm tra dependencies trước khi triển khai mà chưa đầu tư tương xứng cho các giải pháp giám sát hành vi thực thi (runtime security) trên máy phát triển và hệ thống CI/CD. Điều này tạo ra khoảng trống đáng kể khi các kỹ thuật như .pth startup hook của Hades có thể thực thi mã độc mà không cần tương tác trực tiếp từ người dùng.
Khuyến nghị
Đối Với Developer Cá Nhân
Trước tiên, hãy kiểm tra lại các package đã cài đặt hoặc cập nhật trong thời gian gần đây, đặc biệt là các thư viện liên quan đến AI, machine learning, bioinformatics hoặc các package mới được giới thiệu trên mạng xã hội và diễn đàn kỹ thuật.
Nếu từng cài đặt một trong các package nằm trong danh sách bị ảnh hưởng, hãy coi toàn bộ credentials trên máy phát triển là có khả năng đã bị lộ. Người dùng nên:
Đổi ngay GitHub Personal Access Token (PAT)
Tạo mới SSH Keys
Thu hồi và cấp lại API Keys
Thay đổi các cloud credentials đang sử dụng
Kiểm tra lịch sử đăng nhập GitHub và các nền tảng cloud
Đối Với Nhóm Phát Triển Phần Mềm
Các nhóm phát triển cần hạn chế việc cài đặt package trực tiếp từ Internet mà không thông qua quy trình đánh giá bảo mật.
Một số biện pháp nên áp dụng ngay:
Chỉ sử dụng package từ nguồn đáng tin cậy
Kiểm tra lịch sử cập nhật của package trước khi nâng cấp phiên bản
Pin version thay vì sử dụng phiên bản mới nhất
Xác thực checksum hoặc hash của package quan trọng
Thường xuyên rà soát dependency tree
Đặc biệt, không nên cấp quyền quá mức cho các token được sử dụng trong môi trường phát triển. Các GitHub PAT hoặc cloud credentials chỉ nên được cấp đúng phạm vi cần thiết để giảm thiểu thiệt hại nếu bị đánh cắp.
Đối Với Doanh Nghiệp
Các tổ chức cần xem các máy tính của lập trình viên là mục tiêu tấn công có giá trị cao, bởi đây là nơi lưu trữ source code, credentials và quyền truy cập vào hệ thống CI/CD.
Doanh nghiệp nên:
Giám sát hoạt động bất thường trên GitHub, GitLab và các nền tảng cloud
Áp dụng xác thực đa yếu tố (MFA) cho tất cả tài khoản quan trọng
Thường xuyên luân chuyển (rotate) access tokens và secrets
Tách biệt môi trường phát triển với môi trường sản xuất
Triển khai giải pháp phát hiện hành vi bất thường trên endpoint
Ngoài ra, cần xây dựng quy trình ứng phó khi phát hiện package bị compromise, bao gồm việc thu hồi credentials, đánh giá phạm vi ảnh hưởng và kiểm tra các package nội bộ đã phát hành.
IOC
Malicious PyPI Artifacts
Hashes
dc48b09b2a5954f7ff79ab8a2fd80202bd3b59c08c7cdbc6025aa923cb4c0efe(Variant 1, 4.8 MB, 17 packages)e1342a80d4b5e83d2c7c22e1e0aaa95f2d88e3dbf0d853a4994b180c93a4b17d(Variant 2, 4.7 MB, 2 packages)c539766062555d47716f8432e73adbe3a0c0c954a0b6c4005017a668975e275c
Files
*-setup.pth_index.js
Loader strings
.bun_ranbun-v1.3.13oven-sh/bun/releases/downloadurllib.requesturlretrievetempfile.gettempdir
Network
hxxps://api[.]anthropic[.]com/v1/api- legitimate Anthropic API host abused as a camouflage exfiltration destination
GitHub exfiltration markers
Hades - The End for the DamnedIfYouYankThisTokenItWillNukeTheComputerOfTheOwnerFullyresults/results-*.jsonformat-resultsRun Copilot
Tham khảo
Shai-Hulud Descends to Hades: Miasma Worm Campaign Spreads w...
New Shai-Hulud attack trojanizes 19 science-focused PyPI packages
Shai-Hulud Malware Campaign Abuses 23 PyPI Packages in Developer-Focused Attack





