Supply chain attack leaks secrets on github: s1ngularity

1./ Tổng quan

Ngày 26/08/2025, một cuộc tấn công chuỗi cung ứng phần mềm được phát hiện liên quan đến Nx build system trên npm. Nhóm tấn công đã chèn mã độc vào nhiều phiên bản phát hành, khai thác lỗ hổng GitHub Actions để chiếm quyền xuất bản gói.

Các phiên bản này chứa script độc hại (telemetry.js) được thực thi sau khi cài đặt, nhắm vào hệ thống phát triển phần mềm của nạn nhân. Mục tiêu chính là:

  • Thu thập dữ liệu nhạy cảm (GitHub tokens, SSH keys, AWS/OpenAI API keys, ví tiền điện tử).
  • Exfil dữ liệu thông qua các repository công khai trên GitHub.
  • Phá hoại môi trường dev bằng cách chỉnh sửa file shell (~/.bashrc, ~/.zshrc).

Dữ liệu bị rò rỉ đã lan rộng chỉ trong vòng 8 giờ trước khi GitHub can thiệp, với hơn 400 người dùng/tổ chức bị ảnh hưởng và hơn 5500 repositories.

2./ Chi tiết cách thức tấn công

Giai đoạn 1: Attacker lợi dụng GitHub Action pull_request_target để chiếm quyền publish. Attacker đã chèn thêm script telemetry.js sau đó đẩy package độc hại lên npm Nx.

Giai đoạn 2: Post-install script (telemetry.js) tự động chạy khi người dùng cài Nx trên môi trường Linux/MacOS.

Giai đoạn 3: Script chèn lệnh “sudo shutdown -h 0”vào “~/.bashrc” và “~/.zshrc” gây ra tình trạng shutdown hệ thống khi có phiên terminal mới.

Giai đoạn 4: Script tìm kiếm ví điện tử, SSH keys, AWS/OpenAI tokens, GitHub tokens.

Giai đoạn 5: Lợi dụng các AI CLI (Claude, Gemini, Q) để lọc dữ liệu cần đánh cắp trên hệ thống.

Giai đoạn 6: Encode dữ liệu nhiều lớp base64 sau đó push lên GitHub repo. Sau đó, Attacker lợi dụng Github tokens đã đánh cắp được từ Giai đoạn 4 thay đổi từ Private repos thành Public repos với các tên repos “s1ngularity-*”.

3./ Điều kiện khai thác

Hệ thống có thể bị khai thác nếu như:

  • Hệ thống đang sử dụng các gói npm:
    • npm Nx (@nrwl/nx, nx) các versions 20.9.0, 20.10.0, 20.11.0, 20.12.0, 21.5.0, 21.6.0, 21.7.0, 21.8.0.
    • @nx/devkit in versions: 21.5.0, 20.9.0
    • @nx/enterprise-cloud version 3.2.0
    • @nx/eslint version 21.5.0
    • @nx/js in versions: 21.5.0, 20.9.0
    • @nx/key version 3.2.0
    • @nx/node in versions 21.5.0, 20.9.0
    • @nx/workspace in versions 21.5.0, 20.9.0
  • Môi trường Linux/macOS (Windows không bị ảnh hưởng).
  • Tài khoản GitHub có token có quyền push repo.

4./ Giảm thiểu rủi ro

  • Nâng cấp lên version sạch (Nx đã xóa các phiên bản độc hại, do đó bất kỳ phiên bản hiện tại nào có nguồn gốc từ NPM đều có thể được coi là an toàn).
  • Kiểm tra và xóa các malicious shell khỏi ~/.bashrc và ~/.zshrc.
  • Xóa /tmp/inventory.txt và .bak. (Nếu có)
  • Xem lại audit logs của GitHub để tìm ra các request API bất thường.
  • Kiểm tra xem có repo nào được tạo trong tổ chức và các tài khoản người dùng có tên s1ngularity-repository, s1ngularity-repository-0 hoặc s1ngularity-repository-1 không (lưu ý rằng vì GitHub đã vô hiệu hóa các kho lưu trữ này nên chúng sẽ không hiển thị trong tìm kiếm).

*** Các mẫu cần tìm kiếm khi thực hiện hunting

File / Process Indicators Network /Account Indicators
~/.bashrc, ~/.zshrc được sửa với lệnh “sudo shutdown -h 0” Các lệnh gọi API gửi đến api.github.com (/user/repos, /repos/*/contents/results.b64)
/tmp/inventory.txt Public các GitHub repositories với các tên: s1ngularity-repository,  s1ngularity-repository-0, or  s1ngularity-repository-1
/tmp/inventory.txt.bak File results.b64 chứa nội dung base64-encoded
2379ac0e03b1a67c4ca5693136eff4945e644a91 (telemetry.js SHA1)  
e5d1f3c45ee7cca6ae59cf64e0573050bbe136ec (telemetry.js SHA1)  
b4f20b39aa6df1002872f07973024d85aa49abaf (telemetry.js SHA1)  
d2438106211ebd12c4f0a248848bc9864c97a3c0 (telemetry.js SHA1)  

***Tham khảo:

Leave a reply:

Your email address will not be published.