左耳听风_005_04_从Equifax信息泄露看数据安全

你好,我是陈浩,网名是左耳朵house.嗯,上一课呢我们讲的acrofiice信息泄露的始末,并且对造成这次事件的漏洞进行了分析。

那今天呢我们就来一起回顾一下互联网时代的其他几次大规模的数据泄露事件。

我们会一起分析事件背后的原因,并给出解决这类安全问题的技术手段和发生。

那类似于eco fise这样的大规模数据泄露事件,在互联网时代时不时的会发生上一次这么大规模的数据事件,主角应该是雅虎。

雅虎在二零一三年就发生过一次大规模的数据泄露。

然后在那后呢呢,在二零一四年又又遭遇攻击,泄露出了五亿用户密密码。

直到二零一六年,有人黑市公公交易这些数据的的时候,才被众众知。

雅虎的股价呢在事件爆出的第二天就下跌了二点四。个点,而这次ec o fiice的股价下跌超过百分之三十,市值缩水约五十三亿。

啊,这让各大企业不得不警惕。

嗯,还有另一件类似的事情,个电影二零一二年也泄露了六千五百万的用户名和密码。

而事件发生之后呢,linlink电影为了亡羊补牢,及时阻止了被黑账户的登录,强制被黑的用户去修改密码,并且改进了登录措施,从单位认证增强为带短信验证的两步认证。

国内呢也有类似的事情。

二零一四年,携程网安全支付的日志爆出了漏洞,导致大量的用户信息,比如姓名、身份证号、银行卡类别、银行卡号、银行卡CVV码等等,信息都泄露了。

而这就意味着,一旦这些信息被黑客窃取在网络上,盗刷银行卡消费,将易路反掌。

如果说网络运用安全是一道防线,那么社会工程学攻击则可能攻破另一道防线,那就是人。

二零一一年ISC公司声称,他们被一种复杂的网络攻击所侵害。

起因呢是有两个小组的员工收到了一些调阅邮件,邮件的附件是带有恶意代码的excel文件。

那当一个REC员工打开这个excel文件的时候呢,恶意代码就攻克了adobe flash中的一个漏洞。

这个漏洞让黑客可以用poison IV远程管理工具来取得对机器的管理权,并且访问ICA内网中的服务器。

那这次攻击主要威胁的是secure ID系统,最终导致了IC的母公司EMC花费了六千六百三十万美元来调查加固系统,并最终召回和重新分发了三万家企业客户的secure ID卡片。

以这些公司为例子,我们来看看这些攻击是怎样实现的。

第一呢是利用程序框架或者库的已知漏洞。

比如这次achifice被攻击,就是通过apache struss的已知漏洞。

Rsc被攻击,也利用用adobe flash的已知漏洞。

还有之前的心脏流血也是使用了open SSL里面的漏洞。

第二呢是暴力破解密码呃,利用密码自检库或者是已经泄露的密码来装库。

第三种方式呢是代码的注入,通过程序员代码的安全性问题,比如sql注入啊叉SS攻击啊,CSRF攻击等等方式去取得用户的权限。

第四种方式是利用程序日志不小心泄露的信息。

那携程的信息泄露就是本不应该被读取的日志,没有权限保护,被读到了。

呃,第五种方式是社会工程学,那ISA被攻击被突破的防线啊,就是人,也就是IC的员工。

所以只有员工的安全意识增强了,才能抵御这一类攻击。

而其他的比如钓鱼攻击啊,也属于此类。

除了表面的攻击以外呢,窃取到的信息也暴露出来。

一些数据管理上的问题。

第一个问题是只有一层安全嗯,actifice只是被黑客er攻破了管理面板和数据库,就造成了数据泄露。

那显然这样只有一层安全防护是不够的那第二个问题呢是使用的密码强度太弱acco fze数据泄露事件啊,绝对是管理的问题。

那至少密码系统应该不能让用户设置像admin这么简单的密码,而且我们还要定期更换它。

最好的方式呢是通过数据证书VPN双因子验证的方式来登录。

呃,第三个问题呢是向公网暴露了内部系统在公司网络管理上出现了非常严重的问题。

那第四个问题呢,是系统没有及时打安全补丁,主动监控业内的安全漏洞事件,及时做出响应。

这是一个有高价值数据公司都需要干的事儿。

第五个问题是安全日志被暴露了,安全日志往往包含大量的信息,那被暴露是非常危险的那携程的CVV被泄露了啊,就是因为从暴露的日志中被读到了第六个问题呢是保存的不必要保存的用户数据。

那携程保存的用户的信用卡,那临时可保存CVVV码。

