虎嗅注:本文转载自微信公众号“caoz的梦呓”(ID:caozsay),作者:曹政。
别想歪,“脱裤”是一种俗称,其实是拖库,或者说,数据库被黑客整个拖下来。
其实我之前提到过Github敏感信息上传的风险,很不幸的是,同样的问题已经发生在我们身边。
你看,华住犯了同样的错误,因为数据库密码被传递到了Github上,数据被拖库,现在已经在地下黑市流通。想想看,几亿条开房记录,我还是华住会金会籍呢。要不要瑟瑟发抖呢?
今天简单说一下华住这个“脱裤”事件暴露的问题和防脱裤的几个原则。
1. Github信息脱敏
根据公开的一些截屏信息看,华住不仅仅是数据库密码被暴露(还是弱密码),而且连微信的appid 和secret也被暴露。黑客要是利用这个在官方微信公众号里发一条钓鱼信息,这得有多可怕啊。
代码使用Github我觉得不是说非要严格禁止,但代码脱敏是非常重要的,密码和关键信息是绝对不能放在公开代码里的。
2. 数据库应禁止外网IP
数据库应只保留内网端口,如果必须保留外网端口,应通过白名单策略,仅限指定服务器访问。
3. 数据中间层过滤
对于高安全性系统而言,程序代码应只访问中间层,只能在中间层以许可的逻辑访问数据库,中间层应能过滤一些危险操作,或只设置白名单操作。类似全库拖库的操作,应该是中间层所不能许可的,或者仅限于指定管理备份主机或仅限于最高权限管理账户,而程序是不能使用最高权限账户登录数据库的。
4. 密码严禁明文存储
不但要加密存储,还要不可逆加密;不但要不可逆加密,还要加盐;不但要加盐,还要加随机盐。
cmd5.com我以前说过,不“加盐”的不可逆加密,秒秒钟被彩虹库撞出来。
不理解为什么要随机盐的程序员都回去补课,这个问题必须理解透彻。
5. 敏感信息应混淆存储
敏感信息必须可逆,不能做不可逆加密,这是没办法的事情。
但信息混淆还是要做的,不能让黑客那么容易拿到。
当然,如果代码都公开了,在Github上都被人拿到了,混淆也是很容易被破解出来的。但怎么说呢,每一步都是增加黑客的入侵成本,提高黑客拖库门槛不是么?如果代码没公开而只是数据库被拖,那么敏感信息混淆还是很有意义的。
6. 任何企业的程序员入职,都应该有信息安全培训
拖库的可能性,想到哪里写到哪里:
这种Github密码泄露,惨剧挺多的了已经。
内鬼。
SQL注入,惨剧也极多,而且经久不衰。
服务器被其他原因入侵,连带数据库被拖。
研发或运维的个人电脑被入侵,植入木马。
备份服务器安全策略不当,或者第三方备份系统出问题,也包括数据分析服务器,很多时候这就是个意识问题,觉得反正不是线上业务,随便跑跑数据。
云穿透,云主机现在太流行了,虽然暂时案例可能没有,风险还是存在的,而且一出问题肯定不小。
授权滥用,比如第三方接口给的权限太高,或者没注意到授权验证逻辑上的风险。
报废服务器处置不当,硬盘被人数据修复什么的,别说异想天开,只要资料有价值,就有人会琢磨这些;有些公司业务关停,二手服务器批量出售,如果处理不当,这个风险还是有的。
基于社工,拿到数据库密码,比如微信上假冒技术总监找运维工程师要到密码。
嗅探侦听,通过sniffer拿到管理员密码入侵服务器。不过现在应该没有管理员用telnet了吧。
钓鱼,比如机房如果安全配置很扯淡,在同机房内搞个服务器,弄个ARP欺骗,把管理员骗到蜜罐里,密码轻松到手。
先想到这些。有其他的欢迎留言补充。