Hai quy trình công việc GitHub Actions nữa đã trở thành nạn nhân mới nhất bị mã độc đánh cắp thông tin đăng nhập tấn công bởi một tác nhân đe dọa được biết đến với tên TeamPCP, hoạt động tội phạm mạng gốc đám mây cũng đứng sau cuộc tấn công chuỗi cung ứng Trivy.
Các quy trình công việc, cả hai đều do công ty bảo mật chuỗi cung ứng Checkmarx duy trì, được liệt kê dưới đây:
Công ty bảo mật đám mây Sysdig cho biết họ đã quan sát thấy một công cụ đánh cắp thông tin đăng nhập giống hệt loại được sử dụng trong các hoạt động của TeamPCP nhắm mục tiêu vào trình quét lỗ hổng Trivy của Aqua Security và các GitHub Actions liên quan của nó, khoảng bốn ngày sau vụ vi phạm vào ngày 19 tháng 3 năm 2026. Sự thỏa hiệp chuỗi cung ứng Trivy đang được theo dõi dưới định danh CVE CVE-2026-33634 (điểm CVSS: 9.4).
"Điều này cho thấy rằng thông tin đăng nhập bị đánh cắp từ sự thỏa hiệp Trivy đã được sử dụng để đầu độc các hành động bổ sung trong các kho lưu trữ bị ảnh hưởng," Sysdig cho biết.
Phần mềm đánh cắp, được gọi là "TeamPCP Cloud stealer", được thiết kế để đánh cắp thông tin đăng nhập và bí mật liên quan đến khóa SSH, Git, Amazon Web Services (AWS), Google Cloud, Microsoft Azure, Kubernetes, Docker, các tệp .env, cơ sở dữ liệu và VPNs, cùng với cấu hình CI/CD, dữ liệu từ ví tiền điện tử và các URL webhook của Slack và Discord.
Cũng như trường hợp của Trivy, các tác nhân đe dọa đã được phát hiện ép đẩy các tag tới các commit độc hại chứa payload của công cụ đánh cắp ("setup.sh"). Dữ liệu bị đánh cắp được đưa ra bên ngoài tới miền "checkmarx[.]zone" (địa chỉ IP: 83.142.209[.]11:443) dưới dạng một kho lưu trữ được mã hóa ("tpcp.tar.gz").
Phiên bản mới tạo một kho lưu trữ "docs-tpcp" sử dụng GITHUB_TOKEN của nạn nhân để dàn xếp dữ liệu bị đánh cắp như một phương pháp sao lưu nếu quá trình xuất dữ liệu ra máy chủ thất bại. Trong sự cố Trivy, các tác nhân đe dọa đã sử dụng tên kho lưu trữ "tpcp-docs" thay thế.
"Việc sử dụng các miền typosquat dành riêng cho nhà cung cấp cho mỗi hành động bị nhiễm độc là một kỹ thuật lừa đảo có chủ ý," Sysdig cho biết. "Một nhà phân tích xem xét nhật ký CI/CD sẽ thấy lưu lượng curl đến cái dường như là miền của chính nhà cung cấp hành động đó, làm giảm khả năng phát hiện thủ công."
Việc chức năng chính của công cụ đánh cắp là thu thập thông tin đăng nhập từ bộ nhớ CI runner cho phép các nhà điều hành trích xuất GitHub personal access tokens (PATs) và các bí mật khác từ thời điểm một hành động Trivy bị xâm phạm thực thi trong một workflow. Tệ hơn nữa, nếu các token đó có quyền ghi vào các kho lưu trữ cũng sử dụng các hành động của Checkmarx, kẻ tấn công có thể vũ khí hóa chúng để đẩy mã độc hại.
Điều này, đến lượt nó, mở ra cánh cửa cho một sự thỏa hiệp chuỗi cung ứng xếp tầng, nơi một hành động bị nhiễm độc thu giữ các bí mật được sử dụng để tạo điều kiện cho việc nhiễm độc các hành động khác.
"Payload, lược đồ mã hóa và quy ước đặt tên tpcp.tar.gz giống hệt nhau xác nhận đây là cùng một tác nhân đe dọa đang mở rộng phạm vi hoạt động của chúng ra ngoài sự thỏa hiệp Trivy ban đầu," Sysdig lưu ý. "Kiểm tra mã và quét phụ thuộc đã thất bại ở đây vì mã độc hại đã được tiêm vào một hành động đáng tin cậy tại nguồn."
Theo Wiz, cuộc tấn công dường như đã được thực hiện thông qua việc xâm phạm tài khoản dịch vụ "cx-plugins-releases", với việc kẻ tấn công cũng xuất bản các phiên bản bị trojan hóa của các tiện ích mở rộng Open VSX "ast-results" (phiên bản 2.53.0) và "cx-dev-assist" (phiên bản 1.7.0). Các phiên bản trên VS Code Marketplace không bị ảnh hưởng.
Sau khi tiện ích mở rộng được kích hoạt, payload độc hại sẽ kiểm tra xem nạn nhân có thông tin đăng nhập cho ít nhất một nhà cung cấp dịch vụ đám mây hay không, chẳng hạn như GitHub, AWS, Google Cloud và Microsoft Azure. Nếu phát hiện bất kỳ thông tin đăng nhập nào, nó sẽ tiếp tục tìm nạp payload giai đoạn tiếp theo từ cùng một miền ("checkmarx[.]zone").
"Payload cố gắng thực thi thông qua npx, bunx, pnpx hoặc yarn dlx. Điều này bao gồm các trình quản lý gói JavaScript chính," các nhà nghiên cứu của Wiz Rami McCarthy, James Haughom và Benjamin Read cho biết. "Gói được truy xuất chứa một công cụ đánh cắp thông tin đăng nhập toàn diện. Thông tin đăng nhập thu thập được sau đó được mã hóa, sử dụng các khóa như ở những nơi khác trong chiến dịch này, và được đưa ra bên ngoài tới 'checkmarx[.]zone/vsx' dưới dạng tpcp.tar.gz."
"Trên các hệ thống không phải CI, mã độc cài đặt tính dai dẳng thông qua một dịch vụ người dùng systemd. Kịch bản dai dẳng thăm dò https://checkmarx[.]zone/raw cứ sau 50 phút để tìm các payload bổ sung, với một công tắc tắt sẽ hủy bỏ nếu phản hồi chứa "youtube". Hiện tại, liên kết chuyển hướng đến The Show Must Go On by Queen."
Để giảm thiểu mối đe dọa, người dùng được khuyến nghị thực hiện các hành động sau ngay lập tức:
- Xoay vòng tất cả các bí mật, token và thông tin đăng nhập đám mây có thể truy cập vào CI runners trong khoảng thời gian bị ảnh hưởng.
- Kiểm tra nhật ký chạy GitHub Actions workflow để tìm bất kỳ tham chiếu nào đến tpcp.tar.gz, scan.aquasecurity[.]org hoặc checkmarx[.]zone.
- Tìm kiếm tổ chức GitHub cho các kho lưu trữ có tên "tpcp-docs" hoặc "docs-tpcp," cho thấy việc xuất dữ liệu thành công thông qua cơ chế dự phòng.
- Ghim GitHub Actions vào các SHA commit đầy đủ thay vì các tag phiên bản, vì các tag có thể bị force-pushed.
- Giám sát các kết nối mạng đi từ CI runners đến các miền đáng ngờ.
- Hạn chế Instance Metadata Service (IMDS) từ các vùng chứa CI runner bằng cách sử dụng IMDSv2.
Trong những ngày sau vụ vi phạm ban đầu, các tác nhân TeamPCP đã đẩy các Docker image độc hại của Trivy chứa cùng công cụ đánh cắp và chiếm quyền kiểm soát tổ chức GitHub "aquasec-com" của công ty để can thiệp vào hàng chục kho lưu trữ nội bộ.
Họ cũng đã được quan sát thấy nhắm mục tiêu vào các cụm Kubernetes bằng một script shell độc hại sẽ xóa tất cả các máy khi phát hiện các hệ thống khớp với múi giờ và cài đặt địa phương của Iran, làm nổi bật sự leo thang mới trong phương thức hoạt động của nhóm.