一篇文章带你看懂cloudflare信息泄露事件

偶素浅小浅 偶素浅小浅     2022-08-23     255

关键词:

版权声明:本文由贺嘉   原创文章,转载请注明出处: 
文章原文链接:https://www.qcloud.com/community/article/753847001488039974

来源:腾云阁 https://www.qcloud.com/community

 

1.问题描述

近期根据Hacker News的报道,以及国际CDN厂商cloudflare的公告,我们注意到了一起敏感信息、API 密钥被Cloudflare泄露给了随机的 requesters请求,同时相关敏感数据也被搜索引擎给收录的问题。

这一问题持续了 2016-09-22至 2017-02-18近半年时间,最为严重的阶段是2-13至2-18 每 3,300,000 HTTP 请求就有可能泄露一份内存数据(近总请求量的0.00003%),预计是100k-200k 页面涉嫌数据泄露。包括uber在内的一系列知名互联网企业可能受到影响。

以下是可能受到这一问题影响的网站清单:
https://github.com/pirate/sites-using-cloudflare/blob/master/README.md

2.信息泄露问题原因

Cloudflare CDN服务 会对 HTML 标签进行重新解析,比如将 Google Analytics的标签插入到HTML中, 安全地重写 http:// 链接成为 https://, 模糊email邮箱地址等等。但是由于 NGINX 模块中的HTML 解析功能存在指针问题,导致在用户之间共享的反向代理存在信息泄露问题,最早是由 Google’s Project Zero 的研究员 Tavis Ormandy发现。

之前Cloudflare的HTML解析一直使用标准的 Ragel 有限状态机编译器( www.colm.net/open-source/ragel/),但是前段时间Cloudflare为了提升代码效率对解析器进行了升级,将其升级为 cf-html并测试了其对HTML5的解析是没有问题的。但是问题出在了开发团队错误的使用了 Ragel的编码规范,Ragel的代码会被自动编译为C语言的代码,而C语言允许更加灵活的使用指针。
/ generated code /
if ( ++p == pe )
goto _test_eof;
以上Ragel自动生成的代码会导致指针越界,也就是常见的内存泄露问题。但是之前Ragel实现的HTML 解析模块单独使用并不会触发信息泄露问题,而是仅当基于Ragel 解析器与Cloudflare 升级 后的cf-html解析器一起工作的时候才会触发这一问题。

3.解决方案

3.1迁移至腾讯云CDN

腾讯云CDN领取免费体验
提供基于角色的CDN权限控制,并且支持以API接口方式调用。同时新用户开通CDN即连续6个月,每月赠送50G流量包。

* 财务管理员
* 超级管理员
* 云资源管理员

超级管理员拥有创建者的所有权限,可以进行其他子用户的分配;而云资源管理员拥有对所有云资源的管理权限,但不可以创建其他子用户。部分功能仅能够供预设管理员使用,具体如下:

* 使用云API DescribeCdnHosts 获取账户下所有域名详细信息;
* 使用云API UpdateCdnProject 或在 CDN控制台 进行域名所属项目的切换;

项目管理员除了预设管理员外,还可以按照项目维度划分权限,即项目管理员。项目管理员可以管理指定项目中所有的云资源。
项目管理员可以通过自定义策略 中服务类型为项目管理的策略进行指派,该策略拥有两个功能:

* 管理 CDN 业务项目内云资源
* 管理其他业务项目内云资源

3.2考虑在你的应用中实现Keyless(无密钥加载)架构

对证书稍微熟悉的朋友都知道,SSL 密钥和证书都是成对使用的,一个证书一定唯一对应一个私钥。整个 HTTPS 最重要的一个数据就是 SSL 的私钥了,如果私钥泄露,整个握手过程就可以被劫持,签名可以被伪造,对称密钥也可以被破解。整个 HTTPS 就毫无安全可言。
传统的私钥使用方案和风险传统的私钥方案就是将私钥和应用程序绑定在一起。比如大家熟知的 nginx, apache,如果想使用 HTTPS,必须在部署 nginx 的接入机器上部署相关的证书和私钥。

