据外媒报道,知名网络优化服务(CDN)提供商 CloudFlare 最近遭遇了一起严重的泄露事件,包括 cookies、API 键值、以及密码等在内的许多敏感个人信息被曝光。另据昨晚一篇博文的详细披露,该公司为数百上千万个互联网站点提供 SSL 加密。虽然 CloudFlare 当前暂未证实这批信息被恶意利用,但搜索引擎上的部分缓存又是另一个问题。
2 月 18 号的时候,在谷歌 Project Zero 安全小组工作的 Travis Ormandy 最先在 Twitter 上爆料了此事。但实际上,这个缺陷或许可以追溯至去年 9 月 22 号。
CloudFlare 表示,规模最大的一次信息泄露始于 2 月 13 日,当时发生的代码异动表明每秒 3,300,300 次的 HTTP 请求可能导致了内存溢出。
在被缓存的数据中,Ormandy 看到了某约会站点上的预订酒店和密码等完整信息。他在 2 月 19 号写到:
我不知道 CloudFlare 背后究竟有多少互联网站点,直到发生了这件事。这包括完整的 https 请求、客户端 IP 地址、完整的响应、cookies、密码、键值、日期等一切内容。
在 Ormandy 发布了推文之后,CloudFlare 工程师禁用了导致出现问题的三项功能代码,并与搜索引擎方携手清理缓存信息。
据了解,Cloudflare 的 EmailObfuscation、Server-SideExcludes 和 AutomaticHTTPS Rewrites 这些函数正是此次泄露的罪魁祸首。
这家公司决定为其边缘服务器开发一个新的 HTML 解析器时,问题就出现了。该解析器是使用 Ragel 编写的,随后转变成机器生成的 C 代码。这段代码存在页面上不成对出现的 HTML 标签触发的缓冲区溢出安全漏洞。这个有缺陷的指针检查源代码本该阻止程序覆盖内存内容:
/*generated code. p = pointer, pe = end of buffer */
if( ++p == pe )
goto _test_eof;
结果发生的一幕是,在别的地方,p 变得大于 pe,因而避免了长度检查,让缓冲区得以溢出额外的信息。这最终导致了 Web 会话泄露。
本文来自开源中国社区 [http://www.oschina.net]