Chiến dịch Megalodon kết hợp tự động hóa với kỹ thuật ngụy trang nhằm khiến commit trông giống hoạt động CI bình thường.
Kẻ tấn công tạo nhiều tài khoản GitHub tạm thời với tên ngẫu nhiên, sau đó giả mạo danh tính bot CI quen thuộc như:
Những tên này khiến commit trông giống các hệ thống tự động của dự án, thay vì hành động từ một hacker.
Thông tin tác giả và nội dung commit được thiết kế để giống các cập nhật CI thông thường — ví dụ như chỉnh sửa workflow hoặc cấu hình pipeline. Điều này giúp các commit độc hại hòa lẫn vào lịch sử phát triển bình thường của dự án.
Chiến dịch tập trung vào những repository không có hoặc có quy tắc bảo vệ branch yếu. Nếu repository không yêu cầu pull request hoặc review bắt buộc, kẻ tấn công có thể đẩy trực tiếp thay đổi vào branch chính.
Mỗi commit độc hại thêm một file workflow GitHub Actions chứa payload Bash đã được mã hóa Base64. Khi pipeline CI chạy, script sẽ giải mã và thực thi trên runner của GitHub.
Do đó, cuộc tấn công đôi khi không kích hoạt ngay lập tức mà chỉ hoạt động khi pipeline tiếp theo được chạy.
Script Base64 trong workflow được thiết kế để thu thập dữ liệu nhạy cảm từ môi trường CI và gửi về hạ tầng do kẻ tấn công kiểm soát.
Các mục tiêu được báo cáo bao gồm:
Payload thu thập biến môi trường, thông tin hệ thống và các secret mà runner có quyền truy cập, sau đó gửi dữ liệu này về máy chủ điều khiển (C2).
Điều này đặc biệt nguy hiểm vì pipeline CI thường chứa thông tin triển khai production. Nếu môi trường build bị xâm nhập, kẻ tấn công có thể mở đường tới hạ tầng cloud, registry package hoặc hệ thống deploy.
Một mục tiêu quan trọng của Megalodon là token OIDC của GitHub Actions.
Trong nhiều pipeline hiện đại, các workflow sử dụng OpenID Connect (OIDC) để xác thực với nhà cung cấp cloud mà không cần lưu khóa API lâu dài. Thay vào đó, pipeline yêu cầu một token định danh tạm thời, rồi dùng token này để đổi lấy credential ngắn hạn từ AWS, Google Cloud hoặc Azure.
Cách tiếp cận này giúp loại bỏ secret tĩnh, nhưng cũng tạo rủi ro mới: nếu token bị đánh cắp khi pipeline đang chạy, kẻ tấn công có thể tạm thời giả mạo danh tính của job CI.
Do hệ thống identity của cloud tin tưởng token này, nó có thể được đổi lấy quyền truy cập tạm thời với cùng quyền mà pipeline deploy đang có.
Hậu quả có thể bao gồm:
Dù token OIDC hết hạn khá nhanh, chỉ vài phút quyền truy cập cũng đủ giá trị cho kẻ tấn công nếu pipeline có quyền cao.
Megalodon cho thấy xu hướng mới của các cuộc tấn công chuỗi cung ứng: thay vì sửa mã nguồn, kẻ tấn công nhắm vào hệ thống tự động hóa phát triển.
Bằng cách thay đổi workflow CI, chúng có thể:
Vì hàng nghìn dự án phụ thuộc vào CI/CD để build và triển khai, chỉ một thay đổi workflow cũng có thể làm lộ secret của nhiều hệ thống phía sau.
Khoảng cùng thời gian, GitHub cũng tiết lộ một sự cố bảo mật riêng liên quan tới extension Visual Studio Code bị cài mã độc trên thiết bị của một nhân viên.
Extension này cho phép kẻ tấn công truy cập khoảng 3.800 repository nội bộ của GitHub trước khi sự cố được phát hiện và khống chế.
Cuộc tấn công đó xuất phát từ môi trường phát triển bị xâm nhập và liên quan tới việc đánh cắp token thông qua extension trojan được phát tán trên marketplace của VS Code.
Một số báo cáo bảo mật nhận thấy thời điểm và kỹ thuật có điểm tương đồng giữa các sự cố chuỗi cung ứng nhắm vào công cụ phát triển. Tuy nhiên, chưa có bằng chứng công khai xác nhận rằng vụ rò rỉ repository nội bộ của GitHub đã trực tiếp dẫn tới chiến dịch Megalodon.
Hiện tại, hai sự kiện này được xem là hai sự cố bảo mật riêng biệt nhưng xảy ra gần cùng thời điểm trong hệ sinh thái phát triển phần mềm.
Megalodon cho thấy các hệ thống tự động hóa có thể bị lạm dụng để mở rộng tấn công chuỗi cung ứng cực nhanh. Bằng cách giả mạo bot, tự động hóa commit và chèn workflow độc hại, kẻ tấn công biến pipeline build thành công cụ thu thập credential hàng loạt.
Sự cố này nhấn mạnh một số ưu tiên phòng thủ quan trọng cho đội phát triển:
Khi pipeline phát triển ngày càng kiểm soát hạ tầng cloud và hệ thống production, bảo mật CI/CD đã trở thành một phần cốt lõi của phòng thủ chuỗi cung ứng phần mềm.