Cuộc Tấn Công "s1ngularity": Malware Tích Hợp AI Tấn Công 2.180 Tài Khoản GitHub

Một trong những cuộc tấn công chuỗi cung ứng phức tạp nhất từ trước đến nay đã gây ra thiệt hại lớn cho cộng đồng phát triển phần mềm, với hơn 2.180 tài khoản GitHub bị xâm phạm và 7.200 repository bị rò rỉ dữ liệu trong vụ tấn công mang tên "s1ngularity".
Tổng Quan Cuộc Tấn Công
Cuộc tấn công nhắm vào Nx, một hệ thống build mã nguồn mở và công cụ quản lý monorepo được sử dụng rộng rãi trong các hệ sinh thái JavaScript/TypeScript quy mô doanh nghiệp. Với hơn 5,5 triệu lượt tải xuống hàng tuần trên NPM, Nx trở thành mục tiêu hấp dẫn cho tin tặc.
Vào ngày 26 tháng 8 năm 2025, kẻ tấn công đã khai thác lỗ hổng trong GitHub Actions workflow của repository Nx để phát hành một phiên bản độc hại của package trên NPM. Phiên bản này chứa một script malware post-install có tên 'telemetry.js'.
Đặc Điểm Độc Đáo: Sử Dụng AI Để Đánh Cắp Dữ Liệu
Điều làm cho cuộc tấn công này nổi bật là malware đã sử dụng các công cụ trí tuệ nhân tạo để tìm kiếm và thu thập thông tin nhạy cảm. Script telemetry.js nhắm vào các hệ thống Linux và macOS, cố gắng đánh cắp:
GitHub tokens
NPM tokens
SSH keys
File .env
Ví tiền điện tử
Khóa API
Malware sử dụng các công cụ command-line của các nền tảng AI như Claude, Q và Gemini để tìm kiếm và thu thập thông tin nhạy cảm thông qua các LLM prompts.
Phát Triển và Tinh Chỉnh Prompt
Wiz Research phát hiện rằng malware đã trải qua ít nhất ba phiên bản payload khác nhau với các prompt được tinh chỉnh liên tục:
Phiên bản 1 (Nx versions 20.9.0, 20.11.0, 21.5.0):
Prompt tập trung vào việc tìm kiếm các file liên quan đến ví tiền điện tử với hướng dẫn cụ thể về đường dẫn và mẫu file.
Phiên bản 2 (Nx versions 21.6.0, 21.7.0):
Prompt giới thiệu role-prompting với cụm từ "authorized penetration testing agent", nhưng điều này dẫn đến việc các LLM từ chối thực hiện nhiệm vụ.
Phiên bản 3 (Nx versions 20.12.0, 21.8.0):
Prompt được điều chỉnh lại với vai trò "file-search agent", tránh thuật ngữ gây tranh cãi và tăng tính cụ thể.
Hiệu Quả Của AI Trong Tấn Công
Phân tích sâu từ Wiz cho thấy AI chỉ thành công trong việc thu thập dữ liệu ở dưới 25% trường hợp. Các yếu tố hạn chế bao gồm:
Chỉ 50% nạn nhân có ít nhất một AI CLI được cài đặt
Gần 25% tương tác Claude bị từ chối do các biện pháp bảo vệ
Vấn đề cấu hình thường xuyên: credit issues, credential problems, permissions requirements
25% tương tác Gemini bị hạn chế bởi workspace directory restrictions
Chi Tiết Kỹ Thuật: Cách Thức Tấn Công
Lỗ Hổng GitHub Actions
Cuộc tấn công khai thác ba điều kiện quan trọng:
Workflow validation với lỗ hổng injection: Workflow sử dụng
pull_request_targetchạy với quyền của branch đích và có thể truy cập repository secretsQuyền workflow được đặt thành read/write: Repository vẫn sử dụng cài đặt mặc định cũ của GitHub
Manual workflow dispatch được bật: Cho phép kích hoạt workflow thông qua GitHub API
Chuỗi Tấn Công
Khai thác ban đầu: Tạo PR với tiêu đề độc hại chứa shell commands
Chiếm đoạt token: Script độc hại chạy với quyền nâng cao, trích xuất GitHub token bằng
webhook.siteĐánh cắp NPM token: Khi publish workflow chạy script độc hại, nó có quyền truy cập
NPM_TOKENPhát hành package độc hại: Sử dụng token bị đánh cắp để phát hành các Nx package nhiễm độc
Ba Giai Đoạn Tấn Công Chi Tiết

