Lỗ hổng thực thi mã từ xa trên Gitea cho phép chiếm quyền máy chủ qua Git Hook độc hại

Search for a command to run...

No comments yet. Be the first to comment.
Tổng Quan Hãy tưởng tượng: một nhân viên nhân sự tại một công ty hàng không ở Pakistan nhận được lời mời phỏng vấn hấp dẫn từ một thương hiệu tuyển dụng có vẻ rất quen thuộc. Một cuộc gọi video được l

Tóm tắt Ngày 19/03/2026, cơ quan chức năng Mỹ, Canada và Đức triệt phá hạ tầng của bốn botnet IoT lớn nhất từng được ghi nhận — Aisuru, Kimwolf, JackSkid và Mossad. Hơn ba triệu thiết bị bị nhiễm. Hơn

Tóm tắt Không có malware nào trong chiến dịch này. Payload cuối cùng mà nạn nhân nhận được là trình cài đặt chính thức của Level RMM, tải trực tiếp từ hạ tầng của chính Level, cài đặt bằng msiexec với

Phần lớn dữ liệu thu được từ một honeypot SSH internet-facing là nhiễu: dò mật khẩu liên tục, hoặc bot đăng nhập thành công rồi tải payload xuống chạy ngay lập tức. Nhưng ngày 27/6/2026, honeypot của

Từ tháng 1/2025, một nhóm tấn công chưa xác định danh tính đã duy trì hoạt động gián điệp mạng nhắm vào các cơ quan chính phủ tại Afghanistan, Kyrgyzstan, Tajikistan, Uzbekistan, Kazakhstan và Syria,

