Trang chủ Bài viết Bảo mật Git vá lỗ hổng cho phép kho mã độc chạy mã khi clone đệ quy
Bảo mật 11/11/2026 4 lượt xem

Git vá lỗ hổng cho phép kho mã độc chạy mã khi clone đệ quy

Git vá lỗ hổng cho phép kho mã độc chạy mã khi clone đệ quy

Git vừa phát hành Git 2.56.1 cùng các bản vá tương ứng cho dòng 2.50 đến 2.55 (2.50.2, 2.51.3, 2.52.1, 2.53.1, 2.54.1, 2.55.1) để xử lý một lỗ hổng nghiêm trọng. Lỗi này cho phép một kho mã độc chạy mã của kẻ tấn công trên máy thực hiện clone đệ quy, tức clone kèm các submodule.

Cơ chế của lỗ hổng CVE-2026-111760

Lỗ hổng được theo dõi với mã CVE-2026-111760, bản chất là lỗi cắt cụt số nguyên trong cách Git xử lý index. Một đường dẫn cực dài trong kho mã có thể vượt qua bước kiểm tra an toàn của Git, nhưng sau đó Git ghi nó xuống đĩa dưới một tên ngắn hơn mà kẻ tấn công có thể đặt thành .git.

Điều này cho phép kẻ tấn công thay file .git của một submodule bằng một liên kết tượng trưng trỏ tới thư mục chứa hook hoặc cấu hình độc hại. Hook là các chương trình Git chạy tại những thời điểm nhất định, nên khi Git dùng thư mục đó, mã của kẻ tấn công có thể được thực thi. Submodule là mấu chốt ở đây vì Git từ chối thay thư mục .git bằng liên kết tượng trưng, nhưng trong một submodule vừa được clone, .git lại là một file.

Các phiên bản đã vá từ chối những đường dẫn cực dài như vậy trước khi độ dài của chúng bị cắt ngắn.

Khuyến nghị từ GitHub

GitHub, đơn vị phân phối Git trong các công cụ của mình, khuyến nghị cài bản đã vá từ hệ điều hành hoặc nhà phân phối Git, đồng thời cập nhật mọi ứng dụng đóng gói sẵn bản Git riêng. Công ty đã áp dụng bản vá cho github.com và GitHub Enterprise Cloud; với GitHub Enterprise Server, bản vá nằm trong các phiên bản 3.19.15, 3.20.11, 3.21.9 và 3.22.4. Các bản đã vá của GitHub Desktop và ứng dụng GitHub Copilot đang được chuẩn bị, còn GitHub Codespaces và GitHub Actions cũng sẽ nhận Git đã vá. Git for Windows chưa phát hành bản dựa trên Git 2.56.1 tính đến 19:09 UTC thứ Ba.

Trong lúc chờ cài bản vá, GitHub đưa ra một số biện pháp tạm thời (không thay thế bản vá):

  • Chỉ clone từ máy chủ bạn tin cậy.
  • Không clone đệ quy các kho mã bạn không tin cậy.
  • Không merge nội dung hoặc tag từ nguồn không tin cậy.
  • Không xử lý binary patch hoặc luồng fast-import từ nguồn không tin cậy.

Năm lỗ hổng khác cũng được vá

Bản phát hành còn xử lý 5 lỗi khác:

  • CVE-2026-113408: khi clone một kho rỗng qua Git protocol v2, máy chủ độc hại có thể gửi tên nhánh chứa path traversal; với files reference backend, lần cập nhật nhánh sau đó có thể ghi ra ngoài thư mục reference của Git.
  • CVE-2026-114467: merge một tag mang hơn hai chữ ký GPG làm hỏng bộ nhớ stack của Git và có thể gây từ chối dịch vụ; các dịch vụ lưu trữ chạy merge như vậy cho người dùng cũng có thể bị ảnh hưởng.
  • CVE-2026-114469: một binary patch phình to quá mức có thể vượt giới hạn kích thước patch khoảng 1 GiB của Git và làm Git sập do đọc ngoài biên.
  • CVE-2026-105437: một lần merge rất lớn với nhiều xung đột và thuộc tính conflict-marker-size lớn có thể khiến Git ghi vượt cuối bộ đệm quá nhỏ, làm hỏng bộ nhớ heap.
  • CVE-2026-114466: ba tính năng của git fast-import gồm rewrite-submodules-from, rewrite-submodules-to và export-pack-edges có thể bị lợi dụng để đọc file tùy ý hoặc tạo file và thêm dữ liệu vào đó; Git giờ từ chối chúng trong luồng đầu vào trừ khi bật --allow-unsafe-features.

GitLab, đơn vị gán mã CVE-2026-105437, cho biết máy chủ lưu trữ mã là mục tiêu khả dĩ nhất thông qua git merge-tree, lệnh mà máy chủ có thể chạy để kiểm tra xem pull hoặc merge request có merge được không. Thuộc tính conflict-marker-size có thể được đặt trong file .gitattributes commit vào kho mã, nên bất kỳ người dùng nào có quyền push nhánh và mở pull/merge request đều có thể kích hoạt lỗi. Như một biện pháp tạm thời, máy chủ chưa thể nâng cấp có thể thêm conflict-marker-size=7 vào file info/attributes của từng kho mã, hoặc tắt các bước kiểm tra merge đó với kho mã không tin cậy.

Nguồn: The Hacker News

Trích nguồn từ: The Hacker News

Chia sẻ:

Bài viết liên quan

Zalo