不乱于心,不困于情。
不畏将来,不念过往。如此,安好。

利用VSCode漏洞一键窃取GitHub Token

图1–利用VSCode漏洞一键窃取GitHub Token–seo优化_前端开发_渗透技术

导语:只需点一下链接,攻击者就能拿到你GitHub账号的完整控制权——读写所有私有仓库。最近,安全研究员Ammaraskar(阿马拉斯塔卡尔)公布了这一VSCode漏洞的完整技术细节,向我们展示了攻击者如何利用WebView的消息传递机制,绕过安全边界,悄无声息地窃取你的GitHub令牌。


一、背景:github.dev的强大与风险

你知道GitHub有一个很酷的功能叫github.dev吗?

只要访问一个有权限的仓库,把URL里的github.com改成github.dev,或者点击下拉菜单里的这个选项:

图2–利用VSCode漏洞一键窃取GitHub Token–seo优化_前端开发_渗透技术

你就会进入一个轻量级的VSCode界面——完全运行在浏览器里。

图3–利用VSCode漏洞一键窃取GitHub Token–seo优化_前端开发_渗透技术

这个浏览器版的VSCode功能相当强大:可以查看仓库里的所有文件(包括私有仓库),可以发送Pull Request,甚至可以直接提交代码。

实现这些功能的方法是:当你访问github.dev时,它会向GitHub发送一个POST请求,换取一个OAuth令牌,允许github.dev代表你与GitHub交互。关键问题在于,这个令牌的作用域不是仅限于你当前访问的仓库,而是对你有权限的所有其他仓库都有完全的访问权限。

这意味着,如果攻击者能拿到这个令牌,他就能读写你的所有私有仓库。

而github.dev运行着VSCode上百万行TypeScript代码库的几乎全部代码,自然成了安全研究人员挖掘漏洞的绝佳目标。

二、VSCode WebView的安全模型

VSCode是一款基于Electron的桌面应用,在桌面版中执行任意JavaScript就等同于完整的远程代码执行。因此VSCode实现了一套沙箱机制,其中最核心的就是WebView。

WebView通过