Cảnh báo CVE nghiêm trọng: CI/CD bị đánh cắp bí mật

Cảnh báo CVE nghiêm trọng: CI/CD bị đánh cắp bí mật

Chuỗi tấn công chuỗi cung ứng này cho thấy CI/CD pipeline có thể bị lợi dụng để đánh cắp thông tin xác thực quy mô lớn khi mã độc được chèn vào các thành phần phát triển tin cậy. Báo cáo từ Trend Micro mô tả nhiều đợt hoạt động trong tháng 3 và tháng 4 năm 2024, tập trung vào việc biến các bước build, release và phân phối thành kênh rò rỉ bí mật.

CI/CD pipeline trở thành điểm xâm nhập

Nhóm tấn công đã chèn mã độc vào các thành phần phổ biến trong hệ sinh thái phát triển, làm cho logic do kẻ tấn công điều khiển hòa lẫn vào hoạt động build và phát hành bình thường. Mục tiêu không phải là xâm nhập máy tính cá nhân, mà là khai thác CI/CD pipeline để trích xuất token, khóa đám mây và các bí mật vận hành.

Trend Micro ghi nhận ít nhất 7 đợt khác nhau trong giai đoạn này. Thông tin chi tiết có thể tham khảo trực tiếp tại báo cáo của hãng: Trend Micro: Analyzing TeamPCP Supply Chain Attacks.

Cách thức lây nhiễm trong chuỗi cung ứng phần mềm

Trong các vụ việc gần đây, hai thành phần bị xâm nhập nổi bật là Checkmarx KICS và gói Python elementary data. Ở cả hai trường hợp, kẻ tấn công đều lợi dụng các cơ chế phân phối hợp lệ như Docker image, extension, GitHub Actions và quy trình ký phát hành để đẩy payload độc hại xuống runner và môi trường phát triển.

KICS: Poisoning trên nhiều kênh phân phối

Với KICS, mã độc được đưa vào Docker Hub, VS Code extensions, OpenVSXGitHub Actions. Khi pipeline tải artifact, payload JavaScript stealer được thực thi trong Bun runtime như một phần bình thường của quá trình quét.

Payload này thu thập:

  • GitHub tokens
  • Cloud credentials
  • SSH keys
  • Configuration files
  • Shell history

Dữ liệu sau đó được đẩy ra ngoài qua HTTPS tới hạ tầng command and control do kẻ tấn công kiểm soát.

Elementary data: Chèn lệnh từ pull request

Trong trường hợp elementary data, một comment được tạo có chủ đích trên pull request công khai. Comment này đi thẳng vào workflow GitHub Actions, nơi dữ liệu sự kiện được nội suy vào lệnh shell mà không được làm sạch đầu vào.

Điều đó cho phép chèn script để:

  • Lợi dụng GitHub token của runner
  • Tạo commit phát hành có gắn tag
  • Kích hoạt pipeline ký và phát hành của dự án
  • Đưa wheel độc hại lên PyPIGitHub Container Registry

Sau khi được cài đặt, package dùng một cơ chế .pth loader của Python để tự chạy khi interpreter khởi động, kể cả trong các process không import trực tiếp package đó.

Ảnh hưởng đến hệ thống và dữ liệu bị trích xuất

Phạm vi dữ liệu bị nhắm tới trong chiến dịch CI/CD pipeline này rất rộng. Stealer tập trung vào cả bí mật cục bộ lẫn bí mật đám mây, cho thấy mức độ ảnh hưởng không chỉ giới hạn ở một repository hay một runner riêng lẻ.

Các loại dữ liệu bị thu thập gồm:

  • GitHub PATs
  • Cloud API keys
  • SSH material
  • Kubernetes secrets
  • Database passwords
  • Developer tooling tokens
  • Cryptocurrency wallets

Trong môi trường AWS, payload không chỉ đọc tệp cục bộ mà còn gọi trực tiếp Secrets ManagerSSM Parameter Store để lấy các secret được quản lý tập trung. Điều này làm tăng rủi ro bảo mật ngay cả khi dữ liệu không tồn tại trên đĩa.

Hành vi trên hạ tầng và cách exfiltration

Trong chuỗi KICS, các artifact đã bị làm nhiễm độc và tải về một module JavaScript stealer. Nhóm tấn công sau đó còn sử dụng lại các token đã đánh cắp để phát hành một Bitwarden CLI độc hại chỉ trong khoảng 48 giờ từ cửa sổ phơi nhiễm ban đầu.