技术分享

这种方案会有如下安全上的问题:私钥部署在云端或者 CDN,如果泄露了怎么办?
无秘钥方式虽然腾讯云的内网非常安全,但是出于对客户的安全负责,彻底打消用户对私钥泄露的顾 虑,确保用户对私钥的绝对控制,腾讯云提供一种无私钥的加载方案。这个方案核心是「不需要把私钥存储在腾讯云,允许用户使用自己的服务器保管私钥,完成 HTTPS 的接入」。 腾讯云完全接触不到私钥,客户甚至可以把私钥保存在自己家里的服务器上。
它的接入过程如下:

1. 用户发起 HTTPS 握手请求。
2. 在涉及到私钥计算的时候,腾讯云 CLB 会将这个私钥计算请求通过加密的自定义协议,转发给用户自己的 keyless 服务器上。
3. keyless 服务调用用户的私钥完成计算。
4. keyless 服务将计算结果返回给腾讯云 CLB。
5. CLB 继续进行 HTTPS 请求的处理。

整个过程,腾讯云接触不到 HTTPS 私钥,需要注意一点的,keyless server 是腾讯云提供一个服务端程序,代码开源,用户自主部署,服务端行为用户掌握得一清二楚。

技术分享

总结来说Keyless(无密钥加载)架构可以更好的实现用户的私钥安全性,但是会对于开发者而言增加一次网络交互,一般来说100-200ms的网络延时,除非是对于安全性有非常高要求的应用,才会考虑这一方式,是用腾讯云的这一架构需要和我们的技术人员单独沟通以明确需求。

4.参考资料list

https://www.qcloud.com/document/product/228/6689

https://www.qcloud.com/community/article/207618001486449512

List of Sites possibly affected by Cloudflare‘s
https://github.com/pirate/sites-using-cloudflare/blob/master/README.md

report of bugs
https://bugs.chromium.org/p/project-zero/issues/detail?id=1139

Incident report on memory leak caused by Cloudflare parser bug
https://blog.cloudflare.com/incident-report-on-memory-leak-caused-by-cloudflare-parser-bug/

 















带你看懂他(代码片段)

数据结构中的堆:(Heap)一、堆的概念:二、堆的操作:1、向下调整(小堆为例)2、向上调整(大堆为例)3、建堆:三、堆的应用:1、堆排序2、TopK3、优先级队列(PriorityQueue)一、堆的... 查看详情

一分钟带你看懂公有云和私有云的区别

私有云和公有云的显著差别在于对数据的掌控。只需一分钟,下面几张图就能让你看懂公有云和私有云的本质区别。私有云和公有云的显著差别在于对数据的掌控。采用公有云服务的企业必须将数据托管于云服务商的数据中心,... 查看详情

深入浅出丨带你看懂数据可视化「美」的历程

深入浅出丨带你看懂数据可视化「美」的历程古人说:“人不可貌相”,但从古至今,人类却是一群感性动物,容易受到外在表象影响,先感性才理参考技术A深入浅出丨带你看懂数据可视化「美」的历程古人说:“人不可... 查看详情

全干货5分钟带你看懂docker!

...本文从Docker定义,作用,技术架构,安装和使用等全方位带你看懂Docker。Docker是啥?打开翻译君输入Docker结果显示码头 查看详情

三个问题带你看懂多核并发框架skynet源码

三个问题带你看懂多核并发框架skynet源码|actor是什么?actor怎么调度?actor跟网络怎么绑定?专注于服务器后台开发,包括C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,Mo 查看详情

百万奖池角逐,华为云iot边缘带你看懂“边缘计算开发者大赛”

摘要:2022年9月1日,第二届边缘计算开发者大赛正式启动。2022年9月1日,第二届边缘计算开发者大赛正式启动!本届大赛由华为云参与承办,中国信息通信研究院、工业互联网产业联盟、边缘计算产业联盟共... 查看详情

