代码缺陷导致 CloudFlare 泄露大量客户站点的密码等私密信息

据外媒报道,知名网络优化服务(CDN)提供商 CloudFlare 最近遭遇了一起严重的泄露事件,包括 cookies、API 键值、以及密码等在内的许多敏感个人信息被曝光。另据昨晚一篇博文的详细披露,该公司为数百上千万个互联网站点提供 SSL 加密。虽然 CloudFlare 当前暂未证实这批信息被恶意利用,但搜索引擎上的部分缓存又是另一个问题。


ceacf03eddd0bb540b6cfaea90baf2b347db1dff

2 月 18 号的时候,在谷歌 Project Zero 安全小组工作的 Travis Ormandy 最先在 Twitter 上爆料了此事。但实际上,这个缺陷或许可以追溯至去年 9 月 22 号。

CloudFlare 表示,规模最大的一次信息泄露始于 2 月 13 日,当时发生的代码异动表明每秒 3,300,300 次的 HTTP 请求可能导致了内存溢出。


037e558f3448df7717f3a5b55f0b94b274cc6d8f

在被缓存的数据中,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]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值