TeamPCP, nhóm tác nhân đe dọa đứng sau các vụ thỏa hiệp gần đây đối với Trivy và KICS, hiện đã thỏa hiệp một gói Python phổ biến có tên litellm, phát hành hai phiên bản độc hại chứa công cụ thu thập thông tin xác thực (credential harvester), bộ công cụ di chuyển ngang Kubernetes và một backdoor bền bỉ.
Nhiều nhà cung cấp bảo mật, bao gồm Endor Labs và JFrog, tiết lộ rằng các phiên bản litellm 1.82.7 và 1.82.8 đã được phát hành vào ngày 24 tháng 3 năm 2026, có thể xuất phát từ việc gói này sử dụng Trivy trong quy trình CI/CD của họ. Cả hai phiên bản bị cài backdoor này sau đó đã bị xóa khỏi PyPI.
"Payload là một cuộc tấn công ba giai đoạn: một công cụ thu thập thông tin xác thực (credential harvester) quét các khóa SSH, cloud credentials, Kubernetes secrets, cryptocurrency wallets, và tệp .env; một bộ công cụ di chuyển ngang Kubernetes triển khai các privileged pods tới mọi node; và một systemd backdoor (sysmon.service) bền bỉ thăm dò 'checkmarx[.]zone/raw' để tìm các binary bổ sung," nhà nghiên cứu Kiran Raj của Endor Labs cho biết.
Như đã quan sát trong các trường hợp trước đây, dữ liệu bị thu thập được exfiltrated dưới dạng một kho lưu trữ được mã hóa ("tpcp.tar.gz") đến một tên miền command-and-control có tên "models.litellm[.]cloud" thông qua yêu cầu HTTPS POST.
Trong trường hợp của phiên bản 1.82.7, mã độc được nhúng vào tệp "litellm/proxy/proxy_server.py", với việc tiêm mã được thực hiện trong hoặc sau quá trình xây dựng wheel. Mã được thiết kế để thực thi tại thời điểm import module, sao cho bất kỳ quá trình nào import "litellm.proxy.proxy_server" đều kích hoạt payload mà không yêu cầu bất kỳ tương tác nào từ người dùng.
Phiên bản tiếp theo của gói bổ sung một "vector hung hãn hơn" bằng cách tích hợp tệp "litellm_init.pth" độc hại tại wheel root, khiến logic được thực thi tự động mỗi khi một tiến trình Python khởi động trong môi trường, không chỉ khi litellm được import.
Một khía cạnh khác khiến phiên bản 1.82.8 nguy hiểm hơn là việc .pth launcher tạo ra một tiến trình Python con thông qua subprocess.Popen, cho phép payload chạy ngầm.
"Các tệp Python .pth được đặt trong site-packages được xử lý tự động bởi site.py khi trình thông dịch khởi động," Endor Labs cho biết. "Tệp này chứa một dòng duy nhất import một subprocess và khởi chạy một tiến trình Python tách rời để giải mã và thực thi cùng một Base64 payload."
Payload giải mã thành một orchestrator để giải nén một credential harvester và một persistence dropper. Credential harvester này cũng tận dụng Kubernetes service account token (nếu có) để liệt kê tất cả các node trong cluster và triển khai một privileged pod tới từng node. Pod sau đó chroots vào hệ thống tệp của host và cài đặt persistence dropper dưới dạng một systemd user service trên mỗi node.
Dịch vụ systemd được cấu hình để khởi chạy một script Python ("~/.config/sysmon/sysmon.py") – cùng tên được sử dụng trong vụ thỏa hiệp Trivy – script này kết nối tới "checkmarx[.]zone/raw" cứ mỗi 50 phút để lấy một URL trỏ đến payload giai đoạn tiếp theo. Nếu URL chứa youtube[.]com, script sẽ hủy bỏ việc thực thi – một mẫu kill switch phổ biến trong tất cả các sự cố đã được quan sát cho đến nay.
"Chiến dịch này gần như chắc chắn chưa kết thúc," Endor Labs cho biết. "TeamPCP đã thể hiện một mô hình nhất quán: mỗi môi trường bị thỏa hiệp đều mang lại thông tin xác thực để mở khóa mục tiêu tiếp theo. Việc chuyển từ CI/CD (GitHub Actions runners) sang môi trường sản xuất (các gói PyPI chạy trong các Kubernetes clusters) là một sự leo thang có chủ đích."
Với những diễn biến mới nhất, TeamPCP đã tiến hành một chiến dịch tấn công chuỗi cung ứng (supply chain attack) không ngừng nghỉ, mở rộng sang năm hệ sinh thái, bao gồm GitHub Actions, Docker Hub, npm, Open VSX và PyPI, nhằm mở rộng phạm vi mục tiêu và đưa ngày càng nhiều hệ thống vào tầm kiểm soát của chúng.
"TeamPCP đang leo thang một chiến dịch phối hợp nhằm vào các công cụ bảo mật và cơ sở hạ tầng nhà phát triển mã nguồn mở, và hiện đang công khai nhận trách nhiệm về nhiều cuộc tấn công tiếp theo trên các hệ sinh thái," Socket cho biết. "Đây là một hoạt động kéo dài nhằm vào các điểm đòn bẩy cao trong chuỗi cung ứng phần mềm."
Trong một tin nhắn được đăng trên kênh Telegram của họ, TeamPCP nói: "Các công ty này được xây dựng để bảo vệ chuỗi cung ứng của bạn nhưng họ thậm chí còn không thể bảo vệ chuỗi cung ứng của chính mình, tình trạng nghiên cứu bảo mật hiện đại là một trò đùa, kết quả là chúng tôi sẽ tồn tại trong một thời gian dài để đánh cắp hàng terrabytes [sic] bí mật thương mại với các đối tác mới của chúng tôi."
"Hiệu ứng quả cầu tuyết từ điều này sẽ rất lớn, chúng tôi đã hợp tác với các nhóm khác để duy trì sự hỗn loạn, nhiều công cụ bảo mật và dự án mã nguồn mở yêu thích của bạn sẽ bị nhắm mục tiêu trong những tháng tới, vì vậy hãy theo dõi," tác nhân đe dọa cho biết thêm.
Khuyến nghị dành cho người dùng
Người dùng được khuyến nghị thực hiện các hành động sau để ngăn chặn mối đe dọa -
- Kiểm tra tất cả các môi trường để tìm các phiên bản litellm 1.82.7 hoặc 1.82.8, và nếu tìm thấy, hãy quay lại phiên bản sạch.
- Cô lập các host bị ảnh hưởng.
- Kiểm tra sự hiện diện của các rogue pods trong các Kubernetes clusters.
- Xem xét nhật ký mạng để tìm lưu lượng egress đến "models.litellm[.]cloud" và "checkmarx[.]zone".
- Gỡ bỏ các cơ chế persistence.
- Kiểm tra các pipeline CI/CD để tìm việc sử dụng các công cụ như Trivy và KICS trong các khoảng thời gian bị thỏa hiệp.
- Thu hồi và xoay vòng tất cả các credential đã bị lộ.
"Chuỗi cung ứng mã nguồn mở đang tự sụp đổ," Gal Nagli, người đứng đầu bộ phận tiếp xúc mối đe dọa tại Wiz (thuộc Google), cho biết trong một bài đăng trên X. "Trivy bị thỏa hiệp → LiteLLM bị thỏa hiệp → thông tin xác thực từ hàng chục nghìn môi trường rơi vào tay kẻ tấn công → và những thông tin xác thực đó dẫn đến vụ thỏa hiệp tiếp theo. Chúng ta đang mắc kẹt trong một vòng lặp."