Chứng chỉ hợp lệ nhưng tài khoản bị đánh cắp: Cách kẻ tấn công phá vỡ tín hiệu tin cậy cuối cùng của npm
Vào ngày 19 tháng 5, 633 phiên bản gói npm độc hại đã vượt qua xác minh Sigstore nhờ chứng chỉ ký từ tài khoản bảo trì bị xâm phạm. Song song đó, tiện ích mở rộng VS Code cũng bị tấn công, lộ lọt hàng loạt khóa bảo mật. Các nghiên cứu mới đây cho thấy mô hình xác thực của các công cụ lập trình AI đang gặp lỗi nghiêm trọng trên nhiều mặt trận.

Vào ngày 19 tháng 5, 633 phiên bản gói npm độc hại đã vượt qua xác minh nguồn gốc (provenance) của Sigstore. Chúng được hệ thống chấp nhận vì kẻ tấn công đã tạo ra các chứng chỉ ký hợp lệ từ một tài khoản bảo trì đã bị xâm phạm.
Sigstore hoạt động chính xác theo thiết kế: nó xác minh gói phần mềm được xây dựng trong môi trường CI, xác nhận chứng chỉ hợp lệ đã được cấp và ghi lại mọi thứ vào nhật ký minh bạch. Tuy nhiên, điều nó không thể làm là xác định xem người đang giữ thông tin đăng nhập có thực sự được ủy quyền xuất bản gói đó hay không — và khoảng trống này đã biến tín hiệu tin cậy tự động cuối cùng của npm thành một lớp ngụy trang hoàn hảo.
Tấn công vào tiện ích VS Code và chiến dịch Mini Shai-Hulud
Một ngày trước đó, StepSecurity đã ghi nhận một cuộc tấn công vào tiện ích mở rộng Nx Console VS Code — một công cụ phát triển phổ biến với hơn 2,2 triệu lượt cài đặt. Phiên bản 18.95.0 được xuất bản vào ngày 18 tháng 5 bằng thông tin đăng nhập bị đánh cắp và tồn tại trực tuyến dưới 40 phút. Tuy nhiên, dữ liệu viễn thông nội bộ của Nx cho thấy có khoảng 6.000 lượt kích hoạt trong khoảng thời gian đó, chủ yếu thông qua tính năng tự động cập nhật, so với chỉ 28 lượt tải xuống chính thức. Tải trọng độc hại này đã thu thập các tệp cấu hình Claude Code, khóa AWS, token GitHub, token npm, nội dung kho 1Password và token tài khoản dịch vụ Kubernetes.
Chiến dịch Mini Shai-Hulud, được nhiều nhà nghiên cứu quy cho tác nhân đe dọa có động cơ tài chính là TeamPCP, đã tấn công vào sổ đăng ký npm lúc 01:39 UTC ngày 19 tháng 5. Endor Labs đã phát hiện đợt sóng đầu tiên khi hai gói phần mềm không hoạt động từ lâu là jest-canvas-mock và size-sensor bất ngờ xuất bản phiên bản mới chứa một đoạn mã Bun 498KB đã bị che giấu. Cả hai gói này đều không được cập nhật trong hơn ba năm, nên việc đột nhiên xuất hiện phiên bản mới với các phụ thuộc băm commit GitHub thô là một tín hiệu phát hiện — nhưng chỉ khi công cụ giám sát đang hoạt động.
Đến 02:06 UTC, sâu (worm) độc hại này đã lan rộng sang hệ sinh thái trực quan hóa dữ liệu @antv và hàng chục gói không có phạm vi (unscoped), bao gồm cả echarts-for-react (khoảng 1,1 triệu lượt tải xuống hàng tuần). Socket đã nâng tổng số lên 639 phiên bản bị xâm phạm trên 323 gói độc nhất trong đợt này. Trọng toàn bộ chuỗi hoạt động, Socket đã theo dõi 1.055 phiên bản độc hại trên 502 gói trải dài trên npm, PyPI và Composer.
StepSecurity xác nhận tải trọng độc hại chứa đầy đủ tích hợp Sigstore. Kẻ tấn công không chỉ đánh cắp thông tin đăng nhập; họ còn có thể ký và xuất bản các gói npm hạ nguồn mang theo các xác nhận nguồn gốc hợp lệ.
Mô hình xác thực bị phá vỡ trên các công cụ lập trình AI
Hai sự cố trên không phải là trường hợp riêng lẻ. Các nhóm nghiên cứu tại Endor Labs, Socket, StepSecurity, Adversa AI, Johns Hopkins, Microsoft MSRC và LayerX đã độc lập chứng minh rằng mô hình xác minh công cụ phát triển đã bị phá vỡ, và không có khung nhà cung cấp nào kiểm toán tất cả các bề mặt tấn công đã thất bại.
Bảy bề mặt tấn công đã thất bại trong 48 giờ giữa ngày 18 và 19 tháng 5 — bao gồm giả mạo nguồn gốc npm, đánh cắp thông tin đăng nhập tiện ích VS Code, thực thi tự động máy chủ MCP, tiêm lệnh tác nhân CI/CD, thực thi mã khung tác nhân, lộ lưu trữ thông tin đăng nhập IDE và lộ dữ liệu AI bóng tối (Shadow AI).
Lỗ hổng TrustFall trên các CLI lập trình AI
Adversa AI đã công bố lỗ hổng TrustFall vào ngày 7 tháng 5, chứng minh rằng Claude Code, Gemini CLI, Cursor CLI và Copilot CLI đều tự động thực thi các máy chủ MCP do dự án định nghĩa ngay khi nhà phát triển chấp nhận lời nhắc tin cậy thư mục. Tất cả bốn công cụ này mặc định là "Có" hoặc "Tin cậy". Chỉ một lần nhấn phím là tạo ra một quy trình không được sandbox với đầy đủ đặc quyền của nhà phát triển.
Máy chủ MCP chạy với đủ đặc quyền để đọc các bí mật được lưu trữ và mã nguồn từ các dự án khác. Trên trình chạy CI sử dụng GitHub Action của Claude Code ở chế độ không đầu (headless), hộp thoại tin cậy không bao giờ hiển thị. Cuộc tấn công diễn ra với sự tương tác bằng không của con người.
Các nhà nghiên cứu từ Đại học Johns Hopkins đã công bố "Comment and Control", chứng minh rằng một chỉ định độc hại trong tiêu đề pull request trên GitHub đã khiến Claude Code Security Review đăng chính khóa API của nó dưới dạng một bình luận. Cùng một cuộc tấn công này hoạt động trên Gemini CLI Action của Google và Copilot Agent của GitHub. Anthropic đã đánh giá lỗ hổng này ở mức CVSS 9.4 (Nghiêm trọng) thông qua chương trình HackerOne.
Microsoft MSRC cũng đã công bố hai lỗ hổng nghiêm trọng trong Semantic Kernel vào ngày 7 tháng 5. Một lỗ hổng định tuyến các trường kho lưu trữ vector do kẻ tấn công kiểm soát vào lệnh gọi eval() của Python; lỗ hổng khác lộ phương thức tải xuống tệp phía máy chủ dưới dạng một hàm kernel có thể gọi — nghĩa là một tài liệu bị nhiễm độc trong kho lưu trữ vector có thể khởi chạy quy trình trên máy chủ.
Các nhà nghiên cứu bảo mật tại LayerX cũng chứng minh rằng Cursor lưu trữ khóa API và token phiên trong bộ nhớ không được bảo vệ, nghĩa là bất kỳ tiện ích mở rộng trình duyệt nào cũng có thể truy cập thông tin đăng nhập của nhà phát triển mà không cần quyền nâng cao.
Bối cảnh đe dọa và AI bóng tối
Báo cáo Điều tra Vi phạm Dữ liệu 2026 (DBIR) của Verizon, công bố ngày 19 tháng 5, cho thấy 67% nhân viên truy cập các dịch vụ AI từ tài khoản không phải của công ty trên thiết bị công ty. AI bóng tối hiện là hành động nội bộ không độc hại phổ biến thứ ba trong các bộ dữ liệu DLP. Mã nguồn dẫn đầu các loại dữ liệu được gửi lên các nền tảng AI trái phép — chính là loại tài sản mà chiến dịch sâu npm nhắm tới.
Báo cáo Cảnh quan Đe dọa Dịch vụ Tài chính 2026 của CrowdStrike, công bố ngày 14 tháng 5, đã ghi lại các đối thủ đang tích cực săn lùng các loại thông tin đăng nhập mà các cuộc tấn công này thu thập. Nhóm STARDUST CHOLLIMA đã tăng gấp ba tốc độ hoạt động chống lại các thực thể tài chính trong quý 4 năm 2025. CrowdStrike ghi nhận nhóm này sử dụng các nhân viên tuyển dụng do AI tạo ra trên LinkedIn và Telegram, gửi các thử thách mã độc hại trông giống như bài đánh giá kỹ thuật, và thực hiện các cuộc gọi video giả với môi trường tổng hợp. Các mục tiêu là GitHub PATs, token npm, khóa AWS và bí mật CI/CD.
Lưới kiểm toán danh tính bị đánh cắp của công cụ phát triển
Hiện tại, không có khung nhà cung cấp nào bao quát tất cả bảy bề mặt này. Bảng dưới đây ánh xạ từng bề mặt với nghiên cứu đã phơi bày nó, những gì ngăn xếp của bạn không thể thấy, và hành động kiểm toán cần thực hiện trước khi gia hạn hợp đồng nhà cung cấp tiếp theo.
| Bề mặt tấn công | Được tiết lộ bởi | Xác thực thất bại ở đâu | Ngăn xếp của bạn không thấy gì | Hành động kiểm toán |
|---|---|---|---|---|
| 1. Giả mạo nguồn gốc npm | Endor Labs, Socket (19/5) | Chứng chỉ Sigstore được tạo từ token OIDC bị đánh cắp vượt qua xác minh tự động | EDR và SAST không xác thực xem danh tính CI đã ký gói có ủy quyền xuất bản hay không | Yêu cầu phê duyệt hai bên tại thời điểm xuất bản cho các gói có hơn 10.000 lượt tải xuống hàng tuần. Đừng coi huy hiệu Sigstore màu xanh là bằng chứng hợp pháp. |
| 2. Đánh cắp thông tin đăng nhập tiện ích VS Code | StepSecurity (18/5) | VS Code Marketplace chấp nhận phiên bản tiện ích độc hại được xuất bản bằng token đóng góp bị đánh cắp | Cập nhật tự động của tiện ích vượt qua phát hiện điểm cuối. Cửa sổ Marketplace 12:30 đến 12:48 UTC | Thực thi chính sách độ tuổi tối thiểu cho các bản cập nhật tiện ích. Ghim phiên bản tiện ích quan trọng. Kiểm toán tất cả tiện ích có quyền truy cập API terminal hoặc hệ thống tệp. |
| 3. Thực thi tự động máy chủ MCP | Adversa AI, TrustFall (7/5) | Tất cả bốn hộp thoại CLI mặc định là "Có/Tin cậy" mà không liệt kê các tệp thực thi nào sẽ được tạo | EDR giám sát hành vi quy trình, không phải những gì LLM chỉ thị máy chủ MCP làm. WAF kiểm tra tải trọng HTTP, không phải ý định gọi công cụ | Tắt phê duyệt tự động máy chủ MCP có phạm vi dự án trong Claude Code, Gemini CLI, Cursor CLI và Copilot CLI. Chặn tệp .mcp.json trong đường ống CI trừ khi được cho phép rõ ràng. |
| 4. Tiêm lệnh tác nhân CI/CD | Johns Hopkins, Comment and Control (4/2026) | Quy trình công việc GitHub Actions sử dụng pull_request_target tiêm bí mật vào môi trường trình chạy mà tác nhân AI xử lý dưới dạng chỉ thị | Nhật ký SIEM cho thấy cuộc gọi API từ GitHub Action hợp lệ. Cuộc gọi chính là cuộc tấn công. Không có chữ hiệu mạng bất thường nào | Chuyển quy trình công việc xem xét mã AI sang kích hoạt pull_request. Kiểm toán tất cả quy trình công việc sử dụng pull_request_target có quyền truy cập bí mật cho tích hợp tác nhân AI. |
| 5. Thực thi mã khung tác nhân | Microsoft MSRC (7/5) | SDK Python Semantic Kernel định tuyến trường lọc kho lưu trữ vector vào eval(). SDK .NET lộ ghi tệp phía máy chủ làm hàm kernel có thể gọi | Tường lửa ứng dụng kiểm tra tải trọng đầu vào. Chúng không kiểm tra cách khung phối hợp phân tích các tải trọng đó bên trong | Cập nhật Semantic Kernel Python SDK lên 1.39.4 và .NET SDK lên 1.71.0. Kiểm toán tất cả các khung tác nhân tìm các hàm được gắn thẻ có thể gọi bởi mô hình truy cập hệ thống tệp hoặc shell. |
| 6. Lộ lưu trữ thông tin đăng nhập IDE | LayerX (4/2026) | Cursor lưu trữ khóa API và token phiên trong bộ nhớ không được bảo vệ mà bất kỳ tiện ích trình duyệt nào cũng có thể truy cập | DLP giám sát dữ liệu đang truyền. Thông tin đăng nhập Cursor tại nghỉ là vô hình với DLP vì không có sự kiện thoát dữ liệu nào cho đến khi tiện ích xuất lọc | Kiểm toán các công cụ phát triển về thực hành lưu trữ thông tin đăng nhập. Yêu cầu lưu trữ được bảo vệ (chuỗi khóa OS, kho thông tin đăng nhập được mã hóa) cho tất cả cấu hình công cụ lập trình AI. |
| 7. Lộ dữ liệu AI bóng tối | Verizon 2026 DBIR (19/5) | 67% nhân viên truy cập dịch vụ AI từ tài khoản không phải của công ty trên thiết bị công ty. Mã nguồn là loại dữ liệu hàng đầu được gửi | Chính sách CASB bao phủ SaaS được chấp thuận. Tài khoản AI không phải của công ty trên thiết bị công ty hoạt động hoàn toàn ngoài phạm vi CASB | Triển khai quản trị AI lớp trình duyệt giám sát việc sử dụng AI không phải của công ty trên thiết bị công ty. Kiểm kê các tiện ích trình duyệt AI trên toàn tổ chức. |
Kế hoạch hành động cho Giám đốc An ninh
Các giám đốc an ninh có thể muốn chạy lưới này đối với các hợp đồng nhà cung cấp hiện tại trước khi các gia hạn quý 2 kết thúc — bằng cách hỏi từng nhà cung cấp xem sản phẩm của họ bao phủ bảy bề mặt nào, và coi những câu trả lời thiếu là bản đồ khoảng trống.
Bất kỳ thông tin đăng nhập nào có thể truy cập từ máy nhà phát triển hoặc trình chạy CI đã cài đặt các gói npm bị ảnh hưởng giữa 01:39 và 02:18 UTC ngày 19 tháng 5 đều nên được coi là bị xâm phạm. Điều này bao gồm GitHub PATs, token npm, khóa truy cập AWS, token tài khoản dịch vụ Kubernetes, token HashiCorp Vault, khóa SSH và nội dung kho 1Password.
Các tích hợp tác nhân lập trình AI đang chạy trong đường ống CI/CD với quy trình công việc pull_request_target xứng đáng được xem xét kỹ lưỡng. Mỗi cái là một bề mặt tiêm lệnh xử lý các bình luận PR dưới dạng chỉ thị tác nhân.
Các nhóm mua sắm đánh giá các công cụ lập trình AI nên cân nhắc thêm một khía cạnh kháng cự danh tính bị đánh cắp vào các đánh giá nhà cung cấp. Câu hỏi đáng để hỏi là: nhà cung cấp có thể chứng minh cách công cụ của họ phân biệt một bản xuất bản bảo trì hợp pháp với một kẻ tấn công sử dụng thông tin đăng nhập bị xâm phạm không? Nếu họ không thể, công cụ đó không phải là một lớp xác minh.
Chuỗi cung ứng công cụ phát triển đang gặp phải vấn đề tương tự mà IAM gặp phải một thập kỷ trước: thông tin đăng nhập chứng minh bạn là ai bạn tuyên bố, không phải bạn thực sự là ai. IAM có khởi đầu 10 năm về các biện pháp kiểm soát bù đắp trước khi các nhóm nhà nước biến việc đánh cắp thông tin đăng nhập thành một hoạt động công nghiệp. Hệ sinh thái công cụ lập trình AI hiện đang bắt đầu tính giờ đó.
Bài viết liên quan

AI & ML
Nguy cơ bảo mật từ "Vibe-Coding": Hàng nghìn ứng dụng AI để lộ dữ liệu nhạy cảm trên mạng
07 tháng 5, 2026
AI & ML
MFA chỉ là bước khởi đầu: Tại sao xác thực thành công vẫn không ngăn chặn được tin tặc?
21 tháng 5, 2026

Công nghệ
Thử nghiệm tính năng Avatar AI của Google Gemini: Bản sao số của tôi thật đáng sợ nhưng chân thực
21 tháng 5, 2026
