Chuỗi cung ứng phần mềm nguy hiểm qua gói Python

Chuỗi cung ứng phần mềm nguy hiểm qua gói Python

Chuỗi cung ứng phần mềm đang là một trong những rủi ro an toàn thông tin đáng chú ý khi một gói Python phổ biến bị chèn mã độc qua quy trình phát hành tự động. Sự cố này ảnh hưởng trực tiếp đến elementary-data, làm lộ nguy cơ đánh cắp dữ liệu và thông tin xác thực của nhà phát triển.

Gói Python elementary-data bị chèn mã độc

Phiên bản độc hại 0.23.3 của gói elementary-data đã được đưa lên Python Package Index (PyPI) và đồng thời làm ô nhiễm các Docker image tương ứng trên GitHub Container Registry (GHCR). Với hơn 1 triệu lượt tải mỗi tháng, đây là một mục tiêu có giá trị cao đối với các cuộc tấn công mạng vào chuỗi cung ứng.

Để đối chiếu thông tin phát hành và cảnh báo, có thể tham khảo thêm từ nguồn GitHub chính thức: https://github.com/elementary-data/elementary-data.

Cách tấn công không dựa trên lộ mật khẩu

Theo phân tích của StepSecurity, vụ việc không xuất phát từ việc đánh cắp mật khẩu nhà phát triển. Thay vào đó, kẻ tấn công khai thác script-injection vulnerability trong pipeline GitHub Actions.

Một tài khoản GitHub mới được tạo đã đăng một script độc hại trong phần bình luận của pull request công khai. Do workflow tự động xử lý bình luận không an toàn, hệ thống đã thực thi đoạn mã này. Từ đó, kẻ tấn công dùng access token tích hợp sẵn trong workflow để tạo một verified release commit giả mạo và kích hoạt quy trình phát hành chính thức mà không cần chạm vào mã nguồn gốc.

CVE, CVSS và phạm vi ảnh hưởng

Sự cố này mang bản chất của một lỗ hổng CVE trong quy trình CI/CD, nhưng nội dung gốc không cung cấp mã CVE hay điểm CVSS cụ thể. Dù vậy, tác động thực tế là rõ ràng: quy trình build và phát hành bị lợi dụng để phát tán gói độc hại vào hệ sinh thái Python và container.

Ảnh hưởng chính tập trung vào:

  • PyPI: gói elementary-data 0.23.3.
  • GHCR: image ghcr.io/elementary-data/elementary:0.23.3.
  • Docker tag latest: nếu dùng digest kết thúc bằng 634255, môi trường được xem là đã bị ảnh hưởng.

Hành vi của payload và cơ chế kích hoạt

Sau khi được cài đặt, package bị chèn sẽ thả một file độc hại duy nhất tên elementary.pth vào môi trường. Trong Python, các file .pth được tự động thực thi khi interpreter khởi động, vì vậy payload kích hoạt ngay trên mọi máy có cài package.

Payload được mô tả là một information stealer ba giai đoạn. Nó tìm kiếm có hệ thống các bí mật phát triển và thông tin xác thực nhạy cảm, sau đó nén toàn bộ dữ liệu đã đánh cắp thành một archive và âm thầm gửi đến máy chủ command-and-control do kẻ tấn công kiểm soát.

Loại dữ liệu bị nhắm tới

  • Credential và token của nhà phát triển.
  • API keys.
  • Database passwords.
  • Các bí mật cấu hình trong môi trường build hoặc deploy.

Cách kiểm tra ảnh hưởng

StepSecurity khuyến nghị rà soát các bản build đã cài đặt để xác định có sử dụng phiên bản bị nhiễm hay không. Trong bối cảnh này, cảnh báo CVE không nằm ở số hiệu cụ thể mà ở chuỗi phát hành bị thao túng.

Các phiên bản an toàn được nêu trong nội dung gốc gồm 0.23.40.23.2. Phiên bản bị ảnh hưởng là 0.23.3.

pip show elementary-data
pip freeze | grep elementary-data

docker images | grep elementary

docker inspect ghcr.io/elementary-data/elementary:0.23.3

Đối chiếu Docker image

Nếu hệ thống đang dùng image ghcr.io/elementary-data/elementary:0.23.3, cần coi là ảnh hưởng. Trường hợp dùng tag latest, phải kiểm tra lại digest và bảo đảm đã được cập nhật sang bản sạch mới phát hành.

Biện pháp xử lý và giảm thiểu

Nhóm duy trì đã gỡ bỏ phiên bản độc hại 0.23.3 khỏi cả PyPIGHCR, đồng thời phát hành lại bản sạch 0.23.4 trong cùng ngày.

Các hệ thống từng cài bản bị ảnh hưởng cần thực hiện các bước sau để giảm rủi ro bảo mật:

  • Gỡ bỏ và cài lại package từ phiên bản sạch.
  • Thay thế Docker image bằng bản 0.23.4 hoặc 0.23.2.
  • Kiểm tra và xoay vòng toàn bộ credentials, API keysdatabase passwords trên máy đã cài bản độc hại.
  • Bật two-factor authentication cho các hạ tầng quan trọng.
  • Pin dependency về phiên bản cụ thể, đã xác minh để tránh cập nhật tự động vào bản bị chèn mã độc.

IOC cần lưu ý

  • Gói PyPI: elementary-data 0.23.3
  • Docker image: ghcr.io/elementary-data/elementary:0.23.3
  • Docker digest dấu hiệu ảnh hưởng: tag latest với digest kết thúc bằng 634255
  • File độc hại: elementary.pth

Với các môi trường sử dụng chuỗi cung ứng phần mềm và tự động hóa CI/CD, sự cố này cho thấy việc kiểm soát chặt GitHub Actions, ràng buộc phiên bản package, và giám sát thay đổi release là yêu cầu bắt buộc để giảm nguy cơ lỗ hổng zero-day trong quy trình phát hành.