GitHub Actions của Trivy Security Scanner bị xâm nhập, 75 tag bị chiếm đoạt để đánh cắp bí mật CI/CD

Trivy, một công cụ quét lỗ hổng mã nguồn mở phổ biến được duy trì bởi Aqua Security, đã bị xâm nhập lần thứ hai trong vòng một tháng để phát tán phần mềm độc hại đánh cắp các bí mật CI/CD nhạy cảm. Sự cố mới nhất đã ảnh hưởng đến GitHub Actions "aquasecurity/trivy-action" và "aquasecurity/setup-trivy," được sử dụng để quét các hình ảnh Docker container tìm lỗ hổng và thiết lập quy trình làm việc của GitHub Actions.
Mô tả hình ảnh công cụ quét Trivy

Trivy, một công cụ quét lỗ hổng mã nguồn mở phổ biến được duy trì bởi Aqua Security, đã bị xâm nhập lần thứ hai trong vòng một tháng để phát tán phần mềm độc hại đánh cắp các bí mật CI/CD nhạy cảm.

Sự cố mới nhất đã ảnh hưởng đến GitHub Actions "aquasecurity/trivy-action" và "aquasecurity/setup-trivy", được sử dụng để quét các hình ảnh Docker container tìm lỗ hổng và thiết lập quy trình làm việc của GitHub Actions với một phiên bản cụ thể của công cụ quét.

"Chúng tôi đã xác định rằng một kẻ tấn công đã force-pushed 75 trên 76 tag phiên bản trong kho lưu trữ aquasecurity/trivy-action, GitHub Action chính thức để chạy các quét lỗ hổng Trivy trong các pipeline CI/CD", nhà nghiên cứu bảo mật Philipp Burckhardt của Socket cho biết. "Những tag này đã bị sửa đổi để phân phối một payload độc hại, biến các tham chiếu phiên bản đáng tin cậy thành một cơ chế phân phối cho một infostealer."

Payload này thực thi bên trong các GitHub Actions runner và nhằm mục đích trích xuất các bí mật phát triển có giá trị từ môi trường CI/CD, chẳng hạn như SSH keys, thông tin đăng nhập cho các nhà cung cấp dịch vụ đám mây, cơ sở dữ liệu, cấu hình Git, Docker, Kubernetes tokens và ví tiền điện tử.

Trivy bị xâm nhập lần thứ hai

Sự phát triển này đánh dấu sự cố chuỗi cung ứng thứ hai liên quan đến Trivy. Vào cuối tháng 2 và đầu tháng 3 năm 2026, một bot tự động có tên hackerbot-claw đã khai thác một quy trình làm việc "pull_request_target" để đánh cắp một Personal Access Token (PAT), sau đó được vũ khí hóa để chiếm quyền kiểm soát kho lưu trữ GitHub, xóa một số phiên bản phát hành và đẩy hai phiên bản độc hại của tiện ích mở rộng Visual Studio Code (VS Code) lên Open VSX.

Dấu hiệu đầu tiên của sự xâm nhập đã được nhà nghiên cứu bảo mật Paul McCarty ghi nhận sau khi một bản phát hành bị xâm nhập mới (phiên bản 0.69.4) được xuất bản lên kho lưu trữ GitHub "aquasecurity/trivy". Phiên bản độc hại này đã được gỡ bỏ. Theo Wiz, phiên bản 0.69.4 khởi động cả dịch vụ Trivy hợp pháp và mã độc chịu trách nhiệm cho một loạt các tác vụ:

  • Thực hiện đánh cắp dữ liệu bằng cách quét hệ thống để tìm các environmental variables và credentials, mã hóa dữ liệu và exfiltrate nó thông qua yêu cầu HTTP POST đến scan.aquasecurtiy[.]org.
  • Thiết lập persistence bằng cách sử dụng một systemd service sau khi xác nhận rằng nó đang chạy trên một máy phát triển. systemd service được cấu hình để chạy một script Python ("sysmon.py") thăm dò một máy chủ bên ngoài để truy xuất payload và thực thi nó.

Trong một tuyên bố, Itay Shakury, phó chủ tịch mã nguồn mở tại Aqua Security, cho biết những kẻ tấn công đã lạm dụng một credential bị xâm nhập để xuất bản các bản phát hành Trivy, trivy-action và setup-trivy độc hại. Trong trường hợp "aquasecurity/trivy-action", kẻ thù đã force-pushed 75 tag phiên bản để trỏ đến các commit độc hại chứa payload infostealer Python mà không tạo bản phát hành mới hoặc đẩy lên một nhánh, như thực hành tiêu chuẩn. Bảy tag "aquasecurity/setup-trivy" cũng bị force-pushed theo cách tương tự.

