NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

黑哥谈应用安全:技术的进步就是为了解决矛盾

  • 2014-02-23
  • 本文字数:4364 字

    阅读完需:约 14 分钟

如果你是安全圈内或安全圈周边人士,或者如果你不懂安全但经常看道哥的黑板报,你应该知道黑哥。这里直接借用一下道哥在黑板报对黑哥的介绍:

黑哥真正的 id 是 superhei,熟悉他的人喜欢叫他黑哥,也有无聊者直译为“超级黑”、“素破黑”。在黑客的圈子里,有无数叫小黑或者黑哥的,但在资深黑客的眼中,只有一个黑哥,就是 superhei。黑哥真名周景平,目前是国内知名安全公司 — 知道创宇 — 的安全专家。

黑哥的故事在黑板报的那篇《中国黑客传说》中已经从圈内人的角度进行了相当广泛的描述,这里就不做搬运了。在下面的采访中,黑哥分享了他对当前Web 程序漏洞、后门、用户体验和安全的矛盾、以及漏洞报告平台的一些观点。对黑哥研究的领域感兴趣的同学可以关注他的微博 @hi_heige ,阅读他的博客,以及来QCon 北京2014 大会上听他的演讲并跟他交流:)

InfoQ:目前市面上有很多开源的 Web 程序可以给站长免费使用,但这些 Web 程序似乎都有补不完的漏洞及后门,您觉得这是什么原因导致的?

黑哥:这个问题提得好,我们先说说“漏洞”。我们安全联盟站长平台在以往就预警过大量 Web 程序的漏洞,去我们论坛查看我们预警过的记录,你会发现很多程序都是著名的开源程序,而且经常是刚刚被曝光一个漏洞,没多久又被曝漏洞,感觉有“补不完的漏洞”。

追其原因我认为主要是如下几个方面导致的:

i、开源市场的混乱:开源直接意味着这是一个开放的环境,任何人或者组织都可以加入进来,这直接导致程序员的水平参差不齐,对安全知识的缺乏,跟不用说自主发现并尽可能的避免安全问题出现了。

ii、官方对安全问题的漠视:“没有绝对的安全”,这个是安全界里的真理,所以有漏洞其实是没什么可怕的,真正可怕的是官方的冷漠态度:对报告的漏洞不承认、不修复,或者偷偷修复不发公告、不告知用户,还有对漏洞报告者不尊重——更加不要说起码的感谢了!

iii、Web 程序厂商缺少“高富帅”,对安全没有投入或者投入不足,这也导致了一个漏洞修复几次还修复不彻底(刚刚发布补丁就被绕过)、“见洞补洞(针对 POC 修复漏洞)”等情况大量存在。

我们再谈谈“后门”的情况,这个与“漏洞”的区分主要是:“漏洞”是开发过程中无意识导致的,而“后门”是主观意识下“有意为之”的产物。从我们的工作经验来看,后门问题也是一个非常严峻的问题,主要有几个方面:

i、官方后门:主要目的是方便调试,比如后台认证代码里使用固定硬编码的密码,还有的本来就是“恶意”目的留下的,比如某些电商类程序——尤其是团购、淘宝客等程序。

ii、黑客入侵后留下的后门:这个主要原因就是官方自身网站安全不到位。有一个普遍的问题:黑客发现某应用程序的漏洞后,发现官方 demo 或者本身就用这套程序,然后直接用发现的漏洞入侵官方后,篡改提供下载的文件包,在里面植入后门程序。

另外这里有必要强调一点,就是这些问题不是“开源”导致的,很多商业的闭源代码的问题可能更多,尤其是后门问题。因为对于安全研究者来说,开源代码都比较容易发现后门或者漏洞,也可以及时告知用户并可以推出临时补丁进行防御。而“闭源”的显然不行,所以一旦有漏洞或者后门,可能带来的危害就更大!

InfoQ:开源厂商里面是否有类似“内鬼”一样的角色在其中制造后门?如果有的话,您作为资深安全人员,您有没有什么好的建议给那些开源厂商?

