AsyncAPI Under Attack: Khi 2 Triệu Lượt Tải Mỗi Tuần Trở Thành Con Đường Phát Tán Malware

Search for a command to run...

No comments yet. Be the first to comment.
Tổng quan chiến dịch Các chuyên gia bảo mật vừa công bố HollowGraph một loại malware .NET NativeAOT dùng calendar của mailbox Microsoft 365 bị chiếm quyền làm kênh C2 hai chiều. Toàn bộ tasking và exf
Tổng Quan Một chiến dịch tấn công bằng dòng mã độc tống tiền mới mang tên Spirals đã ghi nhận vụ việc đầu tiên mã hóa thành công toàn bộ hệ thống của một công ty dịch vụ IT tại Nam Á chỉ trong vòng ch

Tóm tắt rủi ro Bạn bảo một web agent: "tóm tắt giúp tôi các review trên trang này". Một review giả do kẻ tấn công đăng lên khiến agent bấm nhầm nút "Buy Now", và đơn hàng được đặt. Không malware, khôn

Campaign Summary A Russian-speaking criminal group tracked by Cisco Talos as UAT-11795 has been running a continuous campaign since at least June 2025, distributing malware inside trojanized installer

Tóm tắt chiến dịch Nhóm tội phạm nói tiếng Nga được Cisco Talos theo dõi dưới định danh UAT-11795 đã hoạt động liên tục từ ít nhất tháng 06/2025, phát tán mã độc thông qua các bộ cài đặt phần mềm hợp

