由 Linkedin 数据库泄漏引发的思考

阅读数:2708 2012 年 6 月 28 日

话题:数据库安全DevOps语言 & 开发架构文化 & 方法

编者按:由 InfoQ 主办的全球架构师峰会将于 2012 年 8 月 10 日 -12 日在深圳举行,为了更好地诠释架构的意义、方法和实践,InfoQ 中文站近期会集中发布一批与架构相关的文章,本篇即为其中之一。InfoQ 也欢迎读者亲身参与到本次全球架构师峰会中,与来自国内外的顶尖架构师进行面对面的交流。报名参会请点击这里

事件回放

上周三晚上(6 月 6 日),知名专业社交网站 LinkedIn 爆出部分用户账户密码失窃,LinkedIn 主管文森特·希尔维拉(Vicente Silveira)在其个人博客中证实了此事。根据 Venturebeat 的报道,650 万被偷窃的 LinkedIn 账户密码列表已经被上传至一家俄罗斯黑客服务器,但目前尚不能确认是否只是 650 万的用户帐号被窃。

备注: 截取来自百度百科的简介:

LinkedIn 是一家面向商业客户的社交网络(SNS)服务网站,网站的目的是让注册用户维护他们在商业交往中认识并信任的联系人,俗称“人脉”(Connections)。Linkedin 目前用户过亿,平均每一秒钟都有一个新会员的加入。其会员大约一半的成员是在美国,1100 万来自欧洲。

黑客是怎么做到的?

国内国外在近两年来,数据被窃事情不断频发,CSDN、索尼 PlayStation、Linkedin,这些攻击的具体细节至今没有对外公布过,那么我们大胆猜测下,黑客是怎么把黑手伸向用户数据库的?

安全的短板理论,最容易出问题的地方往往都是很细小的地方,可能你只是少打了个补丁,亦或者代码少写了个符号,当然也有种可能,黑客是拿着大锤去撬机房服务器。:)坏人的眼睛一直在盯着我们,一次错误就足以致命。

应该怎么做?

我们应该如何去防止这种事情发生呢? 进不来,进来了带不走,带走了用不了,纵深防御的思维可以得到体现。

进不来

想让黑客们进不来,那就需要知道黑客进来的入口在哪里?

  1. 对 web 服务器的攻击,信息获取的来源有工具扫描(nmap,nessus 等),Google hacking,信息获取的目的是为了获取更多的信息去攻击 web 端。
  2. 黑客对我们内网或者 vpn 进行攻击,企图通过办公网进入服务器。

如何控制住入口?

1. 制度

  • 开发遵循 SDL 开发流程,上线前进行安全测试,确保无安全问题再上线。
  • 不允许员工将办公邮箱去注册互联网网站账户。
  • VPN 或者其他第三方媒介的安全制度
  • 漏洞修复流程

2. 流程:

  • 通过 IDS,对黑客尝试入侵进行报警。
  • 定期对在线业务进行安全测试,并输出总结性报告
  • 内网(VPN)与服务器区隔离,或者有较强的安全认证。

业界有很多优秀的开源产品,比如 Acunetix Web Vulnerability Scanner,IBM APPscan 等。 开源类的有 Nmap,Nessus,Snort 等

带不走

黑客入侵后,为了获取更多的权限和以后的操作方便(例如带走大量数据),通常会进行进一步的提权或者是放置后门的操作。

在服务器上装好“后门”,就可以在夜黑风高的晚上对服务器数据进行偷窃,那么换位思考下,黑客偷窃会有什么样的行为?

  1. 首先会上传 web 木马,web 木马根据脚本会分不同的版本,但是每种恶意脚本中都会有关键字。
  2. 成功通过 web 木马控制服务器后,黑客会对服务器进行系统探测,比如 Linux 版本,权限,网络配置等等
  3. 熟悉服务器信息后,下一步就是基于黑客的目的而触发的行为,比如通过已控制的服务器去渗透其他服务器,或者入侵数据库,偷窃数据。
  4. 目的达到,清理日志,安装系统后门。

