Carrot Disclosure: Tiết lộ lỗ hổng bảo mật nghiêm trọng trên nền tảng Forgejo
Sau khi Fedora chuyển sang sử dụng Forgejo, một cuộc kiểm tra bảo mật đã phát hiện hàng loạt lỗ hổng nghiêm trọng bao gồm SSRF, lỗi thực thi mã từ xa (RCE) và các vấn đề về xác thực. Thay vì báo cáo riêng lẻ, tác giả đã áp dụng phương pháp "Carrot Disclosure", công bố kết quả khai thác để gây áp lực buộc nhà phát triển phải rà soát toàn diện hệ thống.
Gần đây, quyết định của Fedora về việc chuyển từ Pagure sang Forgejo đã tạo động lực để cộng đồng quan tâm kỹ hơn đến tình trạng bảo mật của nền tảng lưu trữ mã nguồn tự lưu trữ (self-hosted) này. Tuy nhiên, kết quả từ một cuộc kiểm tra gần đây cho thấy bức tranh bảo mật của Forgejo không mấy sáng sủa. Một nhà nghiên cứu bảo mật đã công bố phát hiện của mình thông qua phương pháp "Carrot Disclosure", một cách tiếp cận gây tranh cãi nhằm thúc đẩy nhà phát hành hành động.
Tổng quan về các lỗ hổng
Trong quá trình phân tích, nhà nghiên cứu đã phát hiện một loạt các vấn đề bảo mật nghiêm trọng nằm rải rác trong mã nguồn của Forgejo. Các lỗi này bao gồm:
- SSRF (Server-Side Request Forgery): Xuất hiện ở nhiều vị trí khác nhau.
- Thiếu các cơ chế bảo vệ trình duyệt: Không có CSP (Content Security Policy) hay Trusted-Types.
- Vấn đề về mã hóa: Các thực hành mã hóa kém an toàn (cryptographic malpractices).
- Lỗi xác thực: Các sơ hở trong cơ chế OAuth2, OTP, quản lý phiên/session và xử lý quyền truy cập sau khi bị xâm phạm.
- Các lỗi khác: Nhiều lỗ hổng từ chối dịch vụ (DoS) dễ khai thác, rò rỉ thông tin và các lỗi TOCTOU (Time-of-check to time-of-use).
Chỉ trong một buổi tối sau giờ làm, nhà nghiên cứu đã tìm thấy một lượng lớn lỗ hổng (cộng thêm những lỗi đã biết từ trước khi phân tích Gitea). Bằng cách xâu chuỗi các lỗ hổng này lại với nhau, kẻ tấn công có thể đạt được RCE (Remote Code Execution - Thực thi mã từ xa) hoàn toàn, rò rỉ các bí mật (secrets), duy trì quyền truy cập tài khoản kéo dài và leo thang đặc quyền qua OAuth2.
Phương pháp Carrot Disclosure
Điều đáng chú ý là lỗ hổng RCE này phụ thuộc vào tính năng đăng ký mở và một tùy chọn cấu hình không phải là mặc định (nhưng vẫn được một số phiên bản sử dụng). Mặc dù giá trị khai thác thương mại của nó không quá cao, nhưng nó cho thấy lỗ hổng thực sự tồn tại.
Thay vì gửi báo cáo riêng tư theo quy trình thông thường (vốn có thể bị bỏ qua do tình trạng mã nguồn hiện tại), tác giả đã chọn phương pháp Carrot Disclosure. Đây là một chiến thuật "treo củ cà rốt" trước mặt nhà cung cấp để thúc đẩy thay đổi.
Ý tưởng chính là chỉ công bố kết quả đầu ra (đã được che bớt một phần) của việc khai thác lỗ hổng quan trọng, chứng minh rằng phần mềm hoàn toàn có thể bị tấn công. Điều này đặt nhà phát triển vào thế phải lựa chọn một trong hai con đường:
- Thực hiện một cuộc kiểm toán toàn diện và sửa lỗi phần mềm một cách triệt để để khắc phục lỗ hổng đã được chứng minh.
- Mất người dùng, vì không ai muốn vận hành một phần mềm biết rõ là chứa lỗ hổng bảo mật.
Bằng chứng khai thác (PoC)
Dưới đây là kết quả từ đoạn script khai thác (PoC) mà tác giả đã công bố để chứng minh tính nghiêm trọng của vấn đề:
$ python3 ./poc/chain_alpha.py --target http://127.0.0.1:3000 > out.txt
$ grep Backdoor out.txt
[+] Backdoor admin created: svc_ljeopgid / dukecepapsygiqks!A1
$ tail -n17 out.txt
================================================================
[+] COMMAND EXECUTION CONFIRMED!
================================================================
Server-side hook output (received via git push stderr):
remote: ==========================================
remote: FORGEJO RCE PoC - Command Execution Proof
remote: ==========================================
remote: hostname: chernabog
remote: uid: uid=1000(jvoisin) gid=1000(jvoisin) groups=1000(jvoisin),10(wheel) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
remote: date: Tue Apr 28 19:16:59 UTC 2026
remote: proof: chernabog
remote: ==========================================
================================================================
Kết quả trên cho thấy kẻ tấn công đã tạo thành công một tài khoản quản trị viên backdoor và thực thi lệnh trên máy chủ. Vụ việc này là một lời cảnh tỉnh mạnh mẽ cho các đội ngũ phát triển và vận hành hệ thống về tầm quan trọng của việc kiểm tra bảo mật kỹ lưỡng trước khi triển khai các nền tảng phần mềm mã nguồn mở lên môi trường sản xuất.
Bài viết liên quan

Phần mềm
Lỗi nhắc nhở về malware trong Claude Code gây lãng phí tiền và làm hỏng tác nhân con
28 tháng 4, 2026

Phần mềm
Tương lai của phát triển phần mềm: Khi việc viết code trở nên ít quan trọng hơn
28 tháng 4, 2026

Phần mềm
Slack giải quyết vấn đề ngữ cảnh trong các hệ thống đa tác nhân chạy dài hạn
28 tháng 4, 2026
