Lỗ hổng tấn công GitHub Dev chỉ với một cú click cho phép kẻ tấn công đánh cắp toàn bộ token OAuth
Các nhà nghiên cứu an ninh mạng đã tiết lộ một cuộc tấn công chỉ bằng một cú nhấp chuột thông qua Microsoft Visual Studio Code (VS Code) cho phép đánh cắp token GitHub của người dùng.
"Chỉ bằng cách nhấp vào một liên kết, kẻ tấn công có thể đánh cắp token GitHub, từ đó có thể đọc và ghi vào các repo của bạn, bao gồm cả các kho private," nhà nghiên cứu an ninh Ammar Askar cho biết.
GitHub hỗ trợ một tính năng gọi là GitHub.dev, hoạt động như một source code editor dạng web-based nhẹ trong môi trường sandbox của web browser bằng cách khởi chạy môi trường VS Code. Nó cho phép người dùng gửi yêu cầu kéo (pull request) và thực hiện commit.
"Chức năng này được thực hiện khi github.com gửi yêu cầu POST tới github.dev, cho phép nó tương tác với GitHub thay mặt bạn," Askar nói. "Yêu cầu này không bị giới hạn ở 1 repo cụ thể mà bạn đã tương tác, nghĩa là nó có toàn quyền truy cập vào mọi repo khác mà bạn có quyền truy cập."
Tóm lại, lỗ hổng này cho phép kẻ tấn công cài đặt các extension độc hại cho VS Code để đánh cắp các token GitHub OAuth khi chúng được chuyển đến GitHub.dev bằng cách khai thác cơ chế truyền thông điệp giữa window chính của VS Code và các webview. Webview được sử dụng để hiển thị bản preview Markdown hoặc chỉnh sửa Jupyter notebook.
Cụ thể, lỗ hổng này chạy mã JavaScript độc bên trong một webview không đáng tin cậy để giả lập các thao tác nhấn phím (còn gọi là các sự kiện keydown) trong cửa sổ trình soạn thảo chính, mở Command Palette bằng cách kích hoạt tổ hợp phím Ctrl+Shift+P, rồi cài đặt một extension do kẻ tấn công kiểm soát. Extension này sau đó để trích xuất token OAuth GitHub được gửi đến GitHub.dev và truy vấn API của GitHub để liệt kê tất cả các private repo mà nạn nhân có thể truy cập.
Điều đáng chú ý là phương pháp này cũng tận dụng một tính năng của VS Code gọi là local workspace extension, cho phép cài đặt trực tiếp một extension mà không cần hiển thị bất kỳ dialog prompt nào để xác minh, miễn là nó được đặt trong thư mục ".vscode/extensions" bên trong workspace đó, từ đó bypass bước kiểm tra độ tin cậy của nhà phát hành.
“Đây chỉ là một trở ngại nhỏ. Một trong những khả năng mà các extention có thể thực hiện thông qua tệp package.json là bổ sung các tổ hợp phím tắt (keybindings) cho VS Code,” nhà nghiên cứu giải thích.
“Vì chúng tôi có thể kích hoạt các phím tắt đó một cách đáng tin cậy, nên chỉ cần thêm một tổ hợp phím cho bất kỳ lệnh nào của VS Code mà chúng tôi muốn thực thi, chẳng hạn như cài đặt một extention trong khi bypass bước kiểm tra nhà phát hành đáng tin cậy (trusted publisher check).”
Nhà nghiên cứu cũng lưu ý rằng GitHub đã được thông báo về lỗ hổng này vào ngày 2 tháng 6 năm 2026, một giờ sau khi các chi tiết về vấn đề được công khai, viện dẫn cách Microsoft xử lý các lỗi liên quan đến VS Code trong quá khứ. Tính đến thời điểm viết bài này, Microsoft đã thừa nhận lỗ hổng và cho biết họ đang nỗ lực khắc phục.





















