Heoanchayyy
Member
-
20/08/2025
-
0
-
10 bài viết
Lỗ hổng nghiêm trọng trên Gitea có thể dẫn tới chiếm quyền máy chủ từ xa
Một chức năng hiển thị văn bản tưởng chừng vô hại lại vừa trở thành điểm khởi đầu của một lỗ hổng nghiêm trọng trên Gitea. Lỗ hổng mang mã hiệu CVE-2026-59774 (tham chiếu advisory GHSA-6v53-hr58-556r) đang khiến cộng đồng an ninh mạng báo động bởi kịch bản tấn công nguy hiểm: kẻ tấn công có thể tiến tới chiếm quyền kiểm soát máy chủ từ xa mà không cần sở hữu bất kỳ tài khoản nào trên hệ thống. Lỗ hổng ảnh hưởng trực tiếp đến các phiên bản Gitea từ 1.22.1 đến 1.27.0 và đã được phát hành bản vá trong phiên bản 1.27.1.
Lỗ hổng bắt nguồn từ endpoint render nội dung
Tâm điểm của đợt công bố này nằm ở endpoint POST /{owner}/{repo}/markup - giao diện chịu trách nhiệm chuyển đổi các định dạng tài liệu sang HTML để hiển thị trên trình duyệt. Về mặt lý thuyết, cơ chế này vẫn yêu cầu kiểm tra quyền truy cập repository. Tuy nhiên, rào cản đó gần như không còn ý nghĩa nếu mục tiêu là một repository công khai (public). Khi đó, người dùng ẩn danh từ Internet vẫn có thể gửi dữ liệu tới endpoint này mà không cần trải qua bất kỳ bước xác thực nào.
Kịch bản khai thác diễn ra theo chuỗi logic sau:
Kịch bản khai thác diễn ra theo chuỗi logic sau:
- Kích hoạt thư viện xử lý: Kẻ tấn công gửi yêu cầu xử lý một tệp định dạng Org-mode (.org). Gitea sẽ chuyển nội dung này sang thư viện go-org để phân tích cú pháp và render.
- Sơ hở trong quá trình khởi tạo: Các phiên bản bị ảnh hưởng gọi org.New() nhưng lại không ghi đè (override) cơ chế đọc tệp mặc định của thư viện.
Hệ quả là kẻ tấn công có thể truy cập bất kỳ tập tin nào mà tài khoản chạy dịch vụ Gitea có quyền đọc, từ /etc/passwd cho đến các cấu hình triển khai nội bộ của ứng dụng. Toàn bộ thao tác này diễn ra trực tiếp thông qua payload trong request: không cần tải tệp độc hại, không cần commit code và không cần quyền ghi trên dự án.
Điều khiến CVE-2026-59774 trở nên đặc biệt nguy hiểm là yêu cầu khai thác rất thấp. Kẻ tấn công không cần tài khoản hợp lệ, không cần quyền ghi repository và cũng không cần tương tác từ phía người dùng. Chỉ cần hệ thống tồn tại một repository công khai, quá trình đọc file đã có thể được thực hiện từ xa thông qua endpoint render mặc định của Gitea.
Điều khiến CVE-2026-59774 trở nên đặc biệt nguy hiểm là yêu cầu khai thác rất thấp. Kẻ tấn công không cần tài khoản hợp lệ, không cần quyền ghi repository và cũng không cần tương tác từ phía người dùng. Chỉ cần hệ thống tồn tại một repository công khai, quá trình đọc file đã có thể được thực hiện từ xa thông qua endpoint render mặc định của Gitea.
Bước nhảy vọt: Từ đọc tệp trái phép đến thực thi mã từ xa (RCE)
Nếu chỉ dừng lại ở việc đọc tệp, lỗ hổng này đã đủ khiến nhiều quản trị viên mất ngủ. Nhưng điều biến CVE-2026-59774 thành một mối đe dọa ở mức Critical chính là khả năng leo thang từ rò rỉ thông tin sang chiếm quyền hệ thống. Mục tiêu giá trị nhất trong chuỗi tấn công là tệp cấu hình app.ini. Đây có thể xem là "két sắt cấu hình" của Gitea khi chứa hàng loạt thông tin nhạy cảm như cấu hình cơ sở dữ liệu, OAuth secrets, JWT signing keys và đặc biệt là INTERNAL_TOKEN.
Khi sở hữu INTERNAL_TOKEN, kẻ tấn công có thể thực hiện bước chuyển mình nguy hiểm:
Khi sở hữu INTERNAL_TOKEN, kẻ tấn công có thể thực hiện bước chuyển mình nguy hiểm:
- Mạo danh giao tiếp nội bộ: Token này cho phép tương tác với các API và chức năng nội bộ vốn không được thiết kế để truy cập trực tiếp từ Internet.
- Can thiệp vào cơ chế xử lý bên trong Gitea: Theo advisory, token này có thể bị lạm dụng để tương tác với các thành phần nội bộ và trong một số điều kiện nhất định mở đường cho việc cài đặt Git Hook độc hại.
- Mở đường cho RCE: Nếu chuỗi tấn công được thực hiện thành công, mã lệnh có thể được thực thi dưới quyền tài khoản đang vận hành dịch vụ Gitea.
Đây là ví dụ điển hình cho kiểu tấn công theo chuỗi (attack chain) đang xuất hiện ngày càng nhiều trong các nền tảng hiện đại. Một lỗi đọc file tưởng như chỉ ảnh hưởng đến tính bí mật dữ liệu lại có thể trở thành bàn đạp để thu thập bí mật nội bộ, leo thang đặc quyền và cuối cùng tiến tới chiếm quyền máy chủ.
Hành động khẩn cấp cho quản trị viên
Các hệ thống vận hành Gitea từ phiên bản 1.22.1 đến 1.27.0 có mở repository public, đặc biệt là các máy chủ tiếp xúc trực tiếp với Internet, cần thực hiện ngay các bước xử lý sau:
- Nâng cấp tức thì: Cập nhật Gitea lên phiên bản 1.27.1 hoặc mới hơn để vá lỗ hổng.
- Xoay vòng thông tin xác thực: Thay thế toàn bộ INTERNAL_TOKEN, khóa JWT, OAuth secrets và các thông tin xác thực được lưu trong app.ini vì chúng có thể đã bị truy cập trước khi bản vá được triển khai.
- Truy vết dấu hiệu khai thác: Rà soát log truy cập web, tập trung vào các request POST gửi tới endpoint /markup, đặc biệt là các yêu cầu liên quan tới tệp .org hoặc chứa chỉ thị #+INCLUDE.
- Kiểm tra dấu hiệu can thiệp hệ thống: Rà soát Git Hook và các thay đổi bất thường trong cấu hình Gitea nhằm phát hiện dấu hiệu cài cắm trái phép.
CVE-2026-59774 cho thấy đôi khi mắt xích yếu nhất trong một nền tảng không nằm ở cơ chế xác thực hay phân quyền phức tạp, mà lại xuất phát từ một tính năng hiển thị tài liệu vốn được xem là tương đối vô hại. Chỉ từ một endpoint render nội dung, kẻ tấn công có thể lần lượt đọc tệp hệ thống, thu thập bí mật nội bộ và trong những điều kiện phù hợp tiến tới chiếm quyền kiểm soát máy chủ.