那这些信息足以让有些别用用心的人在网上盗刷信用卡。

那其实对于临时支付来说呢,这些信息完全可以不保存在磁盘上,临时在内存中处理完毕。

利益销毁是最最安全的做法。

那即便是快捷支付呢,也没有必要去保存CVVV码,那安全日志呢也没有必要将所有的信息都保存下来。

那比如卡号就可以只保存后四位,同样可以用于处理程序故障。

那最后一个问题呢是密码没有被合理的散略。

以现在的安全观念来说,以铭文方式保存密码是很不专业的做法。

那进一步的做法呢是只保存密码的散列值,呃,令就是这样做的。

但是散列第一点是需要用目前工人安全的算法,比如杀兔二五六。

而已知被攻破的算法,比如说MD五就最好不要使用。

第二点呢是要加一个安全的随机数,作为盐,link呢问题正在于于没有加盐导致的密码,可以通过预先计算的采用表反查出明文这些密码明文可以用来做什么事儿就不好说了,撞库什么的都有可能。

那对咱们用户来说呢,最好是不同网站不同的密码。

我们再来看看安全专家的建议。

Contract security是一家安全公司。

他的CTO jeff williams在博客中表示,虽然说最佳实践是确保不使用有漏洞的程序库,但现实中并不容易做到这一点,因为安全更新来的比较频繁。

Williams在博客中写道,和为了做这些安全性方面的更改,经常需要重新编写的重新测试和部署整个应用程序,而整个周期可能要花费几个月。

我最近和几个大的组织机构聊过,他们在应对CVE二零幺七五六三八这件事上花了至少四个月的时间。

啊,即便是在运营的最好的组织机构里,从漏洞发布到应用程序更新之间,也经常有几个月的时间差。

那阿帕奇strust的副总裁reay jaan在阿帕奇软件基金会的官方博客中写道啊,为了避免被攻击,对于使用了开源或者闭源的知识性、程序库的软件产品和服务。

啊,建议遵从以下的五条最佳实践。

第一条呢是要理解你的软件产品到底使用了哪些知识性的框架和库,他们的版本号分别是多少?我们要时刻跟进影响这些产品和版本的最新安全性。

声明。

第二条呢是我们需要建立一个流程来快速的部署,带有安全补丁的软件产品发布版。

那这样呢一旦有一些知识性的框架和库,需要安全方面的更新,就可以快速的发布,最好能在几个小时或几天内完成,而不是几周或者几个月。

我们发现绝大多数被攻破的情况,都是因为几个月甚至几年都没有去更新有漏洞的软件和组件而引起的。

第三条呢是所有复杂的软件都有漏洞,所以不要基于知识性软件的产品没有安全漏洞这样的假设来建立安全策略。

第四条最佳实践呢是我们要建立多个安全层,在一个面向公网的表示层后面,要建立多级安全防护层,这样才是一种比较良好的软件功能实践。

这样就算表示层被攻破了也不会直接提供出重要的后台信息资源的访问权。

最后呢就是针对公网资源建立对异常访问模式的监控机制,现在已经有很多侦测这些行为模式的开源和商业化产品了啊,一旦发现异常访问就能发出警报。

作为一种良好的运维实践,我们建议针对关键业务的网页服务应用,一定要有这些监控机制。

在jelan提的第二点中呢,说到理想的更新时间是在几个小时到几天。

我们知道作为企业部署的一个版本的程序库,在更新前是需要在测试系统上测试各个业务模块,确保兼容以后才能上线的。

否则盲目上线一个新的版本。

一旦遇到不兼容的情况,业务就会部分停止,甚全部停止,给客户留下不良的印象,经济损失将是不可避免的。

所以这个更新周期呢,必须通过软件工程的手段来保证一个有利的解决方案呢是自动化测试。

对于那些以数据库为基础的程序库,需要专门设置初值全空的测试,用数据库来进行API级别的测试。

那对于UI框架呢,我们需要使用UI自动化测试工具来进行自动化的测试。

测试在原则上必须要覆盖上层业务模块的所有需要功能,并对兼容性加以验证。

业务模块需要连同程序库一起做集成的自动化测试,同时呢也有单元测试。

当然生前的人工测试也是有必要的啊,但是因为安全性更新通常比较紧迫,所以覆盖主要和重要的路径就可以了。

那如果测试发现有不兼容的情况,没有办法立即升级。

那么要考虑的第二点呢,就是缓解测试。

比如能不能把有漏洞的地方禁用掉,同时不影响业务呢?那如果不可行,那么是否可以通过部的设置来把一定特征的工器载荷挡在门外呢?啊,当然这些都是临时的解决方案,需要等开发部门更新业务程序,让他能用新面本的库之后呢,才能上线新版本的应用程序。

