Cuộc Tấn Công Megalodon Xâm Phạm 5.561 Kho Lưu Trữ GitHub Trong Sáu Giờ

Một cuộc tấn công chuỗi cung ứng CI/CD trên GitHub mang tên Megalodon đã thiết lập một tiêu chuẩn mới cho hành vi xâm phạm kho lưu trữ quy mô lớn, tự động hóa. Trong một khoảng thời gian sáu giờ duy nhất, những kẻ tấn công đã đẩy 5.718 bản cập nhật mã độc hại trên 5.561 kho lưu trữ GitHub, sử dụng danh tính giả để chèn các tệp workflow được thiết kế nhằm âm thầm đánh cắp thông tin xác thực đám mây, khóa SSH và các bí mật trong mã nguồn. Tốc độ và quy mô đáng kinh ngạc của chiến dịch này báo hiệu một sự chuyển dịch sang các cuộc tấn công pipeline được công nghiệp hóa, vượt quá khả năng phát hiện hoặc phản ứng trong thời gian thực của hầu hết các nhóm.

Cách Cuộc Tấn Công Megalodon Hoạt Động: Danh Tính Giả và Tự Động Hóa Chèn Workflow

Những kẻ tấn công đứng sau Megalodon không dựa vào các khai thác zero-day hay phần mềm độc hại phức tạp được phân phối đến máy của người dùng cuối. Thay vào đó, chúng khai thác bản chất đáng tin cậy của chính cơ sở hạ tầng CI/CD của GitHub. Bằng cách tạo ra các danh tính cộng tác viên giả, chúng đã gửi các pull request hoặc trực tiếp sửa đổi các tệp cấu hình workflow — cụ thể là các tệp YAML mà GitHub Actions sử dụng để định nghĩa các pipeline xây dựng và triển khai tự động.

Khi một tệp workflow độc hại xuất hiện trong kho lưu trữ, nó sẽ tự động thực thi mỗi khi pipeline được kích hoạt — thường là khi có sự kiện push hoặc hợp nhất pull request. Quá trình thực thi đó diễn ra bên trong môi trường runner của chính GitHub, thường có quyền truy cập vào các bí mật của kho lưu trữ, biến môi trường và các token được cấp phạm vi cho các nhà cung cấp đám mây. Các workflow Megalodon đã sử dụng cửa sổ truy cập đó để lọc dữ liệu ra bên ngoài — có khả năng đến cơ sở hạ tầng do kẻ tấn công kiểm soát — trước khi bất kỳ người bảo trì kho lưu trữ nào có lý do để xem xét thay đổi.

Đặc điểm định nghĩa của chiến dịch này là tự động hóa. Thực hiện gần 5.720 lần đẩy mã riêng biệt trên hơn 5.500 kho lưu trữ trong sáu giờ không phải là nỗ lực thủ công. Nó đòi hỏi các công cụ được viết script có thể xác định mục tiêu, xác thực bằng danh tính giả, tạo ra các sửa đổi workflow trông có vẻ hợp lý và gửi chúng song song. Mức độ tự động hóa này có nghĩa là bề mặt tấn công mở rộng nhanh hơn bất kỳ nhóm giám sát con người nào có thể theo dõi.

Thông Tin Xác Thực Nào Bị Đánh Cắp và Tại Sao Điều Đó Quan Trọng Đối Với Các Nhà Phát Triển

Tải trọng của mỗi workflow độc hại là thu thập thông tin xác thực. Các mục tiêu bao gồm thông tin xác thực của nhà cung cấp đám mây — phổ biến nhất là các khóa truy cập AWS, GCP và Azure được lưu trữ dưới dạng GitHub Secrets hoặc được tham chiếu bên trong các biến môi trường workflow. Các khóa riêng tư SSH được sử dụng để truy cập máy chủ hoặc xác thực giữa các dịch vụ cũng nằm trong phạm vi, cùng với bất kỳ bí mật văn bản thuần nào được nhúng trong mã nguồn hoặc tệp cấu hình.

Các loại thông tin xác thực đó mang rủi ro theo tầng. Một khóa truy cập AWS bị đánh cắp được liên kết với một vai trò IAM có quyền hạn rộng có thể cho phép kẻ tấn công khởi động cơ sở hạ tầng, lọc các kho dữ liệu hoặc di chuyển ngang vào các dịch vụ kết nối trong vài phút. Các khóa SSH có thể cung cấp quyền truy cập liên tục vào máy chủ sản xuất lâu sau khi vi phạm ban đầu được phát hiện và kho lưu trữ GitHub được dọn sạch. Giá trị của dữ liệu này vượt xa bản thân các kho lưu trữ.

Đây không phải là một mẫu rủi ro giả thuyết. Đầu năm nay, một nhà thầu của CISA đã để lộ các khóa AWS và mật khẩu văn bản thuần trên một kho lưu trữ GitHub công khai, chứng minh rằng việc quản lý thông tin xác thực sai trong môi trường phát triển ảnh hưởng ngay cả đến các tổ chức có nhiệm vụ bảo mật chuyên dụng. Megalodon chỉ đơn giản là công nghiệp hóa cùng một con đường khai thác mà các lỗi của con người riêng lẻ đã chứng minh nhiều lần.

Cũng đáng lưu ý rằng bản thân các công cụ và pipeline đánh cắp thông tin xác thực là mục tiêu. Cuộc tấn công chuỗi cung ứng Bitwarden CLI gần đây đã cho thấy rằng ngay cả các công cụ mà nhà phát triển sử dụng để quản lý bí mật cũng có thể bị xâm phạm ở thượng nguồn, có nghĩa là chuỗi tin cậy mở rộng ra ngoài bất kỳ kho lưu trữ hoặc cấu hình pipeline đơn lẻ nào.

