Git 2.56.1 vá lỗi khi tải kho mã có dự án con

Bản cập nhật xử lý sáu lỗ hổng. Lỗi đáng chú ý nhất với nhóm phát triển là nguy cơ chạy mã ngoài ý muốn khi tải kho mã và các dự án con đi kèm.

Git 2.56.1 vá lỗi khi tải kho mã có dự án con

Một nhóm phát triển có thể chạy một lệnh để tải kho mã của đối tác, rồi để Git tự tải những dự án nhỏ mà kho chính phụ thuộc. Tác vụ này thường diễn ra trước khi ai đó mở tệp để đọc. Bản Git 2.56.1, công bố ngày 10/11/2026, sửa một lỗi có thể biến bước tải đó thành lúc mã do bên ngoài kiểm soát được thực thi. Bản cập nhật xử lý sáu lỗ hổng, nhưng riêng lỗi liên quan dự án con đã đủ lý do để kiểm tra cả máy cá nhân và hệ thống tự động xây dựng phần mềm.

Vì sao tải kho mã có thể dẫn tới chạy mã?

Git lưu lịch sử thay đổi và dựng một bản tệp để người dùng làm việc. Một dự án có thể dùng submodule, tức tham chiếu tới một phiên bản xác định của kho mã khác. Chẳng hạn, kho ứng dụng chính trỏ tới đúng bản thư viện mà đội từng kiểm thử. Khi yêu cầu tải đệ quy, Git xử lý cả kho chính và những kho con được tham chiếu. Cách này thuận tiện khi khởi tạo môi trường mới, nhưng mở rộng số dữ liệu và đường dẫn Git phải tiếp nhận.

Git có những tệp và thư mục riêng để biết lịch sử, cấu hình và trạng thái của từng kho. Một số cấu hình có thể liên quan tới hook, tức chương trình chạy khi có sự kiện được định trước. Các vùng này khác với mã ứng dụng được đưa ra để chỉnh sửa. Công cụ phải giữ hai vùng tách biệt: dữ liệu tải về để làm việc không được tự trở thành cấu hình điều khiển công cụ. Kiểm tra đường dẫn trước khi ghi là một cách giữ ranh giới ấy.

Thông báo kỹ thuật của GitHub mô tả lỗi CVE-2026-111760 ở khâu xử lý mục có đường dẫn rất dài. Tên mà Git dùng khi kiểm tra có thể khác tên được dùng khi ghi do độ dài bị cắt trong quá trình xử lý số. Chênh lệch đó có thể làm sai vị trí mà Git dùng để tìm dữ liệu quản lý của dự án con. Nếu tải một kho độc hại theo cách đệ quy bằng bản bị ảnh hưởng, Git có thể chạy mã do bên ngoài đưa vào. Bản vá từ chối đường dẫn quá dài trước bước có thể làm mất thông tin về độ dài.

Rủi ro không chỉ nằm trên laptop của lập trình viên

Nhiều dự án tải mã trên một máy trung gian mỗi khi có thay đổi. Máy đó có thể là máy chạy CI, tức hệ thống tự động biên dịch, thử hoặc đóng gói phần mềm. Người vận hành không trực tiếp gõ lệnh tải, nhưng công cụ vẫn gọi một bản Git nào đó. Một bản cập nhật trên máy cá nhân vì thế không thay thế được bản Git đã đóng gói sẵn trong ảnh container hoặc đi kèm một ứng dụng khác.

Vị trí thực thi quyết định hậu quả. Một máy thử ngắn hạn không giữ khóa truy cập và chỉ nhìn thấy một kho có phạm vi khác với máy dùng chung có quyền đọc nhiều dự án hoặc ghi lên kho lưu gói. Nếu một công việc phải xử lý mã từ nguồn chưa tin cậy, tách nó khỏi bước có quyền phát hành sẽ giảm phạm vi tác động. Đây là lớp phòng vệ bổ sung; nó không phải cách sửa lỗi trong Git.

Sáu lỗ hổng không có cùng điều kiện kích hoạt

Bên cạnh lỗi khi tải đệ quy, nhóm phát hành còn sửa các vấn đề ở xử lý tham chiếu, hợp nhất, bản vá nhị phân và nhập dữ liệu. Ví dụ, khi đọc một bản vá nhị phân đã nén, kích thước tệp đưa vào và kích thước sau giải nén là hai đại lượng khác nhau. Kiểm tra duy nhất đại lượng đầu không loại được đầu vào nở quá lớn khi xử lý. Những lỗi ở đường hợp nhất cũng đáng xem với hệ thống tự động xử lý yêu cầu hợp nhất, dù đội không có thói quen tải kho con.

Thông báo nêu bản sửa trên Git 2.56.1 và các nhánh bảo trì 2.55.1, 2.54.1, 2.53.1, 2.52.1, 2.51.3 và 2.50.2. Không phải mọi đội đều phải chuyển sang cùng một nhánh. Nhà phân phối hệ điều hành có thể chuyển bản vá về gói đang hỗ trợ, vì vậy cần xem ghi chú của đúng nhà cung cấp gói thay vì so chuỗi phiên bản theo một quy tắc duy nhất. Tương tự, dịch vụ lưu trữ kho mã và công cụ Git chạy cục bộ có lịch cập nhật riêng.

Kiểm tra bản Git ở đúng nơi mã được tải

Điểm bắt đầu thực tế là liệt kê những nơi dự án gọi Git: máy làm việc, máy chạy tác vụ tự động, ảnh dùng để đóng gói, công cụ đồ họa và môi trường dựng bản phát hành. Tại mỗi nơi, kiểm tra chương trình thực sự được gọi và nguồn cài đặt. Hai bản Git có thể cùng tồn tại; bản trả lời khi mở cửa sổ dòng lệnh không nhất thiết là bản IDE hoặc trình xây dựng sử dụng.

Sau khi cập nhật, nên chạy thử lại quy trình tải và dựng trên một dự án bình thường để xác nhận nó dùng bản đã vá. Với công việc cần tải kho ngoài, kiểm tra quyền ghi, khóa được cấp và những nơi có thể kết nối. Trong lúc chờ bản vá phù hợp, đội có thể tránh tải đệ quy kho chưa tin cậy nếu quy trình cho phép. Việc đó chỉ giảm nguy cơ của một đường kích hoạt, không xử lý toàn bộ sáu vấn đề. Mục tiêu là đặt bản vá tại nơi công việc diễn ra, đồng thời giữ bước tiếp nhận mã ngoài đủ xa khỏi những tài nguyên nhạy cảm.

Nguồn: GitHub — công bố sáu lỗ hổng ngày 10/11/2026; Git — cảnh báo CVE-2026-111760.

Logo Git — Jason Long. Trang nguồn; CC BY 3.0. Dùng nguyên bản.

Chia sẻ