Một lỗ hổng CVE nghiêm trọng trong Gitea, định danh là CVE-2026-60004, có thể cho phép kẻ tấn công thực thi các lệnh shell tùy ý trên các máy chủ dễ bị tổn thương. Sự cố này ảnh hưởng đến các phiên bản Gitea từ 1.17 đến 1.27.0 và đã được khắc phục trong phiên bản 1.27.1.
Phân tích kỹ thuật lỗ hổng CVE Gitea (CVE-2026-60004)
Lỗ hổng cư trú trong điểm cuối (endpoint) diffpatch của Gitea, chịu trách nhiệm xử lý các bản vá kho lưu trữ bằng cách sử dụng các lệnh Git. Kẻ tấn công với quyền ghi tiêu chuẩn vào một kho lưu trữ có thể khai thác tính năng này.
Mục đích là đặt một Git hook độc hại vào một kho lưu trữ bare tạm thời được nhân bản (clone).
Cơ chế khai thác điểm cuối diffpatch và Git Hooks
Vì thư mục gốc của kho lưu trữ nhân bản hoạt động như thư mục Git, một tệp được tạo thủ công nằm tại hooks/post-index-change có thể trở thành một Git hook hoạt động.
Cuộc tấn công được khởi tạo bằng cách gửi cùng một bản vá được tạo đặc biệt (specially crafted patch) hai lần. Gitea sử dụng lệnh git apply với các tùy chọn liên quan đến chỉ mục (index-related options) để áp dụng bản vá độc hại.
Trên Git phiên bản 2.32 trở lên, Git có thể triển khai một cơ chế hợp nhất ba chiều dự phòng (three-way merge fallback) khi phát hiện xung đột thêm/thêm (add/add collision). Trong quá trình này, Git kiểm tra đường dẫn được lập chỉ mục, mặc dù thao tác được thực thi bằng tùy chọn --cached.
Trong một kho lưu trữ Git bare, hành vi này gây ra một rủi ro đáng kể. Thư mục gốc của kho lưu trữ cũng đồng thời là thư mục Git.
Do đó, một tệp thực thi độc hại được ghi vào hooks/post-index-change sẽ được coi là một hook đang hoạt động, chứ không phải chỉ là nội dung kho lưu trữ thông thường.
Kết quả là, Git thực thi hook trong khi cập nhật chỉ mục của nó, cho phép các lệnh do kẻ tấn công kiểm soát chạy với tài khoản hệ điều hành đang chạy dịch vụ Gitea.
Mã khai thác và điều kiện tiên quyết
Để khai thác thành công lỗ hổng CVE này, kẻ tấn công cần các điều kiện sau:
- Git phiên bản 2.32 hoặc mới hơn.
- Điểm cuối
diffpatchphải được bật. - Hệ thống tệp tạm thời cho phép ghi và thực thi tệp.
Mã khai thác (Proof of Concept – PoC) được báo cáo có khả năng truy xuất đầu ra lệnh thông qua các đối tượng Git (Git objects) và Smart HTTP được xác thực. Điều này ngụ ý rằng kẻ tấn công có thể không cần kết nối mạng outbound từ máy chủ mục tiêu để lấy kết quả thực thi lệnh.
Thông số CVSS và phân loại CWE
Theo GitHub Security Advisory (GHSA-rcr6-4jqh-j84m), lỗ hổng CVE này có điểm CVSS v3.1 là 9.8 (Critical). Điều này cho thấy nguy cơ remote code execution (RCE) cực kỳ cao.
Các yếu tố chính của điểm CVSS 9.8 bao gồm:
- Attack Vector (AV): Network – Kẻ tấn công có thể khai thác qua mạng.
- Attack Complexity (AC): Low – Mức độ phức tạp của tấn công thấp.
- Privileges Required (PR): Low – Kẻ tấn công chỉ cần quyền truy cập thấp (quyền ghi vào kho lưu trữ).
- User Interaction (UI): None – Không yêu cầu tương tác của người dùng.
- Scope (S): Changed – Phạm vi bị ảnh hưởng có thể vượt ra ngoài thành phần dễ bị tổn thương.
- Confidentiality Impact (C): High – Tác động cao đến tính bảo mật.
- Integrity Impact (I): High – Tác động cao đến tính toàn vẹn.
- Availability Impact (A): High – Tác động cao đến tính khả dụng.
Lỗ hổng được phân loại theo CWE-94, còn được gọi là Improper Control of Code Generation hoặc Code Injection. Mặc dù việc khai thác đòi hỏi quyền ghi vào kho lưu trữ, nhưng quyền truy cập này có thể dễ dàng có được trên các phiên bản Gitea với chức năng đăng ký công khai được bật.
Một khách truy cập chưa được xác thực có thể đăng ký tài khoản bình thường, tạo một kho lưu trữ và sử dụng tuyến diffpatch dễ bị tổn thương để kích hoạt thực thi mã.
Điều này khiến các triển khai Gitea được công khai đặc biệt dễ bị tổn thương trước remote code execution.
Ảnh hưởng hệ thống và các tài nguyên bị lộ
Khai thác thành công có thể dẫn đến việc lộ các tài nguyên nhạy cảm của Gitea. Các tài nguyên này bao gồm:
- Tệp cấu hình
app.ini. - Các bí mật ứng dụng (application secrets).
- Các biến môi trường (environment variables).
- Các kho lưu trữ đã gắn (mounted repositories).
- Thông tin xác thực cơ sở dữ liệu (database credentials).
- OAuth tokens.
- Thông tin xác thực tích hợp (integration credentials).
Tác động cuối cùng của việc khai thác phụ thuộc vào quyền được gán cho tài khoản dịch vụ Gitea và các kiểm soát cô lập xung quanh máy chủ.
Cách thức phòng ngừa và bản vá bảo mật
Các quản trị viên nên nhanh chóng nâng cấp Gitea lên phiên bản 1.27.1 để áp dụng bản vá bảo mật. Đây là biện pháp khắc phục quan trọng nhất để chống lại lỗ hổng CVE này.
Cho đến khi bản vá bảo mật được áp dụng, các tổ chức nên thực hiện các biện pháp giảm thiểu sau:
- Vô hiệu hóa hoặc hạn chế quyền truy cập vào chức năng
diffpatch: Hạn chế các tài khoản hoặc nhóm cụ thể có thể sử dụng điểm cuối này. - Tắt chức năng đăng ký công khai (public registration): Điều này ngăn chặn kẻ tấn công tạo tài khoản mới và truy cập quyền ghi kho lưu trữ.
- Hạn chế quyền ghi kho lưu trữ (repository write permissions): Đảm bảo rằng chỉ những người dùng đáng tin cậy mới có thể tạo và ghi vào kho lưu trữ.
- Xem xét lại đặc quyền của tài khoản dịch vụ: Đảm bảo tài khoản chạy dịch vụ Gitea có quyền tối thiểu cần thiết để hoạt động.
- Giám sát nhật ký Gitea và Git: Theo dõi bất kỳ bản vá nào được gửi bất thường hoặc hoạt động liên quan đến hook không mong muốn. Các hoạt động đáng ngờ có thể chỉ ra nỗ lực khai thác hoặc xâm nhập.
Các bản phát hành Gitea gần đây đã bao gồm nhiều bản vá bảo mật, làm nổi bật tầm quan trọng của việc nâng cấp kịp thời và quản lý rủi ro liên tục.
Để biết thêm chi tiết kỹ thuật về lỗ hổng CVE này, có thể tham khảo GitHub Security Advisory tại GHSA-rcr6-4jqh-j84m.