黑哥:这里不应该针对“开源厂商”,所有的厂商都是一样的。目前来看这种“内鬼”还是可能存在的,当然了,很多事情是我们没办法去确认的,对于厂商来说这个是“家丑”。比如我们最近发现一个“案例”,对于用户来说没有啥“危害”,在这里可以提一下:

我们发现某个程序厂商的更新里,有几个默认链接被篡改了,如“CNZZ( http://www.cnzz.cn/,山寨的 CNZZ)”被修改为一个小说网链接。由于这样的手法以前在上面提到的黑客留“后门”的时也会顺带修改一个链接做恶意 SEO,所以我们当时就怀疑是不是被黑客入侵了,当我们联系官方后,他们给我们的答案就是他们自己人修改的!内部问题对于厂商来说可以通过一些管理手段来避免,比如对上线的程序修改要经过多名技术主管确认等。

InfoQ:外界盛传您是漏洞挖掘的高手,现在的 Web 漏洞还像以前那么容易挖吗?主要集中在哪几类(漏洞类型)?

黑哥:对于 Web 程序来说,相比过去还是有一些进步的,而这些改变主要体现在几个大的厂商。比如 Discuz!,在我的印象里他们是最早招聘安全研究人员进行代码审计的,有专业安全人员加入后,产品的安全性一下就提升不少。也就是说对于大型的程序,有安全投入的程序挖掘难度是越来越高的。不过前面我们提到的,由于整体环境的混乱,导致目前来说 Web 漏洞挖掘的难度整体上是不高的,有的程序你看一眼就是“满眼都是漏洞”!漏洞类型基本常见的比如代码执行、文件包含、上传漏洞、SQL 注入、XSS 都很常见。

而对于互联网在线服务来说,由于各个甲方都推出了自己的安全应急响应中心,及安全部门人才及设备等的投入,网站是越来越安全。我在参与 TSRC(腾讯安全应急响应中心)中就深有体会,他们会根据白帽子们报告的漏洞研究后来改进自己的扫描器,这样可以对一些新上线的服务上线前就进行漏洞扫描并修复漏洞。这样上线后,漏洞挖掘的门槛就高了。从 TSRC 公布的统计数据来看漏洞类型主要还是集中在 XSS/CSRF 等。

InfoQ:前一段时间 Github 似乎被黑客成功入侵了,您是否有关注这次入侵行为,能否跟大家介绍一下细节?Github 的安全系数在同类网站中算高的吗?

黑哥:对于这个事情还是有所了解的,不过这里用“入侵”这个词是不妥当的!应该说是“安全检测”,因为 Github 还给漏洞发现者提供了 USD $4,000 的奖励。具体细节漏洞发现者 Egor Homakov 已经写一篇文章并发布了,而且好像已经被翻译成中文了(编辑注:这篇《从“黑掉Github”学Web 安全开发》不完全是原文的翻译,而是 @左耳朵耗子 针对 Egor 的原文进行的复述和补充),有兴趣的朋友可以自己去看看。大体上是他利用了 Github 上 OAuth 的 5 个“bug”组合后完美实现了这一“入侵”,这个案例也说明了一个千古不变的道理:“千里之堤,溃于蚁穴”。另外说明在攻防粒度高度细化的时代,各种攻击漏洞组合成为突破防线的主要手段。这句话的另外一个意思就是:Github 的安全系数是比较高的。现在他们也加入到了“漏洞奖励计划”的大浪潮了,我相信在更多专业人士的帮助下,他们的网站会越来越安全!

InfoQ:您觉得用户体验和网站安全哪个更重要?如果网站的负责人非常在意用户体验,作为安全人员您建议如何与其沟通?

黑哥:又是一个非常好的问题,不过也是一个比较大的问题!如果要细说可能可以直接做一次演讲了。

这个问题不光是网站才有,对产品都有这个问题。说到底就是“业务”与“安全”的问题。终极的“用户体验”一直都是产品“业务”追求的目标,而往往在安全防御的问题上可能影响到这一目标。一个简单的例子:图片验证码主要是防御一些程序发起的恶意行为,毫无疑问这个也给“用户体验”带来了麻烦!那么怎么去衡量两者的关系呢?这个问题一直有争论,很多人都认为“安全”应该服从于“业务”,因为他们认为没有“业务”,那么“安全”也就没有意义了!

单看上去是没有破绽的,这里有一个比喻:“业务”比喻为“钱”,“安全”比喻为“保险箱”。在一个环境比较公开的场合,那么他们逻辑是“钱”都没有你就没有必要买“保险箱”了,我只是想说这样的人可能一辈子都只能是“屌丝”。换个角度,你的“钱”再多,如果你的“保险箱”连扫地的阿姨都能开……所以这个问题是没有绝对的答案的!

比较科学的方法,首先你得有“安全”意识,而不是一股脑的“脑残式”追求所谓的“用户体验”,而完全不顾安全问题。换个方式也可以说:“产品安全也是一种用户体验”!有了这种觉悟,然后你要根据你的资产,或者说用户资产去采用合适的安全保护方案。

不过在实际操作中,很可能出现一些特别针对性的矛盾问题:有个非常 nice 的用户体验,一旦实现就可能出现安全漏洞。那么怎么解决这个“矛盾”?这里提一下我个人的观点:在我看来技术的进步就是为了解决矛盾的!现有的技术水平可能没办法解决掉这个问题,那么有没有其他方式可以保障两者尽可能的平衡?当然技术的投入也是要看成本评估的。

那么我们怎么让 boss 们重视安全呢?这里推荐一下 MS 推出的 SDL 流程,这个流程的第一个环节就是“教育 boss 们”,赢得 boss 的支持。要“教育”boss 们不是一件容易的事情,目前很多情况都是被“安全事件”曝光来推动的,这个是现状也没办法。不过对于一个企业安全人员来说,你首先应该尽可能的把安全问题危害科普化的详细描叙给你的 boss(因为 boss 们不一定理解安全),如果 1-2 次没效果,你可以反复多提几次,所谓“尽力而为”,一旦有对应事件出现,那么 Boss 就可能马上想到你提的各种建议:)