Hình ảnh minh họa hệ thống bị xâm nhập

"Vì vậy, trong trường hợp này, kẻ tấn công không cần phải exploit Git," Burckhardt nói với The Hacker News. "Họ có các credentials hợp lệ với đủ đặc quyền để push code và rewrite tags, đó là điều đã cho phép chúng tôi quan sát thấy việc tag poisoning. Điều còn chưa rõ ràng là credential chính xác được sử dụng trong bước cụ thể này (ví dụ: maintainer PAT so với automation token), nhưng nguyên nhân gốc rễ hiện được hiểu là sự xâm nhập credential kéo dài từ sự cố trước đó."

Nhà cung cấp bảo mật cũng thừa nhận rằng cuộc tấn công mới nhất xuất phát từ việc không ngăn chặn hoàn toàn sự cố hackerbot-claw. "Chúng tôi đã rotate secrets và tokens, nhưng quá trình này không phải là atomic, và những kẻ tấn công có thể đã biết về các tokens đã được làm mới," Shakury nói. "Chúng tôi hiện đang áp dụng một cách tiếp cận hạn chế hơn và khóa tất cả các hành động tự động và mọi token để loại bỏ triệt để vấn đề."

Infostealer hoạt động theo ba giai đoạn: thu thập environmental variables từ bộ nhớ quy trình runner và hệ thống tệp, mã hóa dữ liệu và exfiltrate nó đến máy chủ do kẻ tấn công kiểm soát ("scan.aquasecurtiy[.]org").

Sơ đồ minh họa GitHub Actions

Nếu nỗ lực exfiltration thất bại, tài khoản GitHub của nạn nhân sẽ bị lạm dụng để dàn dựng dữ liệu bị đánh cắp trong một kho lưu trữ công khai có tên "tpcp-docs" bằng cách sử dụng INPUT_GITHUB_PAT bị chiếm đoạt, một environmental variable được sử dụng trong GitHub Actions để chuyển GitHub PAT cho việc xác thực với GitHub API.

Ai đứng sau cuộc tấn công?

Hiện chưa rõ ai đứng sau cuộc tấn công, mặc dù có dấu hiệu cho thấy kẻ tấn công được biết đến với tên TeamPCP có thể là thủ phạm. Đánh giá này dựa trên thực tế là credential harvester tự nhận mình là "TeamPCP Cloud stealer" trong mã nguồn. Còn được biết đến với tên DeadCatx3, PCPcat, PersyPCP, ShellForce và CipherForce, nhóm này nổi tiếng là một nền tảng tội phạm mạng native-cloud được thiết kế để breach cơ sở hạ tầng đám mây hiện đại nhằm tạo điều kiện cho việc đánh cắp dữ liệu và tống tiền.

"Các credential targets trong payload này phù hợp với hồ sơ tổng thể về theft-and-monetization native-cloud của nhóm," Socket cho biết. "Việc nhấn mạnh mạnh mẽ vào Solana validator key pairs và ví tiền điện tử ít được ghi nhận là dấu hiệu của TeamPCP, mặc dù nó phù hợp với động cơ tài chính đã biết của nhóm. Việc tự gắn nhãn có thể là một false flag, nhưng sự trùng lặp kỹ thuật với các công cụ TeamPCP trước đây làm cho việc quy kết thực sự trở nên hợp lý."

Các biện pháp phòng ngừa

Người dùng được khuyến nghị đảm bảo rằng họ đang sử dụng các bản phát hành an toàn mới nhất:

"Nếu bạn nghi ngờ mình đang chạy một phiên bản bị xâm nhập, hãy coi tất cả pipeline secrets là đã bị xâm nhập và rotate ngay lập tức," Shakury nói. Các bước giảm thiểu bổ sung bao gồm chặn exfiltration domain và địa chỉ IP liên quan (45.148.10[.]212) ở cấp độ mạng, và kiểm tra các tài khoản GitHub để tìm các kho lưu trữ có tên "tpcp-docs", điều này có thể cho thấy exfiltration thành công thông qua cơ chế dự phòng.

"Hãy pin GitHub Actions vào full SHA hashes, không phải version tags," nhà nghiên cứu Rami McCarthy của Wiz nói. "Version tags có thể được di chuyển để trỏ đến các malicious commits, như đã được chứng minh trong cuộc tấn công này."

(Đây là một câu chuyện đang diễn ra. Vui lòng kiểm tra lại để biết thêm chi tiết.)