- Đây là một GitHub Action phổ biến dùng để theo dõi thay đổi giữa các nhánh, và đã xảy ra nỗ lực làm lộ secret CI/CD thông qua một commit bị xâm nhập
- 23.000 repo bị ảnh hưởng, GitHub đã gỡ action này và hiện không thể tiếp tục sử dụng
- Cần thay bằng action khác và kiểm tra vì có khả năng secret đã bị lộ trong log workflow công khai, sau đó bắt buộc phải xoay vòng khóa
- Harden-Runner của StepSecurity đã phát hiện sự việc, và họ đang phát hành miễn phí action thay thế được tăng cường bảo mật step-security/changed-files
Tóm tắt sự cố
- tj-actions/changed-files đang được sử dụng trong hơn 23.000 kho lưu trữ và đã bị xâm nhập
- Kẻ tấn công đã sửa mã của action và trỏ lại các thẻ phiên bản tới commit độc hại
- Điều này khiến secret CI/CD bị in ra trong log build của GitHub Actions
- Có khả năng secret đã bị lộ trong các log workflow công khai
- Vấn đề được phát hiện sau khi Harden-Runner phát hiện một endpoint bất thường
- Một script Python độc hại khiến secret bị dump từ tiến trình Runner Worker
- Tất cả các thẻ đều bị trỏ tới cùng một mã băm commit độc hại (
0e58ed8671d6b60d0890c21b07f8835ace038e67)
Biện pháp ứng phó của GitHub
- GitHub đã gỡ action tj-actions/changed-files và ngừng cho phép sử dụng
- CVE chính thức là CVE-2025-30066
Cách khắc phục
-
1. Sử dụng action thay thế an toàn do StepSecurity cung cấp
- Thay
tj-actions/changed-files bằng step-security/changed-files@v45
-
2. Gỡ mọi tham chiếu tới tj-actions/changed-files
-
3. Kiểm tra log chạy workflow của GitHub Actions
- Cần kiểm tra log các lần chạy gần đây để xác minh secret có bị rò rỉ hay không
- Nếu phát hiện secret bị lộ, cần xoay vòng (đặt lại) ngay lập tức
-
4. Thiết lập danh sách cho phép cho GitHub Actions
- Cấu hình danh sách cho phép để chỉ chạy các GitHub Action đáng tin cậy:
- Có thể thiết lập trong phần cài đặt của GitHub:
- Settings → Actions → Allow select actions
-
5. Thiết lập StepSecurity Harden-Runner
- Có thể cấu hình Harden-Runner để giám sát lưu lượng mạng và quá trình chạy workflow
Các bước tiếp theo
- Đã báo cáo sự cố cho GitHub → GitHub issue: #2463
- Kho lưu trữ tj-actions/changed-files đã bị xóa
- Đã được đăng ký chính thức với mã CVE-2025-30066
- Có thể phát hiện và ngăn chặn các vấn đề bảo mật tương tự thông qua StepSecurity Harden-Runner
- Khuyến nghị cấu hình Harden-Runner để tăng cường trạng thái bảo mật và thực hiện giám sát theo thời gian thực
2 bình luận
Tối qua còn không hoạt động, giờ lại được rồi.
Ý kiến trên Hacker News
Tác giả và người bảo trì của Renovate giải thích kịch bản tấn công
tj-actions/changed-filesTrong vài năm gần đây, niềm tin vào dependency và extension của bên thứ ba đang giảm dần
Kho lưu trữ đã hoạt động trở lại và nhà phát triển đã đưa ra giải thích
@tj-actions-botĐiều tra
github_eventstrong Clickhouse để xác định tài khoản được dùng trong cuộc tấn côngThật đáng sốc khi cách chạy CI/CD lại là liệt kê các kho lưu trữ ngẫu nhiên trên GitHub
Đồng sáng lập của StepSecurity giải thích cách phát hiện sự cố bảo mật
Vấn đề nằm ở cách sử dụng GitHub Actions mặc định là dùng git tag không bất biến
GitHub Actions bất biến sẽ sớm được đưa vào
Dự án
maven-lockfilegiải thích PR đã được tự động hợp nhấtGitHub Actions nên dùng lockfile cho dependency