Skip to main content

Command Palette

Search for a command to run...

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

Updated
15 min read
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 MiasmaHades.

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áclợ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

  1. bramin@0.0.2

  2. bramin@0.0.3

  3. bramin@0.0.4

  4. cmd2func@0.2.2

  5. cmd2func@0.2.3

  6. coolbox@0.4.1

  7. coolbox@0.4.2

  8. dynamo-release@1.5.4

  9. executor-engine@0.3.4

  10. executor-engine@0.3.5

  11. executor-http@0.1.3

  12. executor-http@0.1.4

  13. funcdesc@0.2.2

  14. funcdesc@0.2.3

  15. magique@0.6.8

  16. magique@0.6.9

  17. magique-ai@0.4.4

  18. magique-ai@0.4.5

  19. mrbios@0.1.1

  20. mrbios@0.1.2

  21. napari-ufish@0.0.2

  22. napari-ufish@0.0.3

  23. nucbox@0.1.2

  24. nucbox@0.1.3

  25. okite@0.0.7

  26. okite@0.0.8

  27. pantheon-agents@0.6.1

  28. pantheon-agents@0.6.2

  29. pantheon-toolsets@0.5.5

  30. pantheon-toolsets@0.5.6

  31. spateo-release@1.1.2

  32. synago@0.1.1

  33. synago@0.1.2

  34. ufish@0.1.2

  35. ufish@0.1.3

  36. uprobe@0.1.3

  37. uprobe@0.1.4

Hashes

  1. dc48b09b2a5954f7ff79ab8a2fd80202bd3b59c08c7cdbc6025aa923cb4c0efe (Variant 1, 4.8 MB, 17 packages)

  2. e1342a80d4b5e83d2c7c22e1e0aaa95f2d88e3dbf0d853a4994b180c93a4b17d (Variant 2, 4.7 MB, 2 packages)

  3. c539766062555d47716f8432e73adbe3a0c0c954a0b6c4005017a668975e275c

Files

  1. *-setup.pth

  2. _index.js

Loader strings

  1. .bun_ran

  2. bun-v1.3.13

  3. oven-sh/bun/releases/download

  4. urllib.request

  5. urlretrieve

  6. tempfile.gettempdir

  7. subprocess.run

Network

  1. hxxps://api[.]anthropic[.]com/v1/api - legitimate Anthropic API host abused as a camouflage exfiltration destination

GitHub exfiltration markers

  1. Hades - The End for the Damned

  2. IfYouYankThisTokenItWillNukeTheComputerOfTheOwnerFully

  3. results/results-*.json

  4. format-results

  5. Run 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

More from this blog

F

FPT IS Security

831 posts

Dedicated to providing insightful articles on cybersecurity threat intelligence, aimed at empowering individuals and organizations to navigate the digital landscape safely.