InfoQ:您在腾讯漏洞报告平台的排行榜上常年雄踞榜首,并获得高额奖金,您对此有何想法?

黑哥:其实奖金奖品不是我最看重的,我个人有一个常年坚持的目标:“把我的想法,尽可能都实践一把!”

谈到各大漏洞报告平台,不得不先提乌云漏洞报告平台。乌云的出现直接导致了各大甲方的觉悟,首先成立的是腾讯的 TSRC 漏洞报告平台。由于那段时间我一直在学习并思考《负责任的漏洞披露过程》,对甲方的这种平台建设有一些想法,那么我当时就参与到了 TSRC 漏洞报告活动里。在前期的交流里,我发现了很多问题和矛盾,于是我有一句名言:“甲方都需要教育”,所以我觉得应该“教育”一下,于是就在 blog 上公布了一些“争论”,当然随后我又在 blog 上陆续发布了我对甲方漏洞报告平台建设的一些“建议”,随后我们的很多建议都被 TSRC 采用,这才是我最在意的事情!

而 TSRC 的榜样在,也导致各甲方纷纷效仿成立 *SRC。由于这样的话题已经在 weibo 及 blog 上谈及过多次,还有好几次和朋友的论战,所以这里就不多提了,只再次强调一下:榜样其实是有毒的!一定要结合自己公司的一些实际情况来开展。

InfoQ:作为公认的脚本黑客 top1,能否谈谈脚本黑客的过去和未来?