Bảo Mật Theo Chiều Sâu Cho Các Nhóm Phát Triển: Quản Lý Bí Mật, Liên Lạc Được Mã Hóa và Kiểm Soát Truy Cập

Megalodon đã khai thác một số điểm yếu phổ biến trên cả kho lưu trữ mã nguồn mở và riêng tư. Giải quyết chúng đòi hỏi một cách tiếp cận nhiều lớp thay vì một biện pháp kiểm soát duy nhất.

Thứ nhất, bí mật không bao giờ nên được lưu trữ dưới dạng văn bản thuần bên trong các tệp workflow, tệp cấu hình môi trường hoặc mã nguồn. Tính năng Secrets được mã hóa của GitHub cung cấp một đường cơ sở, nhưng những bí mật đó cũng nên tuân theo nguyên tắc đặc quyền tối thiểu. Một workflow triển khai đến môi trường staging không cần thông tin xác thực cơ sở dữ liệu production. Việc giới hạn phạm vi bí mật chặt chẽ sẽ hạn chế bán kính vụ nổ khi một workflow bị xâm phạm.

Thứ hai, các quy tắc bảo vệ nhánh và yêu cầu người đánh giá đối với các thay đổi tệp workflow tạo ra một điểm kiểm tra của con người mà các cuộc tấn công tự động phải vượt qua. Yêu cầu ít nhất một đánh giá được phê duyệt trước khi có bất kỳ sửa đổi nào đối với các tệp .github/workflows/ có thể làm chậm hoặc chặn loại chèn tự động nhanh chóng mà Megalodon đã dựa vào.

Thứ ba, việc ghim các GitHub Actions của bên thứ ba vào các commit SHA cụ thể thay vì các thẻ nổi sẽ ngăn chặn một vector tấn công riêng biệt nhưng có liên quan, trong đó các nhà xuất bản action bị xâm phạm âm thầm cập nhật một thẻ để trỏ đến mã độc hại. Đây là cơ chế trong một số sự cố chuỗi cung ứng GitHub Actions gần đây.

Cuối cùng, ghi nhật ký kiểm tra và phát hiện bất thường trên các lần chạy workflow có thể phát hiện các kết nối mạng đi ra ngoài không mong đợi hoặc các mẫu truy cập bí mật bất thường. API nhật ký kiểm tra của GitHub và các công cụ bảo mật CI/CD của bên thứ ba có thể giúp phát hiện các tín hiệu này.

Cách Kiểm Tra Các Kho Lưu Trữ GitHub và Pipeline CI/CD Của Bạn Ngay Bây Giờ

Nếu tổ chức của bạn duy trì các kho lưu trữ GitHub với các pipeline CI/CD đang hoạt động, một vài bước tức thì đáng được ưu tiên.

Xem xét tất cả các tệp trong .github/workflows/ để tìm bất kỳ mục nhập nào được thêm hoặc sửa đổi gần đây, đặc biệt là những mục được thêm bởi các cộng tác viên bạn không nhận ra. Kiểm tra lịch sử commit cho các tệp workflow cụ thể — không chỉ xem nhánh mặc định.

Xoay vòng bất kỳ bí mật nào đang hoạt động trong thời gian xảy ra cuộc tấn công hoặc mà bạn không thể xác nhận chắc chắn là chưa bị lộ. Đối với thông tin xác thực đám mây, hãy xem xét nhật ký truy cập phía nhà cung cấp để tìm các lệnh gọi API bất thường trong cùng khoảng thời gian đó.

Kiểm tra xem những cộng tác viên và ứng dụng nào của kho lưu trữ có quyền ghi. Các cuộc tấn công danh tính giả phụ thuộc vào khả năng đẩy mã, vì vậy việc thắt chặt quyền cộng tác viên và bật yêu cầu đánh giá cho các thay đổi workflow sẽ loại bỏ một điểm xâm nhập chính.

Cuối cùng, hãy xem xét việc áp dụng một công cụ quét bí mật chuyên dụng chạy trên mỗi commit, phát hiện thông tin xác thực trước khi chúng được commit vào kho lưu trữ. Một số tùy chọn mã nguồn mở và thương mại tích hợp trực tiếp với GitHub.

Điều Này Có Ý Nghĩa Gì Đối Với Bạn

Chiến dịch Megalodon là một minh chứng thực tế về lý do tại sao các pipeline CI/CD đã trở thành bề mặt tấn công chính. Các nhà phát triển và nhóm bảo mật coi bảo mật pipeline là thứ yếu so với bảo mật ứng dụng đang để lại một con đường rộng mở đến các thông tin xác thực nhạy cảm nhất của họ.

Hãy bắt đầu kiểm tra bí mật trong tuần này. Xem xét ai có thể sửa đổi các tệp workflow của bạn, xoay vòng các thông tin xác thực mà bạn không thể xác minh là sạch, và bật bảo vệ nhánh trên nhánh mặc định của bạn nếu bạn chưa làm. Tốc độ của cuộc tấn công Megalodon có nghĩa là vào thời điểm một cảnh báo được kích hoạt, việc lọc dữ liệu có thể đã hoàn tất. Phòng ngừa và giới hạn phạm vi truy cập là những biện pháp bảo vệ đáng tin cậy duy nhất.