Lỗ hổng AWS CodeBuild nghiêm trọng: Kiểm soát GitHub bị đe dọa

Một cấu hình sai nghiêm trọng trong AWS CodeBuild đã tạo điều kiện cho kẻ tấn công không xác thực chiếm quyền kiểm soát các kho lưu trữ GitHub quan trọng thuộc sở hữu của AWS, bao gồm cả AWS JavaScript SDK được sử dụng rộng rãi, vốn cung cấp năng lượng cho chính AWS Console. Sự kiện này đặt ra một mối đe dọa mạng nghiêm trọng, có nguy cơ lây nhiễm mã độc vào hàng loạt ứng dụng và giao diện điều khiển của AWS.
Wiz Research đã công bố chi tiết về lỗ hổng, đặt tên là CodeBreach. Nguyên nhân gốc rễ xuất phát từ các mẫu biểu thức chính quy (regex) không được neo (unanchored) trong bộ lọc webhook của CodeBuild, cụ thể là đối với tham số ACTOR_ID. Tham số này lẽ ra phải giới hạn các bản dựng chỉ cho các ID người dùng GitHub đáng tin cậy.
Chi tiết Kỹ thuật về Lỗ hổng Bảo mật
Thiếu các ký tự neo ^ và $, bộ lọc regex đã khớp với bất kỳ ID người dùng nào chứa một chuỗi con được chấp thuận. Điều này cho phép kẻ tấn công vượt qua kiểm soát thông qua các sự kiện “eclipse”, nơi các ID GitHub mới, dài hơn kết hợp các ID người bảo trì cũ hơn.
Hệ thống gán ID tuần tự của GitHub, tạo ra khoảng 200.000 ID mỗi ngày, khiến các sự trùng lặp như vậy xảy ra thường xuyên. Đặc biệt là đối với các ID có 6-7 chữ số, vốn là mục tiêu của lỗ hổng này trong bốn kho lưu trữ AWS quan trọng:
aws/aws-sdk-js-v3aws/aws-lccorretto/amazon-corretto-crypto-providerawslabs/open-data-registry
Quy trình Tấn công Mạng và Khai thác Lỗ hổng
Kẻ tấn công đã khai thác lỗ hổng bảo mật này bằng cách tạo hàng loạt GitHub Apps thông qua quy trình manifest, nhằm mục đích tranh giành các ID “eclipse”. Sau đó, chúng gửi các yêu cầu kéo (Pull Request – PR) để kích hoạt các bản dựng có đặc quyền.
Trong một cuộc thử nghiệm PoC (Proof-of-Concept) chống lại kho lưu trữ aws/aws-sdk-js-v3 (PR #7280), mã độc được chèn đã thực hiện việc trích xuất bộ nhớ. Mục đích là để thu thập Personal Access Token (PAT) của GitHub từ tài khoản aws-sdk-js-automation.
Việc này xảy ra bất chấp các biện pháp giảm thiểu rủi ro đã được áp dụng trước đó từ sự cố Amazon Q năm 2025. PAT bị đánh cắp đã cấp các quyền repo và admin:repo_hook, cho phép kẻ tấn công mời thêm cộng tác viên để leo thang đặc quyền quản trị và đẩy trực tiếp mã vào nhánh main.
Việc chiếm quyền kiểm soát JavaScript SDK tiềm ẩn nguy cơ lây nhiễm vào các bản phát hành NPM hàng tuần của nó. Điều này có thể ảnh hưởng đến 66% các môi trường đám mây được quét và chính AWS Console, nơi tích hợp các phiên bản SDK gần đây cùng với thông tin xác thực của người dùng, theo tiết lộ của Wiz Research.
Rủi ro Chuỗi Cung ứng và Hậu quả
PAT bị đánh cắp còn kiểm soát các kho lưu trữ riêng tư liên quan, làm gia tăng đáng kể các rủi ro chuỗi cung ứng. Tình huống này tương tự như các vụ tấn công như Nx S1ngularity hoặc Amazon Q (AWS-2025-015).
Wiz đã ngừng leo thang cuộc tấn công sau khi hoàn thành PoC và đã tiết lộ một cách có trách nhiệm cho AWS vào ngày 25 tháng 8 năm 2025. Bạn có thể xem chi tiết nghiên cứu tại: Wiz Research: CodeBreach Vulnerability in AWS CodeBuild.
Đây là một lỗ hổng bảo mật nghiêm trọng do ảnh hưởng của nó tới chuỗi cung ứng phần mềm. Tấn công chuỗi cung ứng có thể dẫn đến hậu quả nghiêm trọng và lan rộng.
Các Biện pháp Khắc phục và Bản Vá Bảo Mật
AWS đã nhanh chóng khắc phục lỗi regex trong vòng 48 giờ. Đồng thời, họ đã thu hồi các token bị ảnh hưởng, tăng cường bảo vệ bộ nhớ, và tiến hành kiểm tra toàn diện các bản dựng công khai. Kết quả kiểm tra nhật ký xác nhận không có bất kỳ sự khai thác nào từ bên ngoài.
Không có dữ liệu khách hàng nào bị ảnh hưởng. AWS cũng đã triển khai các tính năng mới như Pull Request Comment Approval và CodeBuild-hosted runners để ngăn chặn các bản dựng từ nguồn không đáng tin cậy. Những cải tiến này là một phần quan trọng của bản vá bảo mật toàn diện.
Khuyến nghị và Phòng ngừa
Để phòng tránh các lỗ hổng bảo mật tương tự, người dùng nên thực hiện các biện pháp sau:
- Neo các biểu thức chính quy webhook: Đảm bảo các regex trong bộ lọc webhook được neo đúng cách bằng
^và$. - Sử dụng PAT chi tiết: Áp dụng các Personal Access Token (PATs) với phạm vi quyền hạn tối thiểu cần thiết.
- Kích hoạt cổng phê duyệt PR: Bắt buộc phê duyệt cho các Pull Request trước khi bản dựng được kích hoạt.
- Quét tìm cấu hình dễ bị tấn công: Sử dụng các truy vấn của Wiz hoặc công cụ tương tự để xác định các thiết lập có nguy cơ.
AWS cũng đặc biệt khuyến nghị vô hiệu hóa các bản dựng tự động từ các Pull Request có nguồn gốc không đáng tin cậy. Sơ đồ luồng tấn công làm nổi bật con đường từ một PR độc hại đến rủi ro ảnh hưởng đến AWS Console. Điều này nhấn mạnh vai trò quan trọng của bản vá bảo mật kịp thời và cấu hình an toàn.
Chỉ số Compromise (IOCs)
Các chỉ số sau đây liên quan đến lỗ hổng bảo mật CodeBreach và quá trình khai thác PoC:
Các Kho Lưu trữ GitHub Bị Ảnh hưởng
aws/aws-sdk-js-v3aws/aws-lccorretto/amazon-corretto-crypto-providerawslabs/open-data-registryThông tin Personal Access Token (PAT) Bị Đánh cắp
- Tài khoản liên quan:
aws-sdk-js-automation - Phạm vi (scopes) quyền hạn:
repo,admin:repo_hook
Sự kiện này một lần nữa khẳng định rằng các hệ thống CI/CD (Continuous Integration/Continuous Delivery) là mục tiêu hàng đầu cho các cuộc tấn công mạng. Chúng phức tạp, giàu đặc quyền và thường xuyên tiếp xúc với đầu vào không đáng tin cậy. Việc công bố công khai chi tiết lỗ hổng bảo mật này diễn ra vào ngày 15 tháng 1 năm 2026.







