Gitea: cài đặt Git hook qua diffpatch dẫn đến thực thi mã từ xa

Lưu ý: Dữ liệu này chỉ có tính chất tham khảo, phục vụ nghiên cứu an ninh mạng.CyStack khuyến nghị người dùng không sử dụng các thông tin này nhằm các mục đích bất hợp pháp

Lỗ hổng CVE-2026-60004 là gì?

Lỗ hổng CVE-2026-60004 là lỗ hổng Improper Control of Generation of Code ('Code Injection') ảnh hưởng tới Gitea (phiên bản bị ảnh hưởng: 1.17 – < 1.27.1). Lỗ hổng này được xếp hạng ở mức Nghiêm trọng, với điểm CVSS 9.8. Lỗ hổng này đã được ghi nhận khai thác trong thực tế.

Giới thiệu chung

Dữ liệu gốc

Gitea trước 1.27.1 cho phép thực thi mã từ xa thông qua API diffpatch bằng cách cài đặt Git hook.

Sản phẩm và phạm vi ảnh hưởng

  • Gitea từ 1.17 đến trước 1.27.1 bị ảnh hưởng, tương ứng các bản từ 1.17 đến 1.27.0 theo advisory của vendor.
  • Vendor xác định Gitea 1.27.1 là bản đã vá lỗi này.
  • Affected record đặt default_status là unaffected ngoài phạm vi nêu trên. Trạng thái của các nhánh song song, bản downstream hoặc fork không được record xác nhận và cần được đối chiếu riêng với nhà cung cấp hoặc bên đóng gói.

Chi tiết kỹ thuật

Lỗi nằm trong services/repository/files/patch.go, nơi Gitea áp dụng patch do attacker kiểm soát trong một bare temporary clone bằng Git apply với các tùy chọn --index, --cached, --binary và, trên Git 2.32 trở lên, thêm -3. Một xung đột add/add có thể khiến cơ chế three-way fallback của Git đưa đường dẫn trong patch ra khỏi index, dù thao tác đang dùng --cached. Vì root của bare repository chính là $GIT_DIR, một tệp thực thi tại hooks/post-index-change sẽ được Git nhận diện như một hook hoạt động. Git gọi hook khi ghi index, cho phép nội dung do repository kiểm soát thực thi shell command với quyền của OS user chạy Gitea. Điều kiện được advisory nêu gồm Git 2.32 trở lên, route diffpatch được bật và temporary filesystem có thể ghi và thực thi. Tác động vượt quá quyền của tài khoản dịch vụ phụ thuộc vào cách cô lập host và các quyền mà tài khoản Gitea được cấp.

Khả năng khai thác

Lỗ hổng có thể bị khai thác qua mạng thông qua API diffpatch và không yêu cầu user interaction; normalized record đánh giá attack complexity là thấp. Đường khai thác trực tiếp cần tài khoản có quyền ghi vào repository. Trên các cài đặt bật open registration và cho phép tạo repository, khách truy cập chưa xác thực có thể tự tạo tài khoản và lấy được quyền cần thiết. Việc khai thác còn phụ thuộc vào route diffpatch được bật, Git 2.32 trở lên và temporary filesystem có quyền ghi và thực thi. Record được cung cấp đánh dấu lỗ hổng là đã bị khai thác và có public exploit; runZero cũng báo cáo hoạt động khai thác trong thực tế.

Tác động kỹ thuật

  • Kết quả kỹ thuật là thực thi mã từ xa với quyền của OS user chạy Gitea, thuộc lớp lỗi CWE-94 về kiểm soát không phù hợp việc sinh mã.
  • Attacker có thể đọc, sửa hoặc tạo dữ liệu trong phạm vi quyền của tài khoản dịch vụ, bao gồm repository, cấu hình, secrets và dịch vụ nội bộ mà host có thể truy cập.
  • Quyền đặc biệt hơn, khả năng thoát khỏi container hoặc ảnh hưởng tới hệ thống khác không được record xác nhận; các hậu quả này phụ thuộc vào quyền tài khoản, cấu hình host và mức độ cô lập.
  • Vì vậy, lỗ hổng có thể ảnh hưởng đồng thời đến confidentiality, integrity và availability, nhưng không nên diễn giải là toàn quyền trên host trong mọi triển khai.

