Lỗ hổng RCE nghiêm trọng trong Gogs cho phép người dùng đã xác thực thực thi mã tùy ý

Một lỗ hổng bảo mật nghiêm trọng vừa được tiết lộ trong Gogs, dịch vụ Git tự lưu trữ mã nguồn mở phổ biến, cho phép người dùng đã xác thực thực thi mã tùy ý thông qua tính năng git rebase. Theo Rapid7, lỗ hổng này có điểm CVSS là 9.4 và hiện chưa có mã định danh CVE. Kẻ tấn công có thể khai thác lỗi này để xâm nhập máy chủ và truy cập trái phép các kho lưu trữ riêng tư.
Minh họa lỗ hổng bảo mật Gogs

Một lỗ hổng bảo mật nghiêm trọng vừa được tiết lộ trong Gogs, một dịch vụ Git tự lưu trữ mã nguồn mở phổ biến, cho phép người dùng đã xác thực thực thi mã tùy ý (RCE) trong một số điều kiện nhất định.

Theo Rapid7, lỗi bảo mật này được đánh giá 9.4 trên thang điểm CVSS. Hiện tại, lỗ hổng này vẫn chưa có mã định danh CVE.

"Lỗ hổng cho phép bất kỳ người dùng đã xác thực nào cũng có thể thực thi mã từ xa (RCE) trên máy chủ bằng cách tạo một pull request với tên branch độc hại, từ đó chèn cờ --exec vào lệnh git rebase trong quá trình thực hiện thao tác hợp nhất 'Rebase before merging'," nhà nghiên cứu bảo mật Jonah Burgess cho biết.

Rebasing là một hành động trong Git được sử dụng để lấy một chuỗi các commit từ một branch tính năng và áp dụng lại chúng lên trên một base branch khác để tạo ra một lịch sử dự án tuyến tính. Mặc dù "git rebase" giải quyết cùng một vấn đề như "git merge" — cụ thể là tích hợp các thay đổi từ branch này sang branch khác — nhưng phương pháp trước sẽ viết lại lịch sử dự án bằng cách tạo các commit mới cho mỗi commit trong branch gốc.

Hành động "git rebase" cũng chấp nhận một lệnh shell làm tham số thông qua cờ --exec, lệnh này sẽ được thực thi sau khi mỗi commit được áp dụng lại. Một khía cạnh đáng chú ý của lỗ hổng này là nó không yêu cầu quyền admin hoặc sự tương tác với những người dùng khác. Để thực hiện cuộc tấn công, tất cả những gì kẻ tấn công cần làm là tạo một tài khoản và kho lưu trữ (repository) trên bất kỳ instance nào được cấu hình mặc định.

Burgess nói thêm: "Bất kỳ người dùng đã đăng ký nào tạo repo đều mặc nhiên trở thành chủ sở hữu của nó. Từ đó, việc kích hoạt tính năng hợp nhất rebase chỉ là một nút gạt duy nhất trong phần cài đặt, và toàn bộ chuỗi khai thác có thể được vận hành mà không cần sự tương tác từ bất kỳ người dùng nào khác."

Trong một kịch bản thay thế, một người dùng có quyền ghi (write access) vào một kho lưu trữ đã bật sẵn tính năng rebase có thể khai thác lỗ hổng trực tiếp để thực thi mã. Trên các instance Gogs bị hạn chế quyền tạo kho lưu trữ, kẻ tấn công bắt buộc phải có quyền ghi vào bất kỳ kho lưu trữ nào đã kích hoạt rebase merging.

Tính đến thời điểm hiện tại, lỗ hổng vẫn chưa được vá mặc dù đã được báo cáo cho nhà phát triển vào ngày 17 tháng 3 năm 2026. Việc khai thác thành công lỗi này có thể cho phép kẻ tấn công xâm nhập máy chủ, truy cập mọi kho lưu trữ trên instance, đánh cắp thông tin xác thực, di chuyển sang các hệ thống khác trong mạng và can thiệp vào mã nguồn của bất kỳ kho lưu trữ nào đang được lưu trữ.

Hơn nữa, nó có thể dẫn đến việc rò rỉ dữ liệu giữa các khách hàng (cross-tenant), cho phép kẻ tấn công đọc các kho lưu trữ riêng tư của người dùng khác trên cùng một máy chủ dùng chung. Theo Rapid7, lỗi này ảnh hưởng đến tất cả các nền tảng được hỗ trợ như Windows, Linux và macOS.

Ước tính có khoảng 1.141 instance Gogs đang công khai trên Internet. Tuy nhiên, con số thực tế dự kiến sẽ cao hơn, do hầu hết các triển khai được đặt sau VPN hoặc mạng nội bộ.

Khuyến nghị phòng ngừa

Trong khi chờ đợi bản vá, các khuyến nghị sau đã được đưa ra:

  • Hạn chế đăng ký người dùng (DISABLE_REGISTRATION = true trong file app.ini) để ngăn chặn người dùng không đáng tin cậy tạo tài khoản.
  • Hạn chế tạo kho lưu trữ (MAX_CREATION_LIMIT = 0 trong file app.ini) để ngăn người dùng tự tạo repo riêng.
  • Kiểm tra lại các thiết lập rebase merge.

Rapid7 cũng đã phát triển một module Metasploit giúp tự động hóa toàn bộ chuỗi khai thác trên cả mục tiêu Linux và Windows. Module này hỗ trợ hai chế độ: chế độ mặc định trong đó một kho lưu trữ tạm thời được tạo dưới tài khoản của kẻ tấn công, thực hiện khai thác và sau đó xóa kho lưu trữ. Cách tiếp cận thứ hai nhắm vào một kho lưu trữ mà kẻ tấn công đã có quyền ghi và quyền hợp nhất.

Chuyên gia an ninh mạng cho biết: "Khi kẻ tấn công tạo và xóa kho lưu trữ của chính họ, dấu vết duy nhất còn lại là lỗi HTTP 500 trong nhật ký máy chủ. Tuy nhiên, khi khai thác trên một kho lưu trữ hiện có, các dấu vết khác sẽ còn lưu lại."