HeadlinesBriefing HeadlinesBriefing.com

我如何在谷歌发现90,000美元远程代码执行漏洞

Hacker News •
×

一位安全研究人员在谷歌的开发者文档站点中发现了一个远程代码执行漏洞。在梳理这些站点共享的OAuth流程时,研究人员注意到 /oauth2authorize 端点设置了一个异常大的Flask会话Cookie,约为1,200字节,远超CSRF令牌和返回URL所需的大小。Flask会话Cookie经过签名但未加密,因此任何持有该Cookie的人都可以读取其内容。

解码该Cookie后,研究人员发现其中有一个经过pickle序列化的对象,以明文形式包含谷歌的OAuth client_id和client_secret。研究人员还发现,该client secret同时也被用作Flask的SECRET_KEY,意味着同一个值既用于持有又用于验证签名。由于签名密钥暴露在Cookie本身之中,研究人员能够离线重新计算有效签名,并伪造任意会话数据。

回调端点从会话中读取OAuth流程数据并将其传递给pickle.loads。借助伪造的会话,攻击者可以提供恶意的pickle载荷,从而形成一条无需身份验证的远程代码执行路径。研究人员使用仅触发time.sleep的载荷安全地验证了该问题,避免了在谷歌的生产系统上执行任何命令。

此次发现表明,将机密信息存储在客户端会话数据中,以及对不可信的pickle数据进行反序列化,可能相互叠加,形成严重漏洞。该漏洞获得了90,000美元的赏金。

来源: Hacker News · 由HeadlinesBriefing整理摘要