-
09/04/2020
-
141
-
2.036 bài viết
Cursor trên Windows chưa vá lỗ hổng cho phép chạy mã từ repository độc hại
Cursor, một trong những trình soạn thảo mã nguồn tích hợp trí tuệ nhân tạo (AI) được cộng đồng lập trình viên sử dụng rộng rãi, vừa bị phát hiện tồn tại một lỗ hổng trên Windows có thể dẫn đến thực thi mã tùy ý chỉ bằng thao tác mở một dự án. Điều đáng lo ngại là người dùng không cần nhấp chuột, không cần xác nhận và cũng không nhận được bất kỳ cảnh báo nào, trong khi mã độc vẫn được thực thi với toàn bộ quyền của tài khoản đang đăng nhập.
Lỗ hổng được phát hiện bởi công ty an ninh mạng Mindgard, đã được báo cáo cho Cursor từ cuối năm 2025 nhưng đến nay vẫn chưa có bản vá chính thức. Vụ việc tiếp tục làm dấy lên lo ngại về mức độ an toàn của các công cụ AI dành cho lập trình viên, đặc biệt khi việc tải và mở các kho mã nguồn từ Internet đã trở thành thói quen hàng ngày.
Lỗ hổng là gì và vì sao lại nguy hiểm?
Theo nghiên cứu của Mindgard, vấn đề nằm ở cách Cursor tìm kiếm chương trình Git khi người dùng mở một repository trên Windows.
Thông thường, Git là công cụ quản lý mã nguồn mà hầu hết lập trình viên đều sử dụng. Mỗi khi mở một dự án, Cursor sẽ kiểm tra Git để xác định thông tin về repository trước khi hiển thị mã nguồn. Tuy nhiên, thay vì chỉ sử dụng Git đã được cài đặt trên hệ điều hành, Cursor lại cho phép Windows tìm kiếm tệp git.exe theo thứ tự mặc định, trong đó thư mục dự án được kiểm tra trước.
Điều này đồng nghĩa với việc nếu trong thư mục gốc của repository tồn tại một tệp có tên git.exe, Cursor sẽ vô tình thực thi chính tệp đó thay vì chương trình Git hợp lệ trên máy tính.
Đây là một dạng Untrusted Search Path, một lớp lỗ hổng đã tồn tại nhiều năm trên Windows nhưng vẫn tiếp tục xuất hiện trong nhiều phần mềm hiện đại.
Thông thường, Git là công cụ quản lý mã nguồn mà hầu hết lập trình viên đều sử dụng. Mỗi khi mở một dự án, Cursor sẽ kiểm tra Git để xác định thông tin về repository trước khi hiển thị mã nguồn. Tuy nhiên, thay vì chỉ sử dụng Git đã được cài đặt trên hệ điều hành, Cursor lại cho phép Windows tìm kiếm tệp git.exe theo thứ tự mặc định, trong đó thư mục dự án được kiểm tra trước.
Điều này đồng nghĩa với việc nếu trong thư mục gốc của repository tồn tại một tệp có tên git.exe, Cursor sẽ vô tình thực thi chính tệp đó thay vì chương trình Git hợp lệ trên máy tính.
Đây là một dạng Untrusted Search Path, một lớp lỗ hổng đã tồn tại nhiều năm trên Windows nhưng vẫn tiếp tục xuất hiện trong nhiều phần mềm hiện đại.
Quá trình khai thác diễn ra như thế nào?
Kịch bản tấn công thực tế đơn giản hơn nhiều so với những gì người dùng thường nghĩ. Đầu tiên, kẻ tấn công tạo một repository chứa mã nguồn tưởng như bình thường nhưng bí mật đặt thêm một tệp thực thi mang tên git.exe ngay tại thư mục gốc của dự án. Repository này có thể được chia sẻ công khai trên GitHub hoặc bất kỳ nền tảng lưu trữ mã nguồn nào.
Khi nạn nhân tải hoặc sao chép (clone) repository về máy và mở bằng Cursor trên Windows, phần mềm sẽ tự động gọi lệnh kiểm tra Git để xác định thông tin repository. Thay vì sử dụng Git thật trên hệ thống, Cursor lại thực thi tệp git.exe nằm trong chính thư mục dự án.
Điều đáng lo ngại là toàn bộ quá trình này diễn ra hoàn toàn tự động. Người dùng không cần chạy bất kỳ chương trình nào, không mở tệp thực thi, không nhấn nút đồng ý và cũng không nhận được cảnh báo bảo mật. Chỉ cần mở thư mục dự án, mã độc đã có thể được kích hoạt.
Trong thử nghiệm của Mindgard, nhóm nghiên cứu chỉ đơn giản đổi tên chương trình Windows Calculator thành git.exe rồi đặt vào repository. Khi mở dự án bằng Cursor, hàng loạt cửa sổ Calculator liên tục xuất hiện, chứng minh rằng Cursor đã tự động thực thi tệp này nhiều lần.
Khi nạn nhân tải hoặc sao chép (clone) repository về máy và mở bằng Cursor trên Windows, phần mềm sẽ tự động gọi lệnh kiểm tra Git để xác định thông tin repository. Thay vì sử dụng Git thật trên hệ thống, Cursor lại thực thi tệp git.exe nằm trong chính thư mục dự án.
Điều đáng lo ngại là toàn bộ quá trình này diễn ra hoàn toàn tự động. Người dùng không cần chạy bất kỳ chương trình nào, không mở tệp thực thi, không nhấn nút đồng ý và cũng không nhận được cảnh báo bảo mật. Chỉ cần mở thư mục dự án, mã độc đã có thể được kích hoạt.
Trong thử nghiệm của Mindgard, nhóm nghiên cứu chỉ đơn giản đổi tên chương trình Windows Calculator thành git.exe rồi đặt vào repository. Khi mở dự án bằng Cursor, hàng loạt cửa sổ Calculator liên tục xuất hiện, chứng minh rằng Cursor đã tự động thực thi tệp này nhiều lần.
Mã độc có thể làm được những gì?
Do tiến trình độc hại được thực thi dưới quyền của chính người dùng đang đăng nhập Windows, kẻ tấn công sẽ có toàn quyền đối với những tài nguyên mà lập trình viên đang sở hữu.
Điều này đồng nghĩa mã độc có thể đọc toàn bộ mã nguồn đang phát triển, đánh cắp khóa SSH, token GitHub, khóa truy cập các dịch vụ đám mây như AWS, Azure hoặc Google Cloud, truy cập các tệp cấu hình chứa thông tin xác thực, cài đặt backdoor hoặc tiếp tục tải thêm các thành phần độc hại khác từ Internet.
Đối với môi trường phát triển phần mềm, đây là một rủi ro đặc biệt nghiêm trọng bởi máy tính của lập trình viên thường chứa rất nhiều thông tin nhạy cảm, từ mã nguồn chưa công bố đến khóa truy cập hệ thống sản xuất.
Điều này đồng nghĩa mã độc có thể đọc toàn bộ mã nguồn đang phát triển, đánh cắp khóa SSH, token GitHub, khóa truy cập các dịch vụ đám mây như AWS, Azure hoặc Google Cloud, truy cập các tệp cấu hình chứa thông tin xác thực, cài đặt backdoor hoặc tiếp tục tải thêm các thành phần độc hại khác từ Internet.
Đối với môi trường phát triển phần mềm, đây là một rủi ro đặc biệt nghiêm trọng bởi máy tính của lập trình viên thường chứa rất nhiều thông tin nhạy cảm, từ mã nguồn chưa công bố đến khóa truy cập hệ thống sản xuất.
Vì sao đây là một lỗ hổng đáng lo ngại?
Cursor cho rằng đây không phải là lỗ hổng bảo mật theo mô hình "chia sẻ trách nhiệm" (Shared Responsibility), bởi người dùng đã chủ động mở một repository chứa tệp thực thi độc hại. Tuy nhiên, nhiều chuyên gia lại có quan điểm ngược lại.
Theo Mindgard, vấn đề không nằm ở việc repository chứa mã độc mà ở chỗ Cursor tự động thực thi chương trình này mà không có bất kỳ cơ chế xác minh hay cảnh báo nào. Người dùng chỉ thực hiện đúng thao tác thông thường là mở dự án, trong khi phần mềm lại ngầm chạy một tệp thực thi không đáng tin cậy.
Đáng chú ý, hành vi này không xuất hiện trên Visual Studio Code, nền tảng mà Cursor được phát triển dựa trên (fork). Điều đó cho thấy cơ chế này được bổ sung trong quá trình Cursor phát triển chứ không phải là hành vi mặc định của VS Code.
Ngoài ra, lỗ hổng chỉ ảnh hưởng đến Windows, trong khi các phiên bản Cursor trên macOS và Linux không bị tác động do cơ chế tìm kiếm chương trình của các hệ điều hành này khác với Windows.
Theo Mindgard, vấn đề không nằm ở việc repository chứa mã độc mà ở chỗ Cursor tự động thực thi chương trình này mà không có bất kỳ cơ chế xác minh hay cảnh báo nào. Người dùng chỉ thực hiện đúng thao tác thông thường là mở dự án, trong khi phần mềm lại ngầm chạy một tệp thực thi không đáng tin cậy.
Đáng chú ý, hành vi này không xuất hiện trên Visual Studio Code, nền tảng mà Cursor được phát triển dựa trên (fork). Điều đó cho thấy cơ chế này được bổ sung trong quá trình Cursor phát triển chứ không phải là hành vi mặc định của VS Code.
Ngoài ra, lỗ hổng chỉ ảnh hưởng đến Windows, trong khi các phiên bản Cursor trên macOS và Linux không bị tác động do cơ chế tìm kiếm chương trình của các hệ điều hành này khác với Windows.
Không chỉ Cursor gặp vấn đề
Nghiên cứu của Mindgard cũng cho thấy Cursor không phải trường hợp duy nhất. Trước đó, Cymulate từng phát hiện nhiều công cụ AI dành cho lập trình viên như GitHub Copilot CLI, Gemini CLI và Codex Desktop đều tồn tại cơ chế tương tự khi tìm kiếm các chương trình hỗ trợ trên Windows. Một số nhà cung cấp thừa nhận vấn đề nhưng chưa phát hành bản vá, trong khi số khác cho rằng đây không phải là lỗ hổng bảo mật.
Thực tế, dạng lỗi Untrusted Search Path đã được ghi nhận từ nhiều năm trước. Năm 2020, Git Credential Manager Core cũng từng mắc lỗi tương tự (CVE-2020-26233), cho phép tệp git.exe giả mạo trong repository được thực thi thay cho Git hợp lệ. Điều này cho thấy đây là một lớp lỗ hổng cũ nhưng vẫn tiếp tục tái xuất hiện trong các công cụ phát triển hiện đại.
Thực tế, dạng lỗi Untrusted Search Path đã được ghi nhận từ nhiều năm trước. Năm 2020, Git Credential Manager Core cũng từng mắc lỗi tương tự (CVE-2020-26233), cho phép tệp git.exe giả mạo trong repository được thực thi thay cho Git hợp lệ. Điều này cho thấy đây là một lớp lỗ hổng cũ nhưng vẫn tiếp tục tái xuất hiện trong các công cụ phát triển hiện đại.
Đã có bản vá hay chưa?
Theo Mindgard, lỗ hổng được báo cáo cho Cursor từ tháng 12/2025. Tuy nhiên, đến giữa tháng 7/2026, công ty vẫn chưa phát hành bản vá hay công bố thông báo bảo mật chính thức liên quan đến vấn đề này.
Cursor sau đó xác nhận đã nhận được báo cáo nhưng cho rằng trường hợp này nằm ngoài phạm vi chương trình săn lỗi (Bug Bounty) do yêu cầu kẻ tấn công phải kiểm soát repository mà người dùng mở. Đồng thời, hãng khuyến nghị người dùng sử dụng tính năng Workspace Trust, chế độ giúp hạn chế việc thực thi tự động khi mở các dự án chưa được tin cậy.
Dù vậy, Mindgard cho biết họ chưa kiểm chứng liệu cơ chế Workspace Trust có thực sự ngăn được việc Cursor thực thi tệp git.exe trước khi các biện pháp bảo vệ được kích hoạt hay không.
Cursor sau đó xác nhận đã nhận được báo cáo nhưng cho rằng trường hợp này nằm ngoài phạm vi chương trình săn lỗi (Bug Bounty) do yêu cầu kẻ tấn công phải kiểm soát repository mà người dùng mở. Đồng thời, hãng khuyến nghị người dùng sử dụng tính năng Workspace Trust, chế độ giúp hạn chế việc thực thi tự động khi mở các dự án chưa được tin cậy.
Dù vậy, Mindgard cho biết họ chưa kiểm chứng liệu cơ chế Workspace Trust có thực sự ngăn được việc Cursor thực thi tệp git.exe trước khi các biện pháp bảo vệ được kích hoạt hay không.
Chuyên gia khuyến nghị
Trong khi chờ bản vá chính thức, các chuyên gia an ninh mạng khuyến nghị người dùng Windows nên hạn chế mở các repository không rõ nguồn gốc bằng Cursor, đặc biệt là các dự án vừa tải từ Internet hoặc được chia sẻ từ bên thứ ba.
Đối với doanh nghiệp, việc triển khai Windows App Control, AppLocker hoặc các giải pháp EDR để ngăn chặn các tệp thực thi bất thường trong thư mục dự án sẽ giúp giảm đáng kể nguy cơ bị khai thác. Bên cạnh đó, nên kiểm tra kỹ repository trước khi mở, đặc biệt nếu phát hiện xuất hiện các tệp như git.exe, node.exe, npx.exe hoặc các tệp thực thi (.exe) không liên quan đến mã nguồn của dự án.
Trong trường hợp cần kiểm tra các repository chưa được xác minh, các chuyên gia khuyến nghị nên thực hiện trong Windows Sandbox hoặc máy ảo nhằm cô lập hoàn toàn môi trường khỏi hệ thống chính.
Lỗ hổng mới trên Cursor cho thấy ranh giới giữa "mở một dự án" và "chạy một chương trình" có thể trở nên rất mong manh nếu công cụ phát triển xử lý không đúng cách. Trong bối cảnh AI IDE ngày càng được sử dụng rộng rãi, các nhà phát triển không chỉ cần tập trung vào bảo mật của mô hình AI mà còn phải đảm bảo những thành phần nền tảng như cơ chế tìm kiếm chương trình hay quản lý tiến trình không vô tình tạo ra con đường để tin tặc thực thi mã độc.
Đối với doanh nghiệp, việc triển khai Windows App Control, AppLocker hoặc các giải pháp EDR để ngăn chặn các tệp thực thi bất thường trong thư mục dự án sẽ giúp giảm đáng kể nguy cơ bị khai thác. Bên cạnh đó, nên kiểm tra kỹ repository trước khi mở, đặc biệt nếu phát hiện xuất hiện các tệp như git.exe, node.exe, npx.exe hoặc các tệp thực thi (.exe) không liên quan đến mã nguồn của dự án.
Trong trường hợp cần kiểm tra các repository chưa được xác minh, các chuyên gia khuyến nghị nên thực hiện trong Windows Sandbox hoặc máy ảo nhằm cô lập hoàn toàn môi trường khỏi hệ thống chính.
Lỗ hổng mới trên Cursor cho thấy ranh giới giữa "mở một dự án" và "chạy một chương trình" có thể trở nên rất mong manh nếu công cụ phát triển xử lý không đúng cách. Trong bối cảnh AI IDE ngày càng được sử dụng rộng rãi, các nhà phát triển không chỉ cần tập trung vào bảo mật của mô hình AI mà còn phải đảm bảo những thành phần nền tảng như cơ chế tìm kiếm chương trình hay quản lý tiến trình không vô tình tạo ra con đường để tin tặc thực thi mã độc.