Tác động đến tổ chức

  • Attacker có thể thực thi lệnh tùy ý với quyền của tài khoản dịch vụ Gitea, từ đó có khả năng truy cập app.ini, process environment secrets, repository được mount, database credentials và nội dung cơ sở dữ liệu, cùng OAuth hoặc integration credentials nếu các tài nguyên này nằm trong phạm vi quyền.
  • Nội dung repository hoặc build output có thể bị sửa đổi, tạo rủi ro cho tính toàn vẹn của source code, pipeline và artifact downstream.
  • Dịch vụ hoặc tài nguyên trên host mà tài khoản Gitea có thể truy cập có thể bị thay đổi hoặc gián đoạn.
  • Đây là quyền thực thi trong phạm vi OS user chạy Gitea, không tự động chứng minh attacker có quyền root hoặc kiểm soát mọi hệ thống liên kết.

Cách khắc phục

  1. Nâng cấp Gitea lên chính xác bản 1.27.1, là bản vendor xác định đã sửa lỗi. Sau khi nâng cấp, xác minh binary và package thực tế đang chạy đúng bản đã triển khai.
  2. Với hệ thống chưa thể nâng cấp ngay, tạm thời giảm khả năng khai thác bằng cách tắt open registration nếu không cần thiết, hạn chế tạo repository và chỉ cấp quyền ghi repository cho các tài khoản tin cậy. Đây là biện pháp giảm rủi ro, không thay thế bản vá.
  3. Xác minh route diffpatch, Git runtime và quyền của temporary filesystem trên các instance còn lại để xác định phạm vi phơi nhiễm.
  4. Nếu phát hiện dấu hiệu khai thác, cô lập instance theo quy trình ứng phó sự cố, đánh giá quyền của tài khoản dịch vụ và kiểm tra các secrets, credentials, repository hoặc database mà tài khoản đó có thể truy cập.
  5. Khi có bằng chứng secrets hoặc credentials đã bị truy cập, thực hiện rotation theo phạm vi ảnh hưởng và rà soát các thay đổi trái phép trong repository, pipeline và artifact.

Cách phát hiện

  1. Kiểm kê mọi triển khai Gitea self-hosted và xác minh version chính xác; đánh dấu các bản từ 1.17 đến trước 1.27.1 để xử lý.
  2. Xác định instance nào bật route diffpatch, đang dùng Git 2.32 trở lên và cho phép temporary filesystem ghi và thực thi.
  3. Rà soát HTTP access log để tìm các yêu cầu bất thường tới POST /api/v1/repos/{owner}/{repo}/diffpatch. Đây là biện pháp điều tra và giám sát phòng ngừa, không phải IOC đã được vendor xác nhận.
  4. Kiểm tra repository storage và vùng temporary của Gitea để tìm Git hook thực thi bất thường, đặc biệt là hooks/post-index-change.
  5. Rà soát process telemetry quanh tài khoản dịch vụ Gitea để tìm shell hoặc tiến trình con bất thường được tạo trong thời gian có các yêu cầu diffpatch.
  6. Nếu có dấu hiệu khai thác, kiểm tra khả năng lộ app.ini, process environment secrets, repository được mount, database credentials, OAuth hoặc integration credentials; việc không thấy log hay hook bất thường không chứng minh hệ thống an toàn.
Nguồn (16)
Tìm hiểu thêm

Kiểm tra chuyên sâu cùng giải pháp quản lý rủi ro Web toàn diện

Giải pháp CyStack VulnScan liên tục phát hiện tài sản, xác minh lỗ hổng và giúp đội ngũ bảo mật ưu tiên khắc phục cho toàn bộ doanh nghiệp.

Khám phá CyStack VulnScan

Khám phá các giải pháp khác liên quan