包括Google Docs在内的许多谷歌产品都有"Send feedback"或"Help Docs improve"的选项,允许用户发送包含截图的反馈来改善产品。该反馈特征部署在谷歌的主网www.google.com,并通过iframe元素集成在其他域名中,在iframe元素可以从feedback.googleusercontent.com 加载弹窗内容。
试想我们使用Google Docs (https://docs.google.com/document) 并提交一个反馈。点击Help--> Send Feedback 后,就可以看到弹出的弹窗加载了文档的截图。Iframe的源(www.google.com) 与Google docs (docs.google.com)是不同的,因此要成功提交该截图必须要进行跨域通信。实际上,Google docs会通过postmessage发送每个像素的RGB值给www.google.com,然后再通过postmessage重定向这些RGB值到其iframe feedback.googleusercontent.com,然后从像素的RGB值渲染图像,并将base64编码的数据URI发送回主iframe。
这一过程完成后,要写一个feedback的描述,并点击发送描述和图像到https://www.google.com。
研究人员Sreeram在消息发送到feedback.googleusercontent.com的过程中发现了一个安全漏洞,攻击者利用该漏洞可以修改frame未任意的外部网站,因此,可以窃取和劫持要上传到谷歌服务的Google Docs截图。
漏洞产生的原因是Google Docs域名缺乏X-Frame-Options header,因此有可能修改消息的目标源(target origin),并利用页面和frame的跨域通信来实现攻击。
该攻击是需要用户交互的,比如点击“send feedback”按钮,漏洞利用可以获取要上传的截图并窃取和发送到恶意站点。攻击者只需要将Google Docs文件嵌入到虚假/恶意网站的iframe就可以劫持feedback弹窗来重定向内容到攻击者控制的域名。
POC视频参见:https://www.youtube.com/embed/isM-BXj4_80
更多技术细节参见:https://blog.geekycat.in/google-vrp-hijacking-your-screenshots/
本文翻译自:https://thehackernews.com/2020/12/a-google-docs-bug-could-have-allowed.html