Vừa qua, nền tảng self-hosted Git phổ biến Gitea đã phát hành bản vá khẩn cấp cho lỗ hổng thực thi mã từ xa (RCE) nghiêm trọng CVE-2026-60004 sau khi nhà nghiên cứu bảo mật Rod công bố phân tích kỹ thuật chi tiết kèm theo mã khai thác proof-of-concept (PoC) hoạt động đầy đủ. Lỗ hổng cho phép bất kỳ người dùng có quyền write thông thường trên một repository biến nội dung patch do kẻ tấn công kiểm soát thành một Git hook thực thi, qua đó chạy lệnh tùy ý trên máy chủ với quyền hạn của Gitea service account. Điểm đặc biệt nguy hiểm là Gitea bật open registration theo mặc định, nghĩa là kẻ tấn công hoàn toàn không cần tài khoản có sẵn mà có thể tự đăng ký và lập tức khai thác lỗ hổng trên các instance không được cấu hình lại. Bên cạnh đó, cùng trong bản vá 1.27.1, Gitea cũng âm thầm vá một lỗ hổng đọc file tùy ý thứ hai với mã CVE-2026-59774 cho phép kẻ tấn công ẩn danh đọc file cấu hình nhạy cảm của máy chủ mà không cần bất kỳ xác thực nào.
Định danh lỗ hổng: CVE-2026-60004
Điểm CVSS(3.1): 9.8
Mức độ nghiêm trọng: CRITICAL – Cực kỳ nghiêm trọng
Mô tả: CVE-2026-60004 là lỗ hổng code injection (CWE-94) trong API endpoint diffpatch của Gitea — thành phần xử lý việc áp dụng repository patch bằng lệnh Git. Lỗ hổng phát sinh từ cách Gitea xử lý temporary bare repository clone khi apply patch: thư mục gốc của clone được sử dụng trực tiếp làm Git directory, do đó một file đặt tại đường dẫn hooks/post-index-change sẽ được Git nhận dạng và thực thi như một live Git hook. Kẻ tấn công có quyền write trên repository craft một patch độc hại chứa file hook với nội dung shell command, sau đó gửi patch này hai lần. Lần gửi thứ hai kích hoạt cơ chế three-way merge fallback của Git (từ phiên bản 2.32 trở lên) khi phát hiện add/add collision, Git thực thi hook trong quá trình cập nhật index, qua đó chạy lệnh của kẻ tấn công với toàn quyền của Gitea service account.
Phiên bản bị ảnh hưởng: Gitea 1.17 đến trước 1.27.1
Lỗ hổng liên quan: CVE-2026-59774 — Gitea Arbitrary File Read (Unauthenticated)
Cùng được vá trong Gitea 1.27.1 nhưng chưa có advisory riêng, CVE-2026-59774 là lỗ hổng đọc file tùy ý không cần xác thực trên endpoint markup rendering (POST /{owner}/{repo}/markup). Gitea xử lý file Org-mode markup thông qua thư viện go-org sử dụng ioutil.ReadFile mà không có path restriction, cho phép kẻ tấn công ẩn danh đọc bất kỳ file nào có thể đọc được bởi Gitea service account, bao gồm file cấu hình app.ini, INTERNAL_TOKEN, OAuth/JWT signing key, database credential và các secret nội bộ. Việc khai thác CVE-2026-59774 để lấy INTERNAL_TOKEN từ app.ini có thể mở ra chuỗi tấn công leo thang, sử dụng token nội bộ để inject malicious Git hook qua internal logger mechanism, dẫn đến RCE đầy đủ không cần bất kỳ xác thực nào.
Gitea là nền tảng quản lý mã nguồn (source code management) self-hosted mã nguồn mở, được xây dựng bằng Go, hoạt động như một lựa chọn thay thế nhẹ và dễ triển khai cho GitHub hay GitLab. Gitea được sử dụng rộng rãi bởi các tổ chức, doanh nghiệp và cá nhân muốn tự kiểm soát hạ tầng lưu trữ mã nguồn mà không phụ thuộc vào dịch vụ đám mây bên thứ ba. Các tính năng cốt lõi bao gồm quản lý repository Git, code review, issue tracker, CI/CD integration, wiki, và quản lý package, biến Gitea thành trung tâm của toàn bộ vòng đời phát triển phần mềm (SDLC) trong nhiều tổ chức.
CVE-2026-60004 đặc biệt nguy hiểm do xuất phát từ vị trí trung tâm của Gitea trong pipeline phát triển phần mềm. Không giống các ứng dụng web thông thường, một Gitea server thường lưu trữ toàn bộ source code nội bộ của tổ chức, bao gồm cả mã nguồn sản phẩm, cấu hình hệ thống, infrastructure-as-code, CI/CD pipeline script, và thường cả các secret được nhúng trực tiếp trong repository. Khi Gitea service account bị chiếm quyền, kẻ tấn công không chỉ kiểm soát được máy chủ Gitea mà còn có khả năng đọc toàn bộ codebase, inject mã độc vào source code, hoặc can thiệp vào pipeline CI/CD để lan truyền payload xuống môi trường staging và production, một kịch bản supply chain attack điển hình với tác động lan rộng vượt xa bản thân máy chủ Gitea.
Lỗ hổng bắt nguồn từ một lỗ hổng thiết kế trong cơ chế xử lý patch tạm thời: Gitea không phân tách ranh giới giữa Git working directory và thư mục hook khi tạo temporary bare clone để apply patch. Đây là lỗi logic cơ bản, Git hooks là cơ chế thực thi lệnh hợp lệ của Git, và việc cho phép nội dung do người dùng kiểm soát được ghi vào thư mục hook của một Git repository đang được thực thi trực tiếp vi phạm nguyên tắc tách biệt dữ liệu và mã thực thi. Mức độ ảnh hưởng không chỉ dừng lại ở bản thân Gitea server mà còn đe dọa trực tiếp đến toàn bộ hệ sinh thái phần mềm mà tổ chức đang vận hành, bởi mã nguồn bị compromise ngày hôm nay có thể biến thành backdoor trong sản phẩm được phát hành đến hàng triệu người dùng cuối ngày mai.
Thêm vào đó, cấu hình open registration mặc định của Gitea khiến hàng nghìn instance đang lộ ra Internet trở thành mục tiêu tấn công không cần xác thực, một yếu tố nhân lên đáng kể quy mô bề mặt tấn công thực tế so với điểm CVSS 9.8 đã phản ánh.
Quá trình khai thác có thể được chia thành các giai đoạn sau:
Thu thập thông tin (Reconnaissance)
Mục tiêu: Xác định các Gitea instance internet-facing chạy phiên bản 1.17 đến 1.27.0.
Hành động: Kẻ tấn công quét Internet tìm Gitea instance qua Shodan, Censys, hoặc banner grabbing. Xác định version qua /api/v1/version hoặc footer trang web. Kiểm tra open registration có được bật không bằng cách truy cập /user/sign_up. Trên các instance với open registration mặc định, kẻ tấn công có thể bắt đầu tấn công ngay mà không cần thêm thông tin.
Tạo Tài khoản và Repository (Initial Access)
Trên instance có open registration: kẻ tấn công tự đăng ký tài khoản mới và tạo repository bất kỳ, tự cấp quyền write cho chính mình.
Trên instance không có open registration: kẻ tấn công cần credential hợp lệ của người dùng với repository write access (qua phishing, infostealer, hoặc credential stuffing).
Craft Patch Độc hại (Malicious Patch Construction)
Kẻ tấn công tạo một Git patch được thiết kế đặc biệt chứa file hooks/post-index-change với nội dung shell command độc hại (reverse shell, đọc secret, tạo tài khoản backdoor, v.v.).
File hook được đóng gói vào patch format mà Gitea diffpatch endpoint chấp nhận.
Gửi Patch Hai lần (Double Patch Submission — Exploitation)
Kẻ tấn công gửi patch độc hại tới API endpoint diffpatch lần đầu tiên: Gitea tạo temporary bare repository clone, áp dụng patch, file hooks/post-index-change được ghi vào thư mục hook của clone.
Kẻ tấn công gửi lần thứ hai cùng patch đó: Git phát hiện add/add collision, kích hoạt three-way merge fallback, và trong quá trình cập nhật index thực thi hook post-index-change vừa được tạo.
Thực thi Lệnh (Shell Command Execution)
Shell command trong hook được thực thi với quyền của Gitea service account.
Gitea service account thường có quyền đọc toàn bộ repository data, app.ini, database credential, OAuth token và các secret nội bộ.
Hậu khai thác (Post-Exploitation)
Đánh cắp app.ini chứa INTERNAL_TOKEN, database password, OAuth secrets, SMTP credentials.
Cài đặt reverse shell hoặc webshell để duy trì truy cập lâu dài.
Đọc toàn bộ repository private của tổ chức — source code, cấu hình, CI/CD secrets, SSH deploy key.
Inject mã độc vào source code để lan truyền xuống build system và production deployment (supply chain attack).
Lateral movement vào infrastructure nội bộ nếu Gitea có quyền truy cập mạng nội bộ.
Gitea đã phát hành bản vá 1.27.1 ngày 27/07/2026 và các Gitea Cloud instance được tự động nâng cấp. Đội ngũ FPT Threat Intelligence khuyến nghị người dùng và quản trị viên cần cân nhắc thực hiện ngay các hành động sau:
Cập nhật bản vá khẩn cấp: Nâng cấp ngay lên Gitea 1.27.1 trở lên.
Biện pháp tạm thời (nếu chưa vá kịp): Tắt ngay tính năng open registration để loại bỏ vector tấn công không cần xác thực: trong app.ini đặt DISABLE_REGISTRATION = true trong section [service], hoặc tắt qua giao diện quản trị Site Administration. Đồng thời giới hạn truy cập Gitea instance chỉ từ mạng nội bộ hoặc VPN, tuyệt đối không để lộ ra Internet công khai nếu chưa vá.
Rà soát và Rotate Credential bị lộ: Nếu instance đã bị lộ hoặc để phòng ngừa chuỗi tấn công qua CVE-2026-59774, cần rotate ngay toàn bộ: INTERNAL_TOKEN và SECRET_KEY trong app.ini, database password, OAuth client secret, SMTP password, SSH deploy key, CI/CD integration token, và Gitea API token của tất cả người dùng.
Kiểm tra Git Hook bất thường: Rà soát toàn bộ Git hook trên server (pre-receive, update, post-receive, post-index-change) trong tất cả repository. Xác minh không có hook nào chứa lệnh bất thường hoặc không được quản trị viên phê duyệt.
Rà soát hoạt động đáng ngờ: Kiểm tra access log của Gitea API để phát hiện các lần gọi diffpatch endpoint lặp lại hai lần liên tiếp với cùng patch từ cùng user, vốn là dấu hiệu khai thác đặc trưng. Rà soát tài khoản được tạo gần đây, đặc biệt là tài khoản không quen thuộc trên instance có open registration.
Giám sát bảo mật: Theo dõi shell command execution bất thường từ Gitea process, kết nối mạng outbound từ Gitea service account, và file mới được tạo trong thư mục Git repository hoặc Gitea data directory.
Tăng cường cấu hình (Defense-in-Depth): Chạy Gitea service account với quyền tối thiểu, không nên chạy với quyền root. Cấu hình AppArmor hoặc SELinux profile cho Gitea process. Sử dụng container isolation (Docker/Podman) để sandbox Gitea, giới hạn lateral movement nếu bị compromise.