Skip to main content

Command Palette

Search for a command to run...

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

Updated
8 min read
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:

  1. Workflow validation với lỗ hổng injection: Workflow sử dụng pull_request_target chạy với quyền của branch đích và có thể truy cập repository secrets

  2. Quyền workflow được đặt thành read/write: Repository vẫn sử dụng cài đặt mặc định cũ của GitHub

  3. 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

  1. Khai thác ban đầu: Tạo PR với tiêu đề độc hại chứa shell commands

  2. 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

  3. Đánh cắp NPM token: Khi publish workflow chạy script độc hại, nó có quyền truy cập NPM_TOKEN

  4. Phá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 _bak và 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.site cho 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.3python-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.md cho 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 s1ngularity trong trường repo của event repo.access

  • Một user clone nhiều repository trong thời gian ngắn

  • Event org_credential_authorization.deauthorize bở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:

  1. Kiểm tra hệ thống: Xem xét file package.json và package-lock.json

  2. Làm sạch cache: Chạy npm cache clean --force

  3. Kiểm tra shell files: Tìm lệnh sudo shutdown -h 0 trong ~/.bashrc, ~/.zshrc

  4. Rotate credentials: Thay đổi tất cả GitHub tokens, NPM tokens, SSH keys, API keys

  5. Kiểm tra GitHub: Tìm các repository "s1ngularity-repository" bất thường

  6. 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.

Tham khảo

  1. s1ngularity's Aftermath: AI, TTPs, and Impact in the Nx Supply Chain Attack

  2. S1ngularity - What Happened, How We Responded, What We Learned

  3. The Nx "s1ngularity" Attack: Inside the Credential Leak

  4. s1ngularity Supply Chain Attack: What It Means for Cloud and AI Security

Newsletters

Part 1 of 50

More from this blog

F

FPT IS Security

761 posts

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

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