Tấn công One-Click trên GitHub Dev cho phép kẻ tấn công đánh cắp toàn bộ GitHub OAuth Token

Các nhà nghiên cứu an ninh mạng đã tiết lộ một cuộc tấn công One-Click thông qua Microsoft Visual Studio Code (VS Code) cho phép đánh cắp GitHub token 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ể chiếm đoạt token có quyền đọc và ghi vào các kho lưu trữ, bao gồm cả những kho riêng tư. Lỗ hổng này ảnh hưởng đến tính năng GitHub.dev, một trình biên tập mã nguồn dựa trên web.
GitHub và VS Code

Các nhà nghiên cứu an ninh mạng đã tiết lộ một cuộc tấn công One-Click thông qua Microsoft Visual Studio Code (VS Code), cho phép kẻ tấn công đánh cắp GitHub token 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 GitHub token có quyền đọc và ghi vào các repo của bạn, bao gồm cả những kho lưu trữ riêng tư," nhà nghiên cứu bảo mật 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 trình biên tập mã nguồn nhẹ trên nền web trong sandbox của trình duyệt bằng cách khởi chạy môi trường VS Code. Tính năng này cho phép người dùng gửi pull requests và thực hiện commits.

"Chức năng này được thực hiện bằng cách github.com thực hiện phương thức POST một OAuth token tới github.dev, cho phép nó tương tác với GitHub thay mặt bạn," Askar nói. "Token này không bị giới hạn trong một 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."

Cách thức khai thác lỗ hổng qua Webview

Tóm lại, lỗ hổng này cho phép kẻ tấn công cài đặt các extension VS Code độc hại để đánh cắp GitHub OAuth token khi chúng được chuyển qua GitHub.dev bằng cách khai thác cơ chế truyền thông điệp (message-passing) giữa cửa sổ VS Code chính và các webviews. Webviews thường được sử dụng để hiển thị bản xem trước Markdown hoặc chỉnh sửa Jupyter notebooks.

Sơ đồ tấn công đánh cắp token

Cụ thể, bản khai thác (exploit) chạy JavaScript độc hại bên trong một webview không đáng tin cậy để mô phỏng các lần nhấn phím (keydown events) trong cửa sổ trình biên tập chính, mở Command Palette bằng cách kích hoạt "Ctrl+Shift+P", và cài đặt một extension do kẻ tấn công kiểm soát. Extension này sau đó sẽ trích xuất GitHub OAuth token được gửi tới GitHub.dev và truy vấn GitHub API để liệt kê tất cả các kho lưu trữ riêng tư mà nạn nhân có quyền truy cập.

Lợi dụng tính năng Local Workspace Extensions

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 extensions. Tính năng này cho phép một extension được cài đặt trực tiếp mà không hiển thị bất kỳ hộp thoại xác nhận tin cậy (trust dialog prompt) nào, miễn là nó được đặt trong thư mục ".vscode/extensions" bên trong không gian làm việc đó, từ đó bỏ qua việc kiểm tra độ tin cậy của nhà phát hành (publisher trust check).

"Đây chỉ là một trở ngại nhỏ, vì một trong những điều mà các extension có thể làm thông qua tệp package.json là đóng góp thêm các phím tắt (keybindings) cho VS Code," nhà nghiên cứu giải thích. "Vì chúng ta có thể kích hoạt các phím tắt một cách đáng tin cậy, chúng ta có thể thêm phím tắt cho bất kỳ lệnh VS Code nào mình muốn, chẳng hạn như cài đặt một extension trong khi bỏ qua bước kiểm tra nhà phát hành đáng tin cậy."

Phản hồi và Khắc phục

Nhà nghiên cứu cũng lưu ý rằng GitHub đã được thông báo về lỗ hổng vào ngày 2 tháng 6 năm 2026. Một giờ sau đó, các chi tiết về vấn đề đã được công bố rộng rãi, viện dẫn lý do về cách Microsoft xử lý các lỗi liên quan đến VS Code trong quá khứ. Hiện tại, Microsoft đã xác nhận lỗ hổng và cho biết họ đang nỗ lực triển khai bản sửa lỗi.

"Để làm rõ, vấn đề này không ảnh hưởng đến phiên bản VS Code Desktop," Alexandru Dima, quản lý kỹ thuật phần mềm đối tác tại Microsoft, khẳng định.