-
09/04/2020
-
108
-
959 bài viết
Cảnh báo lỗ hổng nghiêm trọng trong Git CLI cho phép ghi tùy ý và thực thi mã từ xa
Một lỗ hổng nghiêm trọng vừa được phát hiện trong Git CLI, công cụ phổ biến bậc nhất trong giới lập trình, với mã định danh CVE-2025-48384. Lỗ hổng này mang mức điểm CVSS 8,1, cho phép kẻ tấn công ghi tệp tùy ý và thực thi mã từ xa (RCE) trên các hệ thống Linux và macOS thông qua một thao tác clone kho chứa được thiết kế đặc biệt.
Lỗ hổng CVE-2025-48384 xuất phát từ cách Git xử lý không nhất quán ký tự điều khiển carriage return (\r) trong tệp cấu hình .gitmodules. Khi Git đọc cấu hình từ tệp này, các ký tự \r có thể bị bỏ qua hoặc làm sạch, nhưng khi ghi lại vào tệp .git/config, chúng lại được giữ nguyên. Điều này tạo ra một tình huống đặc biệt nguy hiểm khi attacker chèn thêm ký tự \r vào cuối đường dẫn submodule. Trong quá trình git clone --recursive, Git sẽ ghi cấu hình submodule chứa ký tự điều khiển vào vùng cấu hình cục bộ, từ đó vô tình ghi đè hoặc chèn cấu hình độc hại mà không sinh ra lỗi.
Các nhà nghiên cứu phát hiện rằng kỹ thuật này có thể được dùng để ghi đè các trường nhạy cảm trong cấu hình Git, ví dụ như mục [remote "origin"], để chuyển hướng toàn bộ luồng mã sang máy chủ do attacker kiểm soát. Trong kịch bản khác, attacker có thể ghi tệp vào thư mục .git/hooks/, nơi Git hỗ trợ thực thi script tự động khi người dùng thao tác như git commit, git merge. Bằng cách này, mã độc có thể được cài đặt và chạy ngầm dưới dạng hook, mở đường cho tấn công kéo dài mà không bị phát hiện ngay lập tức.
Tình trạng này đặc biệt nguy hiểm vì lệnh git clone --recursive thường xuất hiện trong README hoặc tài liệu hướng dẫn của các dự án mã nguồn mở. Người dùng ít cảnh giác có thể dễ dàng sao chép lệnh này mà không biết rằng họ đang khởi chạy một chuỗi hành vi độc hại ngay trong bước đầu tiên. Trên hệ điều hành macOS, GitHub Desktop mặc định cũng sử dụng chế độ clone đệ quy, dẫn đến khả năng bị khai thác mà không cần dòng lệnh thủ công. Trong khi đó, các hệ thống Windows không bị ảnh hưởng bởi lỗ hổng này do cách xử lý ký tự điều khiển khác biệt giữa hệ sinh thái Unix và Windows.
Các phiên bản bị ảnh hưởng bao gồm toàn bộ từ v2.50.0 trở về trước đến v2.43.6. Các bản vá đã được phát hành trong đợt cập nhật ngày 8/7/2025, gồm: v2.43.7, v2.44.4, v2.45.4, v2.46.4, v2.47.3, v2.48.2, v2.49.1 và v2.50.1.
Để giảm thiểu rủi ro phát sinh từ lỗ hổng này, cả người dùng cá nhân và tổ chức cần chủ động thực hiện các biện pháp phòng ngừa từ sớm, đặc biệt trong các quy trình làm việc có sử dụng Git và cơ chế submodule. Người dùng nên cân nhắc áp dụng các bước sau để bảo vệ môi trường làm việc một cách hiệu quả:
Lỗ hổng CVE-2025-48384 xuất phát từ cách Git xử lý không nhất quán ký tự điều khiển carriage return (\r) trong tệp cấu hình .gitmodules. Khi Git đọc cấu hình từ tệp này, các ký tự \r có thể bị bỏ qua hoặc làm sạch, nhưng khi ghi lại vào tệp .git/config, chúng lại được giữ nguyên. Điều này tạo ra một tình huống đặc biệt nguy hiểm khi attacker chèn thêm ký tự \r vào cuối đường dẫn submodule. Trong quá trình git clone --recursive, Git sẽ ghi cấu hình submodule chứa ký tự điều khiển vào vùng cấu hình cục bộ, từ đó vô tình ghi đè hoặc chèn cấu hình độc hại mà không sinh ra lỗi.
Các nhà nghiên cứu phát hiện rằng kỹ thuật này có thể được dùng để ghi đè các trường nhạy cảm trong cấu hình Git, ví dụ như mục [remote "origin"], để chuyển hướng toàn bộ luồng mã sang máy chủ do attacker kiểm soát. Trong kịch bản khác, attacker có thể ghi tệp vào thư mục .git/hooks/, nơi Git hỗ trợ thực thi script tự động khi người dùng thao tác như git commit, git merge. Bằng cách này, mã độc có thể được cài đặt và chạy ngầm dưới dạng hook, mở đường cho tấn công kéo dài mà không bị phát hiện ngay lập tức.
Tình trạng này đặc biệt nguy hiểm vì lệnh git clone --recursive thường xuất hiện trong README hoặc tài liệu hướng dẫn của các dự án mã nguồn mở. Người dùng ít cảnh giác có thể dễ dàng sao chép lệnh này mà không biết rằng họ đang khởi chạy một chuỗi hành vi độc hại ngay trong bước đầu tiên. Trên hệ điều hành macOS, GitHub Desktop mặc định cũng sử dụng chế độ clone đệ quy, dẫn đến khả năng bị khai thác mà không cần dòng lệnh thủ công. Trong khi đó, các hệ thống Windows không bị ảnh hưởng bởi lỗ hổng này do cách xử lý ký tự điều khiển khác biệt giữa hệ sinh thái Unix và Windows.
Các phiên bản bị ảnh hưởng bao gồm toàn bộ từ v2.50.0 trở về trước đến v2.43.6. Các bản vá đã được phát hành trong đợt cập nhật ngày 8/7/2025, gồm: v2.43.7, v2.44.4, v2.45.4, v2.46.4, v2.47.3, v2.48.2, v2.49.1 và v2.50.1.
Để giảm thiểu rủi ro phát sinh từ lỗ hổng này, cả người dùng cá nhân và tổ chức cần chủ động thực hiện các biện pháp phòng ngừa từ sớm, đặc biệt trong các quy trình làm việc có sử dụng Git và cơ chế submodule. Người dùng nên cân nhắc áp dụng các bước sau để bảo vệ môi trường làm việc một cách hiệu quả:
- Tránh sử dụng lệnh git clone --recursive với các kho chứa không rõ nguồn gốc, nhất là khi không kiểm tra kỹ nội dung tệp .gitmodules.
- Đối với người dùng GitHub Desktop trên macOS:
- Tạm thời chuyển sang sử dụng Git CLI đã được vá
- Chờ bản cập nhật chính thức từ ứng dụng để đảm bảo an toàn khi thực hiện clone đệ quy
- Trong môi trường doanh nghiệp:
- Áp dụng các quy tắc giám sát tùy chỉnh trên hệ thống phát hiện xâm nhập (IDS)
- Ưu tiên theo dõi các tiến trình shell có tổ tiên là Git, đặc biệt khi dòng lệnh chứa clone và --recursive
Theo Cyber Press