Một lỗ hổng bảo mật nghiêm trọng trong Visual Studio Code có thể cho phép kẻ tấn công giành được quyền truy cập dai dẳng vào máy trạm của nhà phát triển chỉ với một cú nhấp chuột bên trong một thư mục dự án độc hại. Lỗ hổng này có thể dẫn đến xâm nhập mạng và chiếm quyền kiểm soát hệ thống.
Lỗ hổng Visual Studio Code và Cơ chế Tấn công
Cuộc tấn công lạm dụng các liên kết có thể nhấp trong trình soạn thảo mã nguồn của VS Code để bỏ qua sự bảo vệ của Workspace Trust. Workspace Trust được thiết kế để bảo vệ người dùng khi họ mở mã từ một nguồn không xác định. Khi một thư mục không đáng tin cậy, VS Code sẽ chuyển sang Chế độ Hạn chế (Restricted Mode).
Chế độ Hạn chế này lẽ ra phải ngăn chặn các hành động rủi ro như chạy tác vụ, trình gỡ lỗi hoặc lệnh terminal. Ý tưởng cốt lõi là việc mở một kho lưu trữ không xác định sẽ không tự động thực thi mã do kẻ tấn công kiểm soát. Tuy nhiên, các nhà nghiên cứu từ Remedio đã phát hiện ra một phương thức có thể cho phép một dự án độc hại kích hoạt các lệnh nội bộ của VS Code thông qua một liên kết được chế tạo đặc biệt.
Kỹ thuật Khai thác Liên kết Lệnh
VS Code tự động phát hiện các URL trong các tệp như README, bình luận và tài liệu Markdown. Thông thường, người dùng có thể mở các liên kết này bằng cách nhấn Ctrl + nhấp chuột. Mặc dù các nhà phát triển thường mong đợi những liên kết này mở các trang web hoặc tài liệu, VS Code cũng hỗ trợ một loại URL đặc biệt. Thay vì mở trình duyệt, các liên kết này có thể gọi một lệnh trình chỉnh sửa nội bộ và truyền các đối số cho nó.
VS Code có hàng trăm lệnh tích hợp, và các tiện ích mở rộng đã cài đặt có thể bổ sung thêm nhiều lệnh khác. Một lệnh đáng quan ngại là workbench.extensions.installExtension. Theo tài liệu tham khảo lệnh của VS Code, lệnh này có thể cài đặt một tiện ích mở rộng bằng cách sử dụng một định danh tiện ích mở rộng hoặc một URI gói tiện ích mở rộng VSIX.
Kẻ tấn công có thể ẩn một liên kết lệnh đằng sau văn bản có vẻ vô hại, chẳng hạn như “Cài đặt các phụ thuộc của dự án” hoặc “Thiết lập dự án này”. Nếu nạn nhân thực hiện Ctrl + nhấp vào liên kết trong tệp nguồn, trình chỉnh sửa có thể được hướng dẫn cài đặt một gói VSIX độc hại nằm bên trong thư mục dự án.
Tác động của Tiện ích Mở rộng Độc hại
Một tiện ích mở rộng của VS Code không chỉ là một tệp cấu hình; nó có khả năng chạy mã JavaScript hoặc TypeScript với quyền của người dùng đã đăng nhập. Điều này có nghĩa là một tiện ích mở rộng độc hại có thể truy cập các tệp cục bộ, mã nguồn, khóa SSH, thông tin xác thực đám mây, token có thể truy cập trình duyệt hoặc các công cụ phát triển.
Mối nguy hiểm không dừng lại ở cú nhấp chuột ban đầu. Sau khi được cài đặt, tiện ích mở rộng có thể tồn tại trên hệ thống và kích hoạt trong các phiên VS Code trong tương lai. Một nạn nhân có thể đóng dự án độc hại, khởi động lại máy tính và sau đó mở một kho lưu trữ đáng tin cậy. Tuy nhiên, tiện ích mở rộng của kẻ tấn công vẫn có thể tải trong nền.
Rủi ro Đối với Máy trạm Nhà phát triển
Vấn đề này đặc biệt nghiêm trọng đối với máy trạm của các nhà phát triển. Các nhà phát triển thường nắm giữ quyền truy cập vào các kho lưu trữ riêng tư, hệ thống CI/CD, cơ sở hạ tầng ký số, tài khoản đám mây và các bí mật sản xuất. Việc xâm phạm một thiết bị của nhà phát triển có thể trở thành điểm khởi đầu cho một sự cố chuỗi cung ứng phần mềm lớn hơn, dẫn đến rò rỉ dữ liệu nhạy cảm.
Tài liệu Workspace Trust của Microsoft cho biết người dùng có thể được nhắc tin cậy kho lưu trữ hoặc cài đặt tiện ích mở rộng khi cài đặt các tiện ích mở rộng trong Chế độ Hạn chế. Các tiện ích mở rộng không hỗ trợ Workspace Trust có thể được cài đặt với chức năng hạn chế hoặc bị vô hiệu hóa.
Theo Remedio Research, mối quan ngại là một tiện ích mở rộng VSIX cục bộ được chế tạo có thể tuyên bố hỗ trợ cho các kho lưu trữ không đáng tin cậy. Nếu VS Code chấp nhận khai báo này mà không hiển thị cảnh báo bảo mật có ý nghĩa, kẻ tấn công có thể cài đặt tiện ích mở rộng trong khi kho lưu trữ vẫn ở trạng thái không đáng tin cậy.
Các Biện pháp Bảo vệ và Khuyến nghị
Bài học rút ra rộng hơn là cần áp dụng ranh giới bảo mật một cách nhất quán. Việc chặn các liên kết lệnh nguy hiểm trong bản xem trước Markdown được hiển thị là không đủ nếu cùng một liên kết vẫn có thể thực thi thông qua trình soạn thảo mã nguồn thô.
Các nhà phát triển nên tránh nhấp vào các liên kết bên trong các kho lưu trữ không quen thuộc, đặc biệt là các liên kết tuyên bố cài đặt các phụ thuộc, cấu hình môi trường hoặc khởi chạy các hành động thiết lập dự án. Người dùng cũng nên bật Workspace Trust và thường xuyên xem xét các tiện ích mở rộng đã cài đặt.
Cấu hình Phòng ngừa và Quản lý Tổ chức
Một biện pháp giảm thiểu thực tế là tắt các liên kết có thể nhấp trong trình chỉnh sửa thông qua cài đặt người dùng sau:
{
"editor.links": false
}
Cài đặt này ngăn VS Code tự động phát hiện và mở các liên kết trực tiếp từ trình soạn thảo mã nguồn, loại bỏ đường dẫn nhấp chuột được sử dụng bởi kỹ thuật được báo cáo. Cài đặt này được ghi lại trong cấu hình mặc định của VS Code như là kiểm soát việc trình chỉnh sửa có phát hiện liên kết và làm cho chúng có thể nhấp hay không.
Các tổ chức cũng nên hạn chế cài đặt tiện ích mở rộng thông qua chính sách tập trung và chỉ cho phép các nhà xuất bản hoặc tiện ích mở rộng đã được phê duyệt. Cho đến khi Microsoft hoàn toàn giải quyết việc xử lý liên kết lệnh trên tất cả các bề mặt của trình chỉnh sửa, các nhà phát triển nên coi các liên kết trong các kho lưu trữ mã không đáng tin cậy là có khả năng gây hại.
Để tìm hiểu thêm về các lỗ hổng tương tự và các cảnh báo bảo mật, bạn có thể tham khảo các nguồn tin cậy như CISA hoặc NVD.










