Trang chủ Bài viết Bảo mật Hàng nghìn tài khoản GitHub bị chiếm đoạt để cài mã độc đánh cắp bí mật CI
Bảo mật 13/11/2026 0 lượt xem

Hàng nghìn tài khoản GitHub bị chiếm đoạt để cài mã độc đánh cắp bí mật CI

Hàng nghìn tài khoản GitHub bị chiếm đoạt để cài mã độc đánh cắp bí mật CI

Từ thứ Ba, một kẻ tấn công đã lợi dụng thông tin đăng nhập bị đánh cắp của 4.837 tài khoản GitHub để cấy một công cụ đánh cắp bí mật vào các kho mã mà những tài khoản này có quyền ghi, theo phân tích của công ty bảo mật phần mềm Aikido Security. Công cụ này nhắm vào các bí mật và thông tin xác thực đám mây mà quy trình CI của kho mã có thể truy cập, và đã chạy trong ít nhất 1.806 kho mã, nơi kẻ tấn công nhiều khả năng đã thu được các thông tin xác thực đó.

Cách thức tấn công

Mỗi cuộc tấn công bắt đầu bằng một pull request mang tiêu đề docs: dependency audit notes, mở từ nhánh tên wfx-docs, nhằm kiểm tra xem tài khoản có quyền ghi vào kho mã hay không. Những pull request thử nghiệm này được mở tại 61.764 kho mã, và công cụ đánh cắp xuất hiện tiếp theo ở một số kho trong đó. Trong 7.309 kho, mã độc được thêm vào một workflow có sẵn; ở 771 kho, nó xuất hiện dưới dạng hook npm postinstall, cũng chạy trên máy lập trình viên khi thực hiện npm install.

Sau khi đẩy mã độc, kẻ tấn công thường hoàn tác thay đổi trong vài phút. Ở những nơi mã độc đã chạy, nhật ký của nó bị xóa, thường cùng với chính lần chạy đó. Tại các kho mã này, mọi bí mật và vai trò đám mây mà workflow có thể truy cập đều nên được coi là đã bị xâm phạm. Nhóm nghiên cứu của SafeDep ghi nhận 8.093 kho mã nhận commit độc hại trong khoảng từ 12:46 UTC thứ Ba đến 04:36 UTC hôm nay, nhưng con số thực tế có thể cao hơn vì họ chỉ tìm trong nhánh mặc định của các kho công khai.

Dấu hiệu nhận biết và phạm vi ảnh hưởng

Các dấu hiệu cần kiểm tra từ thứ Ba gồm nhánh wfx-docs, nhánh chore/[a-z0-9]{8} tồn tại ngắn, nhánh ci-check-[0-9]{4}, cùng các thông điệp commit như ci: refresh build cache hay chore: add ci helper. Công cụ đánh cắp gửi dữ liệu qua HTTP POST tới các địa chỉ IP cụ thể hoặc tới một kênh Telegram; trong mẫu 200 commit chứa mã độc, khoảng một phần năm chỉ dùng Telegram.

Mã độc thu thập thông tin xác thực từ mọi nguồn trên runner, gồm bí mật và biến GitHub Actions, GITHUB_TOKEN, token OIDC và runtime, khóa dịch vụ AI, cùng bí mật trong bộ nhớ các tiến trình. Nó đọc tệp thông tin xác thực của AWS, Azure, GCP, Kubernetes, npm, PyPI, SSH và các công cụ khác, đồng thời sao chép kho mã, 100 commit gần nhất và các artifact workflow gần đây. Trên runner tự vận hành, nó lấy thông tin xác thực đám mây từ metadata của instance, trạng thái container Docker và các systemd unit.

Mã độc còn được thiết kế để đào sâu vào tài khoản đám mây: đổi token OIDC GitHub thành phiên AWS, GCP, Azure, và trên AWS có thể tạo access key dài hạn cho người dùng IAM. Một số bước được xây dựng để tồn tại qua việc luân chuyển thông tin xác thực, như viết lại chính sách tin cậy của vai trò AWS để mở vai trò cho bất kỳ tài khoản AWS nào, hoặc thêm thông tin xác thực liên kết với tiền tố wfx-ci- vào ứng dụng Azure AD. Để tìm các backdoor này, cần kiểm tra thông tin xác thực liên kết wfx-ci-* trong Entra ID, các phiên AssumeRoleWithWebIdentity hoặc AssumeRole tên wfx-* trong AWS CloudTrail, các lệnh GenerateAccessToken và SignJwt từ workload identity pool GitHub trên GCP, và đăng nhập JWT từ nhà phát hành OIDC GitHub trong Vault.

Thiệt hại qua các gói phần mềm

Mã độc đã chạm tới ít nhất một gói Packagist và một module Go thông qua cơ chế phát hành tự động. Phiên bản 3.14.3 của gói Packagist digitalelvis/neuronai-studio là độc hại; lệnh composer install thông thường không chạy mã độc, nhưng chạy npm install bên trong thư mục vendor của gói thì có. Người dùng nên chặn phiên bản 3.14.3 và ghim phiên bản 3.14.2 trở về trước. Hai phiên bản v1.0.278 và v1.0.280 của module Go github.com/onuragtas/docker-env chỉ chứa mã độc trong tệp workflow GitHub Actions, còn mã Go và bản phát hành không đổi. Mã độc cũng xuất hiện trong module github.com/vkuznet/gocurl ở một pseudo-version nằm trong workflow chưa từng chạy, và chạm tới 28 kho WebdriverIO qua các commit dưới tên tài khoản bot wdio-bot.

Các tài khoản bị dùng tuần này trùng với những tài khoản bị ảnh hưởng trong đợt tấn công GhostAction hồi tháng Mười, khi tài khoản GitHub bị đánh cắp đẩy workflow đánh cắp bí mật vào kho mã. Aikido cho biết chưa quy đợt tấn công tháng Mười Một cho cùng một đối tượng, vì hạ tầng, công cụ và phương thức khác nhau, và thông tin xác thực bị đánh cắp thường rơi vào tay nhiều kẻ tấn công.

Nguồn: The Hacker News

Trích nguồn từ: The Hacker News

Tags:

Chia sẻ:

Bài viết liên quan

Zalo