Megalodon, chiến dịch được SafeDep công bố ngày 22/05/2026, là lời nhắc rất rõ rằng chuỗi cung ứng phần mềm không chỉ bị tấn công ở package registry. Trong nhiều trường hợp, nơi nguy hiểm hơn lại là hệ thống CI/CD: phần máy tự động build, test, ký, đóng gói và triển khai mã nguồn.
Theo tổng hợp từ The Hacker News và báo cáo gốc của SafeDep, Megalodon đã đẩy 5.718 commit độc hại vào 5.561 repository GitHub trong khoảng sáu giờ ngày 18/05/2026. Điểm đáng chú ý: mã độc không cần sửa logic ứng dụng. Nó chèn workflow GitHub Actions để chạy ngay trong môi trường build, nơi thường nắm giữ token, khóa cloud và bí mật triển khai.
Vì sao CI/CD trở thành mục tiêu chính?
Trong mô hình phát triển hiện đại, CI/CD là “phòng máy” của sản phẩm số. Một commit được merge có thể kích hoạt hàng loạt tác vụ: tải dependency, chạy test, build image, đẩy artifact, deploy lên cloud, publish package hoặc cập nhật hạ tầng bằng Terraform. Để làm được việc đó, runner thường được cấp quyền truy cập vào nhiều hệ thống nhạy cảm.
Đây chính là lý do attacker thích CI/CD. Thay vì đi tìm từng máy chủ, chúng chỉ cần khiến pipeline chạy payload trong đúng thời điểm có secret được nạp vào môi trường. Một workflow tưởng như vô hại có thể đọc biến môi trường, kiểm tra file cấu hình, gọi metadata service của cloud và gửi dữ liệu ra ngoài trước khi log bị xóa hoặc job hoàn tất.

Megalodon đã làm gì?
Chiến dịch này dùng nhiều tài khoản GitHub dùng một lần, tên ngẫu nhiên, rồi giả mạo danh tính commit quen thuộc như build-bot, auto-ci, ci-bot hoặc pipeline-bot. Commit message cũng được ngụy trang theo phong cách bảo trì thường gặp, ví dụ tối ưu pipeline hoặc cải thiện thời gian build. Đây là thủ thuật xã hội rất đơn giản nhưng hiệu quả: reviewer nhìn thấy thay đổi “có vẻ thuộc về automation” và dễ bỏ qua.
Payload được nhúng vào workflow GitHub Actions, có phần Bash được mã hóa base64. Khi workflow chạy, nó cố thu thập secret trong runner: biến môi trường CI, thông tin trong /proc/*/environ, khóa AWS, token Google Cloud, credential từ instance metadata service, SSH private key, Docker/Kubernetes config, Vault token, Terraform credential, file .env, service account JSON, database connection string, JWT, PEM key, GITHUB_TOKEN, token GitLab/Bitbucket và cả URL/token dùng cho OIDC trong GitHub Actions.
Điểm đáng sợ không nằm ở kỹ thuật quá mới, mà ở cách nó đánh đúng “điểm tụ quyền”. Một runner bị compromise có thể trở thành bàn đạp sang cloud account, container registry, package registry, kho mã nguồn khác hoặc hệ thống triển khai sản xuất.
Bối cảnh rộng hơn: GitHub Actions đang bị săn lùng
Megalodon không xuất hiện trong khoảng trống. Trong tháng 05/2026, The Hacker News cũng ghi nhận vụ actions-cool/issues-helper, khi tag của một GitHub Action phổ biến bị trỏ sang commit giả để đánh cắp credential CI/CD. Trước đó, nhiều chiến dịch đã chứng minh một điểm chung: chỉ cần kiểm soát action, tag, token maintainer hoặc workflow, attacker có thể biến hạ tầng build của nạn nhân thành nơi tự chạy mã độc.
BleepingComputer cũng đưa tin GitHub điều tra truy cập trái phép vào khoảng 4.000 repository nội bộ bị nhóm TeamPCP tuyên bố nắm giữ, trong bối cảnh nhóm này từng liên quan đến nhiều chiến dịch nhắm vào nền tảng phát triển và chuỗi cung ứng phần mềm. Dù các vụ việc có phạm vi và nguyên nhân khác nhau, chúng cho thấy cùng một xu hướng: tội phạm mạng đang chuyển trọng tâm từ máy chủ chạy ứng dụng sang hệ thống tạo ra ứng dụng.
Dấu hiệu cần kiểm tra ngay
- Workflow mới hoặc thay đổi bất thường trong thư mục
.github/workflows/. - Commit message dạng “ci”, “build”, “optimize”, “pipeline” nhưng tác giả không thuộc nhóm vận hành.
- Workflow chứa lệnh decode base64, curl/wget tới IP lạ, hoặc thao tác đọc hàng loạt biến môi trường.
- Job CI/CD phát sinh kết nối outbound tới địa chỉ không nằm trong danh sách cho phép.
- Token cloud, registry hoặc GitHub có hoạt động lạ sau ngày 18/05/2026.
Cách phòng thủ thực tế
Đầu tiên, hãy coi workflow là mã nguồn có đặc quyền cao. Mọi thay đổi trong .github/workflows/ nên bắt buộc review bởi người có trách nhiệm bảo mật hoặc DevOps, không gộp chung với thay đổi ứng dụng thông thường.
Thứ hai, áp dụng nguyên tắc tối thiểu quyền cho GitHub Actions. Đặt permissions: ở mức hẹp nhất, tránh cấp quyền ghi mặc định cho GITHUB_TOKEN, tách pipeline build khỏi pipeline deploy, và chỉ cho workflow phát hành chạy trên nhánh/tag được bảo vệ.
Thứ ba, hạn chế secret tồn tại lâu trong runner. Ưu tiên OIDC với điều kiện ràng buộc chặt theo repository, branch, environment và workflow. Với secret tĩnh, cần rotation định kỳ, scope hẹp, thời hạn ngắn và giám sát sử dụng bất thường.
Thứ tư, pin third-party actions bằng full commit SHA thay vì tag dễ bị di chuyển. Với action quan trọng, nên vendor nội bộ hoặc dùng mirror đã kiểm soát. Đây không phải biện pháp hoàn hảo, nhưng giảm đáng kể rủi ro tag bị trỏ sang commit độc hại.
Cuối cùng, bổ sung kiểm soát runtime: chặn outbound mặc định từ runner, chỉ allowlist domain cần thiết, bật secret scanning, theo dõi workflow logs, kiểm tra artifact, và cảnh báo khi workflow đọc nhiều file nhạy cảm hoặc gọi metadata service bất thường.
Conclusion
Megalodon cho thấy một bài học quan trọng: trong DevSecOps, pipeline không chỉ là công cụ tự động hóa. Nó là một phần của biên giới bảo mật. Nếu attacker kiểm soát được workflow, chúng có thể không cần phá ứng dụng; chúng chỉ cần để chính hệ thống build của chúng ta mở cửa cho chúng.
Với doanh nghiệp đang dùng GitHub Actions, GitLab CI, Jenkins, CircleCI hoặc các nền tảng tương tự, đây là thời điểm phù hợp để rà soát lại toàn bộ quyền, secret, workflow và đường truyền outbound của runner. Chuỗi cung ứng phần mềm không còn kết thúc ở dependency. Nó bắt đầu ngay từ pipeline.
VNCyberS
Tổng hợp từ SafeDep, The Hacker News và BleepingComputer















