Lỗ hổng bảo mật trong Composer làm lộ GitHub Token trên GitHub Actions
Một lỗ hổng nghiêm trọng trong Composer đã gây ra việc lộ GitHub Token trong nhật ký hệ thống (logs) của GitHub Actions. Vấn đề xuất phát từ việc quy tắc xác thực token quá khắt khe, khiến các token hợp lệ bị từ chối và in ra màn hình dưới dạng văn bản thuần, vượt qua cơ chế che giấu bí mật của GitHub.

Gần đây, cộng đồng bảo mật đã phát hiện một lỗ hổng nghiêm trọng (CVE-2026-45793) trong Composer, công cụ quản lý phụ thuộc phổ biến cho PHP. Lỗ hổng này có thể dẫn đến việc lộ thông tin xác thực GitHub Token trong các nhật ký của GitHub Actions, gây rủi ro lớn cho các dự án sử dụng CI/CD.
Nguyên nhân kỹ thuật
Vấn đề nằm ở cách Composer xác thực tính hợp lệ của token. Trong mã nguồn của BaseIO.php, một biểu thức chính quy (regex) được sử dụng để kiểm tra token chỉ cho phép các ký tự chữ cái, số, dấu gạch dưới và dấu chấm (^[.A-Za-z0-9_]+$).
Tuy nhiên, GitHub hiện nay sử dụng định dạng base64url cho các token cài đặt mới (ví dụ: các token bắt đầu bằng ghs_), trong đó chứa dấu gạch ngang (-). Theo RFC 4648 §5, base64url sử dụng - và _ thay thế cho + và / để đảm bảo an toàn cho URL. Do đó, các token hợp lệ của GitHub lại bị quy tắc cũ của Composer coi là không hợp lệ.
Cơ chế lộ thông tin
Khi Composer gặp một token chứa dấu gạch ngang, nó ném ra một ngoại lệ (exception) với thông báo lỗi chi tiết. Nguy hiểm ở chỗ, thông báo lỗi này bao gồm cả token gốc dưới dạng văn bản thuần.
Vì thông báo lỗi được in ra luồng lỗi chuẩn (stderr), nó sẽ bị ghi lại trong logs của môi trường CI như GitHub Actions hoặc các hệ thống giám sát logs khác.
Tại sao cơ chế che giấu bí mật thất bại?
GitHub Actions có tính năng "secret masking" tự động ẩn các thông tin nhạy cảm đã đăng ký. Tuy nhiên, tính năng này hoạt động bằng cách khớp chuỗi con chính xác.
Khi thông báo ngoại lệ được hiển thị bởi Symfony Console, nó thường được bao bọc bởi các mã điều khiển ANSI, xuống dòng hoặc các khung định dạng khác. Điều này làm gián đoạn cấu trúc của token trong văn bản log, khiến bộ lọc của GitHub không nhận diện được nó. Kết quả là token nhạy cảm hiển thị rõ ràng cho bất kỳ ai có quyền truy cập vào nhật ký chạy workflow.
Đánh giá và Khuyến nghị
Lỗ hổng này được đánh giá mức độ nghiêm trọng cao (High) với điểm số CVSS là 7.5. Mặc dù phạm vi ảnh hưởng bị giới hạn bởi thời gian sống (TTL) của token, nhưng việc lộ token trong CI vẫn có thể cho phép kẻ tấn công thực hiện các hành động trái phép trên kho lưu trữ mã nguồn.
Các nhà phát triển đang sử dụng Composer trong quy trình tích hợp liên tục (CI) được khuyến cáo cập nhật ngay lập tức lên phiên bản mới nhất đã vá lỗi để ngăn chặn rủi ro này.
Bài viết liên quan

Phần mềm
Intel và AMD vá tổng cộng 70 lỗ hổng bảo mật trong Patch Tuesday tháng 5
13 tháng 5, 2026

Phần mềm
Lỗ hổng kernel Linux mới "Fragnesia" cho phép leo quyền root nguy hiểm
14 tháng 5, 2026

Phần mềm
Google tung ra Antigravity 2.0: Ứng dụng lập trình thế hệ mới với công cụ CLI và gói đăng ký AI Ultra
19 tháng 5, 2026