Vào ngày 14/07/2026, kẻ tấn công đã xâm nhập thành công tổ chức AsyncAPI trên npm — một trong những dự án mã nguồn mở phổ biến nhất cho các API event-driven, và tiêm mã độc vào 4 gói npm với tổng cộng hơn 2 triệu lượt tải mỗi tuần. Đây là một cuộc tấn công chuỗi cung ứng phần mềm (software supply chain attack) cực kỳ tinh vi, kết hợp ba loại malware: info-stealer, crypto-stealer, và Remote Access Trojan (RAT).
Điểm đặc biệt nguy hiểm: cuộc tấn công không sử dụng post-install script (đã bị npm v12 chặn), mà thay vào đó nhúng mã độc trực tiếp vào file JavaScript chính của mỗi gói. Malware được kích hoạt ngay khi module bị import/require — khiến lệnh npm install --ignore-scripts hoàn toàn vô dụng.
| Gói npm | Phiên bản bị nhiễm | Phiên bản an toàn | Lượt tải/tuần (ước tính) |
|---|---|---|---|
@asyncapi/generator |
3.3.1 | 3.3.0 | ~100K |
@asyncapi/generator-helpers |
1.1.1 | 1.1.0 | ~50K |
@asyncapi/generator-components |
0.7.1 | 0.7.0 | ~50K |
@asyncapi/specs |
6.11.2, 6.11.2-alpha.1 | 6.11.1 | ~2.7M |
| Thời điểm | Sự kiện | Ý nghĩa |
|---|---|---|
| 29/04/2026 | Lỗ hổng pull_request_target trong repo asyncapi/generator được xác định bằng Proof-of-Concept |
Kẻ tấn công (hoặc bên thứ ba) đã biết cách khai thác từ sớm |
| 17/05/2026 | Bản fix được đề xuất qua Pull Request | Bản fix CHƯA được merge — để ngỏ cửa sổ khai thác gần 2 tháng |
| 14/07/2026 | Ngày tấn công diễn ra | Lỗ hổng vẫn tồn tại trên production |
| Thời gian (UTC) | Giai đoạn | Hành động | Chi tiết kỹ thuật | Tác động |
|---|---|---|---|---|
| 05:08 | Stage 0 — Credential Theft | Mở 37 Pull Request vào repository asyncapi/generator |
Một Pull Request chứa mã JavaScript đã được obfuscate, được thiết kế để thực thi trong workflow pull_request_target. Các PR còn lại đóng vai trò tạo "nhiễu" nhằm che giấu PR độc hại. |
Đánh lạc hướng maintainer và tạo điều kiện cho quá trình đánh cắp thông tin xác thực diễn ra âm thầm. |
| 05:08 – 06:57 | Stage 0 — Credential Theft | Workflow CI/CD bị lợi dụng để đánh cắp token của release bot | Workflow pull_request_target checkout mã nguồn từ branch của kẻ tấn công thay vì base branch, khiến mã độc được thực thi với quyền truy cập vào repository secrets và GitHub Actions token. |
Kẻ tấn công chiếm được npm publish token hợp pháp, mở đường cho việc phát hành package độc hại. |
| 06:58 | Stage 1 — Code Injection | Push commit độc hại vào nhánh next |
Sử dụng token vừa đánh cắp để push trực tiếp vào repository chính thức, chèn mã độc vào source code. | Kích hoạt pipeline phát hành (release pipeline) hợp lệ của dự án. |
| 07:10 | Stage 1 — Package Publish | Publish 3 package generator lên npm | Workflow release-with-changesets.yml tự động publish thông qua cơ chế OIDC Trusted Publisher, tạo provenance hợp lệ. |
Các package @asyncapi/generator@3.3.1, generator-helpers@1.1.1 và generator-components@0.7.1 được phát hành với chữ ký hợp lệ, khiến người dùng khó phát hiện bất thường. |
| 08:06 | Stage 1 — Package Publish | Publish @asyncapi/specs@6.11.2 |
Tiếp tục sử dụng pipeline phát hành chính thức để đưa phiên bản độc hại lên npm Registry. | Package có khoảng 2,7 triệu lượt tải mỗi tuần bắt đầu phân phối malware tới các dự án sử dụng phiên bản mới. |
| 08:30 | Stage 1 — Package Publish | Publish @asyncapi/specs@6.11.2-alpha.1 |
Phát hành thêm phiên bản Alpha chứa cùng payload độc hại. | Mở rộng phạm vi ảnh hưởng (blast radius) tới cả những người dùng đang thử nghiệm phiên bản pre-release. |
| 08:30 – 11:18 | Stage 2 — Active Exploitation | Malware được kích hoạt khi ứng dụng import hoặc require() package |
Mã độc tạo một tiến trình Node.js chạy nền (detached process), tải file sync.js từ IPFS, giải mã và triển khai Miasma RAT, sau đó thiết lập persistence và kết nối tới máy chủ C2. |
Máy của lập trình viên và các CI/CD runner có thể bị nhiễm trong quá trình build, test hoặc chạy ứng dụng sử dụng package độc hại. |
| ~11:18 | Response | Gỡ bỏ (unpublish) toàn bộ 5 phiên bản độc hại khỏi npm Registry | Đội ngũ AsyncAPI phản ứng sau khi nhận được cảnh báo từ cộng đồng và các hãng bảo mật, nhanh chóng thu hồi các package bị xâm phạm. | Chấm dứt việc phát tán malware qua npm Registry và bắt đầu quá trình điều tra, khắc phục sự cố. |
Các chiến dịch Shai-Hulud và Miasma được ngành bảo mật theo dõi dưới nhóm threat actor có tên TeamPCP, còn được biết đến qua nhiều bí danh:
| Tên gọi | Nguồn theo dõi |
|---|---|
| TeamPCP | Tên chính, được OX Security, JFrog, Snyk sử dụng |
| DeadCatx3 | Bí danh trên các forum underground |
| PCPcat | Tên biến thể trên một số tracker |
| ShellForce / CipherForce | Bí danh theo dõi bởi một số hãng threat intelligence |
| CanisterWorm | Tên gọi theo đặc điểm kỹ thuật worm |
Đặc điểm chung:
Chuyên tấn công chuỗi cung ứng phần mềm qua các registry mã nguồn mở (npm, PyPI, Cargo)
Khai thác CI/CD pipeline, GitHub Actions, developer credentials để phân phối malware quy mô lớn
Nhắm vào hạ tầng mã nguồn mở "load-bearing" — các gói nền tảng được hàng triệu dự án phụ thuộc — để tối đa hóa blast radius
Hoạt động theo mô hình cybercrime có tổ chức, không phải APT quốc gia (state-sponsored)
| Thời điểm | Chiến dịch | Mục tiêu | Kỹ thuật chính | Quy mô |
|---|---|---|---|---|
| 09/2025 | Shai-Hulud (gốc) | Hệ sinh thái npm nói chung | Self-replicating npm worm, install-time hooks (preinstall/postinstall), đánh cắp npm token + GitHub PAT |
Hàng trăm gói bị nhiễm; đánh dấu bước ngoặt từ typosquatting sang worm tự động |
| 04–05/2026 | Mini Shai-Hulud (Wave 1) | TanStack, Mistral AI, Guardrails AI, UiPath | GitHub Actions "pwn request" + cache poisoning + OIDC token theft → publish gói với SLSA Build Level 3 provenance hợp lệ | Lần đầu tiên trong lịch sử: provenance hợp lệ bị vũ khí hóa |
| 12/05/2026 | Open-source Shai-Hulud | Cộng đồng hacker | TeamPCP công khai mã nguồn worm trên các forum | Biến công cụ độc quyền thành "commodity malware" — bất kỳ ai cũng có thể tạo biến thể |
| 18/05/2026 | Megalodon (Wave 2) | GitHub repositories | Push hơn 5.000 commit độc hại vào các repo để exfiltrate secrets quy mô lớn | Tấn công brute-force vào hạ tầng mã nguồn |
| 19/05/2026 | Wave 5 | @antv ecosystem | Tấn công tự động | 600+ gói bị compromise trong 22 phút |
| 06/2026 | Miasma — Red Hat | @redhat-cloud-services npm packages |
"Phantom Gyp" (binding.gyp độc hại), Bun-staged loaders, preinstall hooks |
Hàng chục gói Red Hat bị nhiễm; frontend libraries bị inject credential-stealer |
| 06/2026 | Miasma — LeoPlatform | LeoPlatform / RStreams | Phantom Gyp + Bun loaders, bypass Node.js security tools | Pipeline dữ liệu serverless bị xâm nhập |
| 14/07/2026 | AsyncAPI (bài phân tích này) | @asyncapi npm org (4 gói, ~2.9M tải/tuần) |
CI/CD pwn request → import-time execution (bypass ignore-scripts) → Miasma RAT + IPFS/Nostr/Ethereum C2 | Tiến hóa lớn nhất: không cần install hook, bypass npm v12 |
Cuộc tấn công không bắt đầu từ npm mà bắt đầu từ GitHub Actions. Kẻ tấn công khai thác một lỗ hổng cấu hình (misconfiguration) trong workflow CI/CD:
05:08 UTC: Kẻ tấn công mở 37 pull request vào repository asyncapi/generator.
Một trong số đó chứa JavaScript bị obfuscate được thiết kế để chạy trong workflow sử dụng trigger pull_request_target.
Trigger pull_request_target thực thi với quyền truy cập vào repository secrets — thay vì sandbox như pull_requestthông thường Workflow đã checkout code của kẻ tấn công thay vì base branch, cho phép exfiltrate token của release bot
Sau khi có token, kẻ tấn công:
Push commit độc hại vào branch next lúc 06:58 UTC
Hành động này trigger workflow hợp pháp release-with-changesets.yml
Các gói được publish thông qua hệ thống OIDC trusted-publisher của GitHub
Kết quả: Các gói mang provenance/SLSA attestation hợp lệ — vì chúng được publish qua pipeline GitHub Actions chính thống
Mã độc KHÔNG sử dụng install hook (post-install script). Thay vào đó:
Mã độc được nhúng bên trong file source code hợp pháp
Khi module được load (require() hoặc import), nó spawn một tiến trình Node.js tách biệt (detached)
Tiến trình này tải encrypted loader (sync.js) từ IPFS
Sau đó giải mã và triển khai Miasma framework đầy đủ
Hệ quả trực tiếp: npm install --ignore-scripts KHÔNG bảo vệ khỏi cuộc tấn công này.
91.973 dòng code — đây không phải malware "viết nhanh"
Kết hợp hybrid: Info-stealer + Crypto-stealer + RAT + Worm
Cross-platform: Hỗ trợ Linux, macOS, Windows
Miasma cài đặt sync.js vào thư mục giả dạng NodeJS theo từng platform:
| OS | Đường dẫn persistence |
|---|---|
| Linux | ~/.local/share/NodeJS/sync.js |
| macOS | ~/Library/Application Support/NodeJS/sync.js |
| Windows | %LOCALAPPDATA%\NodeJS\sync.js |
Cơ chế persistence:
Linux: Tạo systemd unit miasma-monitor.service
macOS: Sửa shell startup files (.bashrc, .zshrc, v.v.)
Windows: Registry Run key
Malware sử dụng kiến trúc C2 multi-layer, resilient:
Việc sử dụng IPFS, Nostr, Ethereum smart contract, và BitTorrent DHT làm kênh C2 dự phòng cho thấy kẻ tấn công có kỹ năng cao và thiết kế để chống chịu takedown — ngay cả khi C2 chính bị hạ, malware vẫn có nhiều đường liên lạc thay thế.
Malware thu thập toàn diện:
Browser passwords (tất cả trình duyệt chính)
SSH keys
npm tokens, GitHub tokens
AWS credentials và cloud config
Cryptocurrency wallets (nhiều loại ví)
Clipboard data
Đây là tính năng nguy hiểm nhất cho môi trường developer:
Nếu malware phát hiện token xác thực hợp lệ cho npm, PyPI, hoặc Cargo, nó sẽ cố gắng tự publish vào các gói mà nạn nhân quản lý trên các registry đó.
Một developer bị nhiễm = vector phân phối mới. Chuỗi lây lan có thể mở rộng theo cấp số nhân.
Malware thực hiện nhiều kiểm tra trước khi hoạt động:
| Kiểm tra | Hành động nếu TRUE |
|---|---|
| Đang chạy trong máy ảo (VM) | Tự hủy |
| Phát hiện EDR/Endpoint Protection | Tự hủy |
| Ngôn ngữ hệ thống là tiếng Nga | Tự hủy |
Kiểm tra locale tiếng Nga là đặc điểm điển hình của malware có nguồn gốc Nga hoặc CIS — kẻ tấn công không muốn lây nhiễm máy của chính mình hoặc đồng minh.
Chiến dịch Miasma/Shai-Hulud do nhóm TeamPCP (hoặc các biến thể copycat) thực hiện tạo ra mức độ rủi ro cực kỳ nghiêm trọng đối với các doanh nghiệp công nghệ và cộng đồng mã nguồn mở:
Rủi ro lây nhiễm chéo diện rộng (Worm-like Propagation Risk):
npm, PyPI, Cargo). Nếu một máy trạm của lập trình viên duy trì (maintainer) bất kỳ thư viện nào bị nhiễm, mã độc sẽ tự động đóng gói và publish phiên bản độc hại lên thư viện đó. Điều này tạo ra phản ứng dây chuyền lây nhiễm theo cấp số nhân.Rủi ro lộ lọt thông tin cấu trị cao (High-Value Credential Theft):
Rủi ro vô hiệu hóa các lá chắn bảo mật truyền thống (Security Bypass Risk):
Bypass SLSA Provenance: Kẻ tấn công không publish trực tiếp mà hijack luồng phát hành (CI/CD pipeline) hợp pháp của dự án gốc. Do đó, các cơ chế xác thực nguồn gốc dựa trên mật mã (OIDC, SLSA Build Level 3) đều xác nhận gói là "an toàn", vô hiệu hóa các bộ lọc tự động kiểm tra chữ ký số.
Bypass Static Scan & Ignore-scripts: Do thực thi ngay lúc lệnh import hoặc require được gọi (import-time execution) thay vì dùng install-hooks, các thiết lập bảo mật cô lập cài đặt (--ignore-scripts) hoàn toàn bị vượt qua.
| Biện pháp bảo mật | Trạng thái | Lý do thất bại |
|---|---|---|
npm install --ignore-scripts |
Không hiệu quả | Malware không dùng install hook, thực thi khi import/require() |
| npm Provenance / SLSA Attestation | Bị bpass | Gói được publish qua pipeline CI/CD hợp pháp → attestation hợp lệ |
| SCA (Software Composition Analysis) | Không phát hiện | Phiên bản mới publish → chưa có trong cơ sở dữ liệu mối đe dọa |
| npm v12 post-install block | Không áp dụng | Kẻ tấn công nhúng code vào file JS chính, không cần post-install |
Lockfile pinning (npm ci) |
Bảo vệ một phần | Chỉ bảo vệ nếu đã pin phiên bản an toàn, không bảo vệ khi npm install hoặc bump dependency |
| Loại | Giá trị | Mục đích |
|---|---|---|
| C2 Server | 85[.]137[.]53[.]71 |
Primary C2 |
| C2 Ports | 8080, 8081, 8091 |
Command, Data Exfil, Backup |
| IPFS Gateway | ipfs.io |
Payload hosting & Fallback C2 |
| BitTorrent | router.bittorrent.com |
Backup beaconing |
| BitTorrent | router.utorrent.com |
Backup beaconing |
| BitTorrent | dht.transmissionbt.com |
Backup beaconing |
| Loại | Giá trị |
|---|---|
| Ethereum Address | 0x12c37A86a0Ed0beBe5d1d6a43E42f07860eAc710 |
| OS | Đường dẫn |
|---|---|
| Linux | ~/.local/share/NodeJS/sync.js |
| macOS | ~/Library/Application Support/NodeJS/sync.js |
| Windows | %LOCALAPPDATA%\NodeJS\sync.js |
| Linux | systemd unit miasma-monitor.service |
| Gói | Phiên bản độc hại |
|---|---|
@asyncapi/generator |
3.3.1 |
@asyncapi/generator-helpers |
1.1.1 |
@asyncapi/generator-components |
0.7.1 |
@asyncapi/specs |
6.11.2, 6.11.2-alpha.1 |
| Tactic (Chiến thuật) | Technique ID | Technique Name (MITRE ATT&CK) | Cách thức áp dụng trong chiến dịch |
|---|---|---|---|
| Reconnaissance | T1595 | Active Scanning | Kẻ tấn công quét các repository GitHub công khai nhằm tìm kiếm các workflow GitHub Actions có cấu hình không an toàn, đặc biệt là việc lạm dụng trigger pull_request_target. |
| Initial Access | T1190 | Exploit Public-Facing Application | Khai thác lỗi cấu hình pull_request_target trong repository asyncapi/generator, cho phép mã độc thực thi với quyền của GitHub Actions Runner và truy cập vào repository secrets. |
| T1195.002 | Supply Chain Compromise: Compromise Software Dependencies | Chèn mã độc trực tiếp vào các package npm của AsyncAPI và phát hành thông qua pipeline release hợp pháp, biến package chính thức thành phương tiện phân phối malware. | |
| Execution | T1204.002 | User Execution: Malicious File | Mã độc được kích hoạt khi nhà phát triển hoặc hệ thống CI/CD thực hiện import hoặc require() các package đã bị cài cắm. |
| T1059.003 | Command and Scripting Interpreter: Windows Command Shell | Thực thi các lệnh hệ thống trên Windows để tạo tiến trình chạy nền và triển khai payload tiếp theo. | |
| T1059.004 | Command and Scripting Interpreter: Unix Shell | Thực thi shell script trên Linux/macOS nhằm cài đặt malware và cấu hình môi trường thực thi. | |
| Persistence | T1543.003 | Create or Modify System Process: Systemd Service | Tạo dịch vụ miasma-monitor.service trên hệ thống Linux để đảm bảo malware tự khởi động sau khi reboot. |
| T1547.001 | Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder | Thiết lập Registry Run Keys trên Windows và chỉnh sửa các file khởi động như .bashrc, .zshrc trên Linux/macOS để duy trì quyền kiểm soát. |
|
| Defense Evasion | T1140 | Deobfuscate/Decrypt Files or Information | Tải xuống file sync.js đã được mã hóa từ IPFS, sau đó giải mã trong bộ nhớ trước khi thực thi nhằm tránh bị phát hiện. |
| T1497.001 | Virtualization/Sandbox Evasion: System Checks | Kiểm tra môi trường ảo hóa (VM, Sandbox) để quyết định có tiếp tục thực thi malware hay tự hủy. | |
| T1497.003 | Virtualization/Sandbox Evasion: Time-based Evasion | Sử dụng độ trễ thực thi, kiểm tra ngôn ngữ hệ thống (ví dụ: tiếng Nga) và các điều kiện môi trường nhằm né tránh phân tích động. | |
| T1036 | Masquerading | Ngụy trang thư mục và tệp độc hại bằng tên tương tự thư mục Node.js hợp pháp (ví dụ: %LOCALAPPDATA%\NodeJS) để giảm khả năng bị nghi ngờ. |
|
| Credential Access | T1555 | Credentials from Password Stores | Thu thập mật khẩu đã lưu trong các trình duyệt phổ biến trên máy nạn nhân. |
| T1552.001 | Unsecured Credentials: Private Keys | Quét hệ thống để tìm và đánh cắp các khóa riêng SSH được lưu trữ cục bộ. | |
| T1552.004 | Unsecured Credentials: Private Information in Cloud / Code | Thu thập token của npm, GitHub, PyPI, Cargo cùng các thông tin xác thực AWS, Azure, GCP và các dịch vụ Cloud khác. | |
| Discovery | T1082 | System Information Discovery | Thu thập thông tin hệ điều hành, hostname, múi giờ, ngôn ngữ locale và các đặc điểm của hệ thống để phục vụ quá trình lọc mục tiêu. |
| Command and Control (C2) | T1071.001 | Application Layer Protocol: Web Protocols | Thiết lập kết nối HTTP/HTTPS tới máy chủ điều khiển (C2) thông qua các cổng 8080, 8081 và 8091. |
| T1568 | Dynamic Resolution | Sử dụng Nostr, IPFS Gateway và smart contract Ethereum để phân giải hoặc chuyển đổi địa chỉ C2 khi cần thiết. | |
| T1105 | Ingress Tool Transfer | Tải xuống payload giai đoạn tiếp theo (sync.js) từ mạng phân tán IPFS. |
|
| T1043 | Commonly Used Port | Sử dụng các cổng phổ biến của BitTorrent DHT để beaconing và truyền thông, giúp vượt qua nhiều cơ chế tường lửa. | |
| Exfiltration | T1048 | Exfiltration Over Alternative Protocol | Trích xuất dữ liệu đánh cắp thông qua các giao thức thay thế như IPFS hoặc BitTorrent DHT nhằm giảm khả năng bị phát hiện. |
| Impact | T1496 | Resource Hijacking | Kích hoạt các module bổ sung như crypto-stealer và RAT để chiếm đoạt tài nguyên hệ thống cũng như tài sản số của nạn nhân. |
| T1565 | Data Manipulation | Tự động chỉnh sửa các package do nạn nhân quản lý trên npm, PyPI hoặc Cargo nhằm tiếp tục phát tán malware và mở rộng chuỗi tấn công. |
Revoke & Rotate Tokens: Thu hồi ngay tất cả developer tokens (npm, PyPI, Cargo, GitHub) trên mọi máy có thể đã chạy các gói bị ảnh hưởng
Kiểm tra phiên bản đang sử dụng: Nếu package-lock.json hoặc node_modules chứa bất kỳ phiên bản bị ảnh hưởng → coi máy đó là compromised
Rotate secrets: Đổi tất cả SSH keys, AWS credentials, API keys trên máy bị nghi nhiễm
Kiểm tra file system: Tìm kiếm sync.js tại các đường dẫn IOC trên tất cả máy developer và CI/CD runner
Monitor outbound traffic: Giám sát kết nối đến 85[.]137[.]53[.]71, BitTorrent bootstrap nodes, và IPFS gateways — đây là bất thường trong môi trường phát triển thông thường
Audit registry releases: Kiểm tra tất cả commit và package releases gần đây trên registry của tổ chức để phát hiện code injection trái phép
Kiểm tra systemd services: Trên Linux, tìm kiếm unit miasma-monitor.service
Lockfile pinning: Luôn sử dụng npm ci thay vì npm install trong CI/CD
Stability buffer: Áp dụng chính sách không sử dụng package mới publish trong 48–72 giờ đầu
Build-time egress control: Triển khai firewall cho build environment (Build Application Firewall), chặn outbound traffic đến các destination không được phê duyệt
GitHub Actions security:
KHÔNG sử dụng pull_request_target với actions/checkout trên PR code
Review và audit tất cả workflow có sử dụng repository secrets
Merge các security fix kịp thời — vulnerability đã biết từ tháng 4 nhưng fix chưa merge đến tháng 7
Giám sát hành vi import-time: Triển khai giải pháp phát hiện mã độc thực thi tại thời điểm require()/import — không chỉ tại install
Provenance ≠ Trust: Provenance hợp lệ chỉ chứng minh package được build từ pipeline chính thống, KHÔNG chứng minh code bên trong an toàn. Nếu pipeline bị compromise, provenance vẫn hợp lệ.
Ignore-scripts không đủ: Khi malware nhúng vào source code thay vì install hook, biện pháp này trở nên vô nghĩa.
CI/CD là bề mặt tấn công: Cuộc tấn công bắt đầu từ GitHub Actions misconfiguration — một khu vực thường nằm ngoài phạm vi quét của dependency scanner.
Supply chain attack ngày càng phức tạp: Kẻ tấn công kết hợp CI/CD compromise + import-time execution + multi-layer C2 + worm propagation + false flag attribution.
npm v12 chưa đủ: Việc chặn post-install scripts là bước tiến nhưng chưa giải quyết gốc rễ — kẻ tấn công chỉ cần chuyển vector tấn công sang import-time.
Build-time egress control là layer phòng thủ quan trọng nhất mà hầu hết pipeline chưa triển khai — đây là lớp duy nhất có thể phát hiện và chặn C2 callback.
AsyncAPI npm organization compromised, 2M weekly downloads affected
AsyncAPI npm Supply Chain Attack: Malware Injected Into Packages With 2 Million Weekly Downloads
AsyncAPI npm Supply Chain Attack Delivers Miasma RAT
M Red Team: AsyncAPI Supply Chain Compromise via GitHub Actions