Biến thể Bitwarden này tái sử dụng:

  • Cùng command and control domain
  • Cùng cơ chế mã hóa
  • Cùng hành vi fallback qua GitHub commit search

Ở elementary data, kẻ tấn công dùng payload Python thuần để giảm dấu vết và tránh mẫu mã độc quá rõ ràng. Dữ liệu được đẩy qua HTTPS, kèm header gắn nhãn riêng và một endpoint được front qua Cloudflare.

IOC và dấu hiệu cần truy vết

IOC được nhắc trong nội dung gốc chủ yếu liên quan tới hành vi và artefact phát tán, không kèm danh sách IP/domain đầy đủ do đã được làm mờ. Khi điều tra phát hiện xâm nhập trong môi trường CI/CD, cần ưu tiên các dấu hiệu sau:

  • Artifact Docker, extension hoặc package bị sửa đổi ngoài quy trình phát hành chuẩn.
  • GitHub Actions workflow có biểu thức do người dùng điều khiển được nội suy trực tiếp vào shell command.
  • Tệp .pth bất thường trong Python site-packages.
  • Marker file persistence nằm trong thư mục tạm của hệ thống.
  • Kết nối outbound HTTPS tới domain command and control hoặc staging không nằm trong allowlist.

Biện pháp giảm rủi ro bảo mật cho pipeline

Trọng tâm phòng thủ của chiến dịch này là giảm niềm tin mặc định trong CI/CD pipeline. Nếu một bước build hoặc release bị chiếm quyền, nó có thể tiếp cận nhiều secret hơn mức cần thiết.

Các biện pháp được nêu trong báo cáo gồm:

  • Áp dụng least privilege cho workflow và runner.
  • Chặn outbound egress từ CI runner bằng allowlist.
  • Pin Docker image theo digest thay vì tag có thể thay đổi.
  • Rà soát GitHub Actions để phát hiện biểu thức người dùng nội suy vào shell.
  • Xác minh digest của image trước khi sử dụng.
  • Audit logs của workflow để tìm các bước build bất thường.

Hành động cần thực hiện khi phát hiện phơi nhiễm

Nếu từng kéo các Docker tag, VS Code extension, Bitwarden CLI hoặc package Python bị ảnh hưởng, môi trường đó nên được xem là đã bị xâm nhập trái phép cho tới khi xác minh xong.

Các bí mật cần xoay vòng ngay gồm:

  • GitHub PATs
  • IAM keys
  • Azure và GCP credentials
  • Kubernetes service account tokens
  • SSH keys
  • Vault tokens
  • npm và PyPI credentials
  • Secrets trong biến môi trường và credential store chuẩn

Đối với hệ thống Python, cần kiểm tra thư mục site-packages để tìm .pth files có kích thước bất thường. Với runner CI, nên kiểm tra các kết nối ngoài dự kiến và đối chiếu với log build, release, ký phát hành và publish.

Mẫu kiểm tra nhanh trên môi trường CI/CD

Một số kiểm tra thực tế có thể áp dụng ngay trong quy trình điều tra cảnh báo CVE hoặc sự cố chuỗi cung ứng:

find / -name "*.pth" 2>/dev/null

ps aux | grep -E "bun|python|node"

cat ~/.aws/credentials
cat ~/.git-credentials

git log --oneline --decorate --all | head

Các lệnh trên không thay thế điều tra đầy đủ, nhưng hữu ích để xác định nhanh dấu hiệu tiêm lệnh, persistence hoặc rò rỉ dữ liệu trong runner.

Phạm vi ảnh hưởng của lỗ hổng chuỗi cung ứng

Đây không phải lỗ hổng CVE đơn lẻ mà là một chiến dịch lợi dụng thiết kế và cấu hình của CI/CD pipeline. Vì vậy, việc xử lý cần tập trung vào cấu trúc pipeline, quyền truy cập artifact và luồng mạng hơn là chỉ vá một thành phần riêng lẻ.

Khi một workflow, tag Docker, extension marketplace hoặc signed release bị giả mạo, toàn bộ chuỗi phân phối có thể trở thành kênh phát tán mã độc và rò rỉ dữ liệu nhạy cảm. Điều này làm tăng đáng kể nguy cơ bảo mật trong các môi trường phụ thuộc nhiều vào automation.

Tài liệu tham khảo

NVD – National Vulnerability Database