在上述每个行为都会有自己的特征行为,可以基于行为通过主机监控系统进行防范。

在入侵者的典型入侵环节上都设置相关的探头和监控点,比如当入侵者上传网页后门时,或者是使用木马时系统都会及时发出告警,又或者入侵者通过漏洞操作系统的 shell 进行入侵时,监控平台也会记录下所有操作,便于事后追查。

用不了

一:密码用不了

Linkedin 密码样本,加密方式为 SHA1,比起直接粗暴的明文要强很多,但是 SHA1 加密真的安全吗?很多人都意识中,认为标准的 hash 算法(md5 sha1 sha256 等)用于密码加密是安全的,这个是一个误区。我在网上截取了知名 GPU 破解工具破解指标对比表。

5000M c/s 可大约换算对应 20 亿条每秒,那么暴力去“撞库”,密码真的安全吗? 咨询了国内最大的密码破解网站的站长,他给出来的建议是非标准 hash+salt。

二:文件用不了

在互联网上,经常有人爆出某某绝密文件,某某公司财务报表等等,这些数据的价值无可非议,如何保证数据即使被偷窃也不会造成损失?推荐企业内部使用文件加密系统。

应急响应

假如数据库泄漏了怎么办呢? 于周四,Linkedin 发布声明:

http://blog.linkedin.com/2012/06/07/taking-steps-to-protect-our-members/

在此事中,Linkedin 在不断的去补救密码泄漏带来的负面影响。发布公告—> 限制被窃号码登录(止损)—> 引导用户修改密码—> 承诺整改。下面做了整理了一个表格,对 Linkedin 的应急响应做了梳理。

厂商

响应时间

处理方法

态度

Linkedin

事件发生到发布声明不超过12小时

引导用户在网站修改密码,不通过第三方媒介修改

承诺安全保护,在加密的密码上再加强验证

应急响应是门大学问,处理好可以达到亡羊补牢的作用,处理不好会带来更多的危机。

其他

帐号的强弱鉴定

CSDN 数据库泄漏以后,有好事之人把数据库进行热门密码匹配,出现了普通,文艺,2B 密码排行榜。这次也不例外,有人把 linkedin 的密码也做了下分析,如下图所示:

从图中可以看到,“link”是最容易被获取的密码,其次是“work”和“job”, 宗教如“god”、“angel”、“jesus”也是流行的密码主题。另外,数字串“1234”和“12345”也榜上有名。

在帐号体系中,1. 单点设置密码是有强密码策略,那么很多人就习惯性的去输入 1qazxsw2,完全符合策略,可是这个只能算大众强密码。2. 预防这种符合策略又不安全的密码,我们在帐号体系中有比较有效的方法防止自动化密码验证行为。

可是笔者担心的是,随着密码库泄漏的数量越来越多,不能在密码设置中去彻底解决弱密码问题,需依靠堵截自动化行为密码验证的行为难免百密一疏。

隐私保护

这次 linkedin 密码泄露的问题,衍生出了一个隐私问题,有关科技网站爆料,linkedin 的 IOS 客户端存在偷偷上传用户的日历,待办事件,通讯录或者还有密码信息,linkedin 的解释是上传一些非必要的数据,是为了做数据分析,更好地为用户服务,但是这个在隐私保护意识强的国外,无疑是会受到指责的,在 IOS 客户端中,Path 等也出现过这样的问题。不过都在被爆出来后迅速修复了。

我们不仅要保护我们的客户端没有危害用户隐私和密码明文存储的行为,而且要保护我们的用户不受到恶意程序的侵害,特别是在安卓平台下,未经用户允许,读取短信,图片,甚至是吸费的程序一直层出不穷。

尾声

安全无小事,仅靠网络安全工作者的努力是远远不够的,一方面我们在前行,另外一方面安全需要大家的参与和配合,这样黑客才无处遁形。 写完这篇稿子的时候,在微博上得知 last.fm 的数据库也泄漏了,在日益严峻的网络安全环境下,安全工作任重道远。

感谢腾讯大讲堂对本文的支持。


给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。