摘要
安全研究员Ammar Askar近日披露了一个令人警醒的VSCode安全漏洞:攻击者只需要一个操作——让用户点击一条恶意链接——就能从VSCode的webview中窃取用户的GitHub访问令牌。这个漏洞的可怕之处在于它的攻击路径极其隐蔽,整个过程不需要用户任何额外交互,看起来就像正常使用一个Jupyter notebook。 这个漏洞的核心在于VSCode的webview机制与Jupyter notebook的深度集成。VSCode为了支持notebook功能,允许在webview中渲染任意HTML内容,并通过postMessage接口与外部通信。问题出在webview的键盘事件处理上:VSCode webview会转发某些键盘组合键到编辑器核心,其中就包括Ctrl+Shift+P——这个快捷键的作用是调出VSCode的命令面板。 攻击的精确步骤是这样的:首先,攻击者创建一个包含恶意JavaScript的Jupyter notebook,当用户在VSCode中打开这个notebook时,恶意脚本就开始运行。这个脚本通过监听webview的keydown事件,精确地检测用户何时按下Ctrl+Shift+P。一旦检测到,脚本就会模拟发送命令面板的打开指令,然后通过postMessage接口向VSCode发送一条精心构造的消息,指示VSCode安装一个来自攻击者控制的扩展。 这个扩展安装过程之所以能够实现,是因为VSCode在用户首次安装扩展时会弹出一个确认对话框,但攻击者找到了绕过方法——利用VSCode的"信任发布者"机制。如果用户之前曾经信任过某个发布者的扩展,VSCode会记住这个选择并自动放行来自同一发布者的扩展安装。攻击者正是利用了这个信任传递逻辑,让恶意扩展悄无声息地通过安装验证。 扩展安装成功后,攻击者就获得了对用户GitHub令牌的完全访问权限。这个令牌是从VSCode的GitHub集成中提取的,具有读写用户所有私有仓库的权限。这意味着攻击者可以读取源代码、植入后门、甚至以受害者身份推送恶意提交。 从技术层面看,这个漏洞揭示了现代IDE安全架构中的一个根本性矛盾:为了提供丰富的扩展性和功能集成,IDE必须在安全边界上做出妥协。
相关事件
暂无数据
相关公司
暂无数据