Các trợ lý lập trình AI như Claude Code, Cursor và Grok Build có thể thực thi các lệnh tùy ý ngay khi lập trình viên mở một repository không đáng tin cậy, mà không cần bất kỳ cú nhấp chuột hay lời nhắc nào. Lỗ hổng này phát sinh từ cách các công cụ này gọi tính năng core.fsmonitor của Git để quét các tệp trong dự án.
Tại sao vấn đề này lại quan trọng vào lúc này
Các lập trình viên đang ngày càng dựa vào các AI agent để gợi ý mã nguồn, tái cấu trúc (refactor) các hàm, hoặc thậm chí viết toàn bộ các module. Những agent này cần một bản snapshot nhanh chóng của không gian làm việc, vì vậy chúng chạy git status ở chế độ chạy ngầm. Khi Git đọc tệp .git/config của một repository, bất kỳ giá trị nào được gán cho core.fsmonitor đều được coi là một lệnh shell mà Git sẽ thực thi. Một kẻ tấn công có thể đặt một lệnh được thiết kế sẵn trong mục cấu hình đó, và lệnh gọi Git chạy ngầm của AI sẽ kích hoạt nó trước khi người dùng kịp gõ dù chỉ một dòng mã.
Mã này chạy với chính đặc quyền của lập trình viên, vượt qua môi trường sandbox mà AI agent thường hoạt động. Trong thực tế, một repository bị xâm nhập có thể cài đặt mã độc, đánh cắp thông tin xác thực hoặc thay đổi các tệp nguồn, trong khi lập trình viên vẫn tin rằng trợ lý AI chỉ đang đưa ra các gợi ý.
Cách thức cuộc tấn công diễn ra
- Chuẩn bị – Kẻ tấn công tạo một repository có tệp
.git/configchứa một dòng nhưcore.fsmonitor = /path/to/malicious/script. - Phân phối – Repository được gửi dưới dạng tệp zip, sao chép từ USB, đồng bộ qua ổ đĩa dùng chung, hoặc được đặt vào máy nạn nhân với thư mục
.gitđã có sẵn. - Kích hoạt – Lập trình viên mở thư mục trong một IDE có hỗ trợ AI. Trợ lý chạy
git statusđể thu thập ngữ cảnh. Git đọc cấu hình cục bộ, thực thi lệnhcore.fsmonitor, và mã độc sẽ chạy ngay lập tức.
Một lệnh git clone thông thường sẽ không gặp phải rủi ro này vì quá trình clone tạo ra một thư mục .git mới tinh và không có cấu hình bị can thiệp. Cuộc tấn công chỉ hiệu quả khi kẻ tấn công có thể cung cấp một thư mục .git đã tồn tại sẵn.
Những gì đang bị đe dọa
- Các lập trình viên cá nhân có thể bị xâm nhập máy tính mà không hề hay biết, làm mất bất kỳ dữ liệu nào mà AI agent có thể truy cập.
- Các nhóm (Teams) chia sẻ mã nguồn qua ổ đĩa nội bộ hoặc các tệp zip từ nhà thầu có thể làm lây lan mã độc qua nhiều máy trạm.
- Các nhà cung cấp công cụ đối mặt với rủi ro tổn hại danh tiếng nếu người dùng quy trách nhiệm vi phạm cho trợ lý AI thay vì sự tương tác Git tiềm ẩn bên dưới.
Vì lệnh độc hại được kế thừa quyền của người dùng, nó có thể sửa đổi bất kỳ tệp nào mà lập trình viên có quyền, bao gồm cả khóa SSH, các kịch bản build, hoặc thông tin xác thực triển khai.
Các bước giảm thiểu rủi ro mà lập trình viên có thể thực hiện ngay hôm nay
Đừng tin tưởng các thiết lập Git cục bộ. Cấu hình của một repository sẽ ghi đè lên các giá trị toàn cục mỗi khi trợ lý AI truy vấn dự án.
Kiểm tra mục
core.fsmonitortrước khi mở một thư mục với trợ lý AI:git config --get core.fsmonitorNếu thấy bất kỳ giá trị nào xuất hiện, hãy coi đó là dấu hiệu khả nghi.
Xóa mục đó bằng lệnh:
git config --local --unset core.fsmonitorKiểm tra các khóa rủi ro khác mà Git có thể thực thi:
hooksPath,sshCommand,pager,editor,filter. Sử dụng mẫugit config --gettương tự để xác minh chúng đang trống.Ưu tiên sử dụng clean clones cho bất kỳ mã nguồn nào bạn định đưa vào công cụ AI. Nếu bạn bắt buộc phải làm việc với một tệp zip hoặc thư mục được chuyển giao, hãy xóa thư mục
.gitcủa nó và khởi tạo lại repository, hoặc thực hiện các bước kiểm tra trên trước.
Trách nhiệm thuộc về ai
Lỗ hổng này không phải là lỗi của các mô hình ngôn ngữ cung cấp sức mạnh cho Claude Code, Cursor hay Grok Build; nó là hệ quả của cách các công cụ đó thu thập thông tin tệp. Một số nhà cung cấp đã bắt đầu cô lập (sandbox) các lệnh gọi Git chặt chẽ hơn, nhưng hành vi mặc định vẫn tin tưởng vào các thiết lập repository cục bộ. Cho đến khi ngành công nghiệp áp dụng một tiêu chuẩn nhằm loại bỏ hoặc bỏ qua các mục cấu hình có khả năng gây nguy hiểm khi AI agent quét không gian làm việc, lập trình viên phải là tuyến phòng thủ cuối cùng.
Những điều cần theo dõi tiếp theo
- Các bản cập nhật công cụ thực hiện làm sạch (sanitize) cấu hình Git một cách rõ ràng trước khi gọi
git status. - Các hướng dẫn do cộng đồng thúc đẩy về phát triển an toàn với sự hỗ trợ của AI, có khả năng bao gồm các bước kiểm tra trước khi thực hiện (pre-flight checks).
- Nghiên cứu bảo mật có thể phát hiện thêm các khóa cấu hình Git khác có khả năng thực thi mã, mở rộng danh sách kiểm tra vượt ra ngoài năm khóa đã nêu trên.
Điểm mấu chốt là: một trợ lý AI có thể là một cộng sự lập trình (pair-programmer) tiện lợi, nhưng nó sẽ sẵn lòng thực thi bất kỳ lệnh nào được ẩn giấu trong cấu hình Git của một repository. Hãy xác minh không gian làm việc trước khi bạn cho phép trợ lý AI chạm vào nó.