Giai Đoạn 1: Tấn Công Trực Tiếp (26-27 tháng 8)
Hơn 1.700 người dùng có secrets bị rò rỉ công khai
Hơn 2.000 secrets được xác minh từ nghiên cứu của nhiều tổ chức
Hơn 20.000 file được rò rỉ trong mẫu nghiên cứu
85% hệ thống bị nhiễm chạy macOS
Đáng chú ý: Gần 90% GitHub tokens vẫn còn hiệu lực sau 24 giờ kể từ khi GitHub gỡ bỏ các repository chứa secrets. Tỷ lệ này chỉ giảm từ từ, với 80% tokens vẫn hợp lệ vào tối ngày 29/8. GitHub đã tiến hành thu hồi hàng loạt, nhưng vẫn còn khoảng 5% tokens bị rò rỉ còn hiệu lực.
Giai Đoạn 2: Khai Thác Tokens (28-29 tháng 8)
Ít nhất 480 tài khoản bị xâm phạm (2/3 là tổ chức)
Hơn 6.700 repository riêng tư được chuyển thành công khai với naming scheme
s1ngularity-repository-#5letters#Một tổ chức đơn lẻ có hơn 700 repository bị rò rỉ
Wiz xác định hàng nghìn credentials hợp lệ trong các repository trước đây riêng tư
Giai Đoạn 3: Tấn Công Có Mục tiêu (từ 31 tháng 8)
Bắt đầu vào tối 31 tháng 8
Nhắm vào một tổ chức nạn nhân duy nhất
500 repository được phát hành với suffix
_bakvà mô tảS1ngularity
Chiến Thuật Của Kẻ Tấn Công
Tối Ưu Hóa Bảo Mật Vận Hành
Wiz Research phân tích rằng kẻ tấn công đã tối ưu hóa cho bảo mật vận hành của họ:
Sử dụng
webhook.sitecho exfiltration ban đầu (giới hạn 100 records cho người dùng ẩn danh)Chuyển sang tạo GitHub repositories trên tài khoản nạn nhân để tránh cần thiết lập infrastructure
Sử dụng TOR khi truy cập tài khoản nạn nhân trong Giai đoạn 2
Sử dụng single-threaded Python script với User Agents:
python-requests/2.32.3vàpython-requests/2.32.4
Phản Ứng và Biện Pháp Khắc Phục
Phản Ứng Ngay Lập Tức
NPM gỡ bỏ tất cả các package độc hại sau 4 giờ
GitHub làm cho tất cả repository bị rò rỉ thành private sau 9 giờ
Thu hồi và xoay vòng tất cả NPM tokens
Biện Pháp Bảo Mật Lâu Dài Của Nx
Nx đã thực hiện các biện pháp bảo mật toàn diện:
Chuyển sang NPM's Trusted Publisher model sử dụng OIDC authentication thay vì tokens
Xác thực 2FA thủ công cho tất cả việc publishing packages
Tắt pipeline runs cho tất cả contributors bên ngoài
Thêm kiểm tra provenance trong Nx và Nx Console
Tạo
SECURITY.mdcho responsible disclosure
Phản Ứng Của Wiz
Wiz đã thực hiện white glove reporting cho hơn 50 tổ chức lớn bị ảnh hưởng. Phần lớn các tổ chức này cho biết đây là thông báo đầu tiên họ nhận được về cuộc tấn công ảnh hưởng đến họ.
Công Cụ Hỗ Trợ Người Dùng
S1ngularity Scanner
GitGuardian đã phát hành S1ngularity Scanner, một công cụ mã nguồn mở miễn phí để quét môi trường local tìm các file có thể bị xâm phạm.
HasMySecretLeaked
GitGuardian cung cấp dịch vụ HasMySecretLeaked tại hasmysecretleaked.com, cho phép kiểm tra xem credentials cụ thể có bị rò rỉ trong cuộc tấn công hay không mà không phải tiết lộ giá trị thực của secret.
Hướng Dẫn Điều Tra và TTPs Mới
Điều Tra GitHub Audit Logs
Giai đoạn 1: Tìm kiếm chuỗi s1ngularity trong trường repo của event repo.create.
Giai đoạn 2: Kiểm tra:
Chuỗi
s1ngularitytrong trườngrepocủa eventrepo.accessMột user clone nhiều repository trong thời gian ngắn
Event
org_credential_authorization.deauthorizebởi "github-staff" actor_id (liên quan đến việc GitHub thu hồi hàng loạt credentials bị xâm phạm)
Tác Động Lâu Dài và Rủi Ro Tiếp Tục
Credentials Vẫn Còn Hiệu Lực
Hơn 40% NPM tokens bị rò rỉ từ giai đoạn 1 vẫn còn hiệu lực, gần 100 tokens độc nhất
5% GitHub tokens bị rò rỉ vẫn chưa được thu hồi
Hơn 1.100 credentials vẫn còn hiệu lực tại thời điểm phân tích của GitGuardian
Các Loại Secrets Bị Rò Rỉ Nhiều Nhất
Từ phân tích của GitGuardian:
2.349 secrets riêng biệt từ 1.079 repository bị xâm phạm
Các loại phổ biến: GitHub, NPM, AWS, OpenAI, Anthropic, Azure, Vercel
Đáng chú ý: AI chỉ thu thập được dưới 100 secrets hợp lệ từ 20.000 file được exfiltrate
Mô Hình Tấn Công Đang Phát Triển
Wiz nhấn mạnh xu hướng rõ ràng trong threat landscape: từ Ultralytics, đến tj-actions, và giờ là Nx - kẻ tấn công đã nhận ra tiềm năng leo thang các lỗi cấu hình nhỏ của GitHub Actions thành các cuộc tấn công chuỗi cung ứng lớn và phức tạp.
Hướng Dẫn Bảo Vệ
Nếu bạn sử dụng các phiên bản Nx bị ảnh hưởng (20.9.0-21.8.0), hãy thực hiện ngay:
Kiểm tra hệ thống: Xem xét file package.json và package-lock.json
Làm sạch cache: Chạy
npm cache clean --forceKiểm tra shell files: Tìm lệnh
sudo shutdown -h 0trong ~/.bashrc, ~/.zshrcRotate credentials: Thay đổi tất cả GitHub tokens, NPM tokens, SSH keys, API keys
Kiểm tra GitHub: Tìm các repository "s1ngularity-repository" bất thường
Sử dụng công cụ quét: Chạy S1ngularity Scanner và kiểm tra HasMySecretLeaked
Kết Luận
Cuộc tấn công "s1ngularity" đánh dấu một cột mốc đáng lo ngại trong việc weaponize AI cho các mục đích độc hại. Mặc dù AI chỉ thành công trong một phần nhỏ các trường hợp, nhưng quy mô thiệt hại tổng thể là chưa từng có, với hàng nghìn tài khoản bị ảnh hưởng và hàng chục nghìn repository bị phơi bày.
Cuộc tấn công này nhấn mạnh rằng chỉ xóa dữ liệu bị phơi bày là không đủ - các doanh nghiệp phải có khả năng kiểm kê dữ liệu mật trên tất cả hệ thống, tự động hóa quy trình ở quy mô lớn, và duy trì khả năng hiển thị toàn diện về nơi credentials được sử dụng.