一文带你看懂全志v853开发板原理图(代码片段)

...开发,本文将对开发板几个主要部件的原理图进行说明,带你一文看懂V853开发板原理图。开发板硬件框图GPIO分配此表格为V853部分重要 查看详情

分类vs标签,一文带你看懂数据中台为什么要建标签体系?

...自行订阅,你的支持就是我不断更新的动力哟!MATLAB-30天带你从入门到精通MATLAB深入理解高级教程(附源码)tableau可视化数据分析高级教程因此,有专家吐槽:“现在讲啥数据标签,数据类目,跟SAPCl 查看详情

超强超详细redis入门教程

转载自:http://www.h5min.cn/article/56448.htm这篇文章主要介绍了超强、超详细Redis入门教程,本文详细介绍了Redis数据库各个方面的知识,需要的朋友可以参考下【本教程目录】1.redis是什么2.redis的作者何许人也3.谁在使用redis4.学会安... 查看详情

一篇带你看懂flutter叠加组件stack(代码片段)

注意:无特殊说明,Flutter版本及Dart版本如下:Flutter版本:1.12.13+hotfix.5Dart版本:2.7.0StackStack组件可以将子组件叠加显示,根据子组件的顺利依次向上叠加,用法如下:Stack(children:<Widget>[Container(height:200,width:200,color:Colors.red,)... 查看详情

一篇带你看懂flutter叠加组件stack(代码片段)

注意:无特殊说明,Flutter版本及Dart版本如下:Flutter版本:1.12.13+hotfix.5Dart版本:2.7.0StackStack组件可以将子组件叠加显示,根据子组件的顺利依次向上叠加,用法如下:Stack(children:<Widget>[Container(height:200,width:200,color:Colors.red,)... 查看详情

十分钟带你看懂比特币的运行原理

有一种货币目前价值成百上千美元,但不是由金子、铂金或任何贵重金属制造的,这就是比特币,那么比特币的原理是什么呢?针对不方便打开视频的小伙伴,CDA字幕组也贴心的整理了文字版本,如下:假设有一种货币目前价值... 查看详情

10个问题带你看懂composemultiplatform1.0(代码片段)

近日JetBrains正式发布了ComposeMultiplatform1.0版,这标志其在生产环境中使用的时机已经成熟。相信有不少人对它还不太熟悉,本文通过下面10个热门问题带大家认识这一最新的跨平台技术。FAQ:与JetpackCompose的关系?是否... 查看详情

一篇文让你看懂nb-iotloraemtcsigfox及zigbee的应用场景

转自:https://blog.csdn.net/nicholas_dlut/article/details/81051269 查看详情

漫画|一图带你看懂云原生

福利时刻QECon2021全球软件质量&效能大会留言送门票!关于软件研发效能,你有什么想说的,欢迎在评论区留言,我们会抽取10位小伙伴送上门票。 查看详情

5分钟带你看懂prettier+eslint搭配(vscode)(代码片段)

    最近身边不少朋友在用eslint和prettier搭配的时候,总是遇到一些莫名其妙的报错,自己也不知道怎么配,所以我总结了一下自己搭配的步骤,分享一下,如有不对之处,静请诸位大佬雅正!    ... 查看详情

一文带你看懂atm的应用权限访问控制能力

1.背景随着智能终端时代的到来以及各类智能终端产品的日益普及,社会对于隐私保护意识也大幅提升,保护用户个人数据和隐私的安全已成为操作系统的核心功能之一。而应用权限访问控制就是系统保障用户隐私和数据... 查看详情

带你看论文丨全局信息对于图网络文档解析的影响

摘要:文档理解着重于从非结构化文档中识别并提取键值对信息,并将其输出为结构化数据。在过往的信息提取中,大多数工作仅仅只关注于提取文本的实体关系,因此并不适用于直接用于文档理解上。本文分享... 查看详情