黑哥:首先要说明的是“公认的脚本黑客 top1”我是万万不敢当的!只是由于一些个人学习上的经历,导致一直都在研究应用层的安全问题。过去这样的没有啥太大意义的问题这里就不提了,至于未来其实也是没谱的事情,少谈比较靠谱!只是在这里稍微提一下:有一些圈外人士认为未来是属于移动互联的,他们认为“网站”会慢慢消失,被移动 app 替代。于是他们得到一个结论,“网站”都消失那么“网站”安全行业也就不存在了!之所以说他们是“圈外”是因为他们理解的“网站”只是被浏览器渲染出来的那个界面框架而已,他们忽视了移动 app 后端的“网站”是不会消失的,与 app 沟通的数据还是很多走的 web 服务。所以他们的担心只能是“杞人忧天”。随着脚本技术发展,用脚本实现的工作越来越方便快捷,所以脚本黑客未来是光明的!

2014-02-23 15:344783

评论

发布
暂无评论
发现更多内容

实战案例丨使用云连接CC和数据复制服务DRS实现跨区域RDS迁移和数据同步

华为云开发者联盟

迁移 灾备 数据复制 云连接 数据同步

一条龙!CI / CD 、打造小团队前端工程化服务

久违

Vue 大前端 jenkins React

【API进阶之路】破圈,用一个API代替10人内容团队

华为云开发者联盟

内容 编辑 API 华为云 文本摘要

鲲鹏迁移第一批吃螃蟹的人,践行技术国际化

华为云开发者联盟

鲲鹏920 服务器 华为云 ARM芯片 X86

CPU中的程序是怎么运行起来的(预告篇)

良知犹存

cpu

Java中强、软、弱、虚四种引用详解

古月木易

Java

ArCall远比你想象的要强大的多

anyRTC开发者

WebRTC 在线教育 直播 RTC 安卓

架构设计复杂度来源

escray

学习 从零开始学架构 架构师预科班

花两个半月吃透这份Java手打面经,成功从外包上岸到京东

Java迁哥

Java 学习 腾讯 面试 资料

LeetCode题解:84. 柱状图中最大的矩形,双循环暴力,JavaScript,详细注释

Lee Chen

大前端 LeetCode

分析HiveQL 生成的MapReduce执行程序

任小龙

高效程序员的45个习惯:敏捷开发修炼之道(7)

石云升

敏捷开发 晨会

区块链交易所开发源码,数字货币交易所app开发

13530558032

java安全编码指南之:Mutability可变性

程序那些事

Java java安全编码 编码指南 可变性

week12 homework

burner

拥抱K8S系列-01-CentOS7安装docker

张无忌

Docker centos 运维

面经手册 · 第9篇《队列是什么?什么是双端队列、延迟对列、阻塞队列,全是知识盲区!》

小傅哥

数据结构 小傅哥 队列 ArrayDeque

Java创建对象的方法有哪些?

古月木易

Java

Java创建对象的方法有哪些?

奈学教育

Java

Docker 网络模式详解及容器间网络通信

哈喽沃德先生

Docker 容器 微服务

vivo商城前端架构升级-总览篇

vivo互联网技术

node.js Vue 大前端 架构设计

【运维探讨】RPA落地实践,提升IT运维工作效能!

嘉为蓝鲸

RPA 运维自动化 标准化 系统运维 流程

为什么阿里巴巴的程序员成长速度这么快,看完他们的内部资料我明白了

Java迁哥

Java 阿里巴巴 程序员 成长 笔记

JDK8 Unsafe.java 源码

Darren

源码 并发 CAS 代码注释 unsafe

Java中强、软、弱、虚四种引用详解

奈学教育

Java

2019年我最喜欢的三款数码产品。

徐说科技

手机 苹果

拥抱K8S系列-02-服务器部署应用和docker部署应用区别(nginx篇)

张无忌

nginx Docker 运维

JVM中unsafe.cpp源码

Darren

c++ 源码 JVM unsafe

35K成功上岸华为商城事业部,只因学透了这几个开源的商城项目

Java迁哥

Java 华为 源码 资料 商城项目

程序员如何获取一份高薪工作?阿里P8大牛给你一些中肯的建议

Java迁哥

Java 华为 程序员 面试 资料

9块钱,构建个私有网盘,关键不限速

华为云开发者联盟

网站 OBS 在线网盘 华为云 云存储

黑哥谈应用安全:技术的进步就是为了解决矛盾_安全_王文文_InfoQ精选文章