除了刚才所说的那些安全防范的方法呢,我想在这里再加一些我自己的经验。

从技术上来说呢,安全防范最好是要连自己内部的员工都能防。

因为无论是程序的bug还是漏洞,都是为了取得系统的权限而获得数据。

如果我们连自己内部人都能防的话,那么就可以不用担心绝大多数的系统漏洞了。

当然所谓家贼难防啊,如果要做到这一点,一般来说有这样一些方式。

首先我们需要把我们的关键数据定义出来,然后呢再把这些关键数据隔离出来,隔离到一个安全级别非常高的地方。

所谓的安全级别非常高的地方,就是这个地方需要有各种比如安全审计、安全监控、安全访问的区域。

呃,一般来说呢在这个区域内,我们需要保证这些敏感数据只进不出我们提供服务接口,让别的系统只能在这个区域内去操作这些数据,而不是把数据传出去,让别的系统在外部来操作这些数据。

比如用户的手机号就是敏感信息。

如果有外部系统需要使用手机号啊,一般来说就是想发个短信。

那么我们这个掌管手机号数据的系统呢,就可以对外提供一个发短信的功能,让外部系统去通过UID啊或者是别的抽象字段来调用这个系统的发短信的API啊,信用卡也是一样,我们提供信用卡的扣款API,而不是把卡号返回给外部系统。

另外如果业务一定要我们返回用户的数据,那一般来说可能是最终用户需要读取自己的数据。

那这种情况呢,对于像信用卡这样的关键数据,是死也不能返回全部数据的啊,只能返回一个打码的数据。

也就是说我们要隐藏掉部分信息,就算需要返回一些数据,也需要我们在传输层上加密返回。

而用户加密的算法一定要采用非对称加密的方式。

而且呢还要加上密钥的自动化更换机制,比如在外部系统调用一百次,或者每个小时之后呢,就自动更换一下加密的密钥。

那这样呢整个系统在运行时就是完全自动化的了。

而且就算黑客得到了密钥,密钥也会过期。

那这样呢我们就可以控制泄露范围了。

那通过这些手段呢,我们就可以把数据控制在一个比较小的区域内了。

而在这个区域内呢,我们依然会有相关的内部员工可以访问。

所以这个区域中的数据也是需要加密存放的,而加密使用的密钥则需要放在另外一个区域中。

也就是说,被加密的数据和用于加密的密钥是由不同的人来管理的。

有密钥的人没有数据,有数据的人没有密钥。

那这两拨人可以有访问自己的系统的权限,但是没有访问对方系统的权限。

那这样可以让两拨人互相审计,互相牵制,从而呢提高数据的安全性。

举个例子啊,我可以让这两拨人来自不同的公司。

而密钥呢一定要做到随机生成,最好是对于不同的用户数据有不同的密钥,而且时不时的就能自动化更新一下,这样就可以做到内部防范了。

嗯,这里呢要注明一下,按道理来说,用户自己的私钥应该由用户自己来保管,公司的系统是不能存的。

如果用户需要更新密钥的话,就需要对用户做身份的鉴别,可以通过双因子认证,也可以通过更为严格的物理身份验证。

比如银行就需要我们去柜台拿身份证去重置密码。

最后一点,每当这些关键信息传到外部系统的时候,都需要做通知,最好是通知用户和自己的管理员。

并且呢我们要限制外部系统的数据访问量。

一旦超过访问量呢,我们需要报警或者是拒绝访问。

嗯,上述的这些技术手段都是比较常见的做法,虽然也不能确保百分之百防住,但基本上来说呢已经将安全级别提到非常高了。

不管怎么样啊,安全在今天是一个非常严肃的事儿,能做到绝对的安全基本上是不可能的。

我们只能不断的提高黑客入侵的门槛。

当门槛提到黑客的投入和收益相差很大的时候呢,黑客也就失去了入侵的意义。

此外呢安全还在于风控任何系统。

就算你做的再完美,也会出现数据泄露的情况。

只是我们可以把数据泄露的范围控制在一个什么样的比例。

而这个比例呢就是我们的风控最谓在安全方案呢基本上来说就是能够把这个风险控制在一个很小的范围。

那对于在这个很小的范围里出现的一些数据安全的泄露呢,我们可以通过风控基金来做业务上的补偿,比如赔偿用户损失啊等等。

因为从经济利益上来说呢,就算我们把风险控制的非常小,但是控制的成本远高于我赔偿它的成本,那么我还不如赔偿。

最后呢,如果你还有什么样的问题或者心得,欢迎在留言区和我交流。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值