您正在使用IE低版浏览器,为了您的雷峰网账号安全和更好的产品体验,强烈建议使用更快更安全的浏览器
此为临时链接,仅用于文章预览,将在时失效
政企安全 正文
发私信给史中
发送

9

360潘剑锋:世界上存在没有漏洞的手机吗?

本文作者: 史中 2016-04-06 07:33 专题:100个顶级黑客的故事
导语:如果你想出正确答案,那么恭喜你可以回答一系列的问题,例如:世界上存在永远不失败的棋手吗?

CVE-2016-0844,这串毫不性感的代码是一个漏洞的名字。

通过这个漏洞,黑客可以拿到 Android 手机内核最高权限,在主人不知情的情况下翻看查看聊天记录、银行卡密码、随时静默拍照、向任意号码发信息、打电话。

为此,谷歌向这个漏洞的发现者——冰刃实验室——发去了一封致谢函。如果你是网络安全爱好者,冰刃(IceSword)这个字眼一定在你心中占据着一席神坛。2004年,这款几乎可以查杀所有木马的软件在圈子里声名鹊起,引起了各大网络安全公司的注意。而它的作者,竟然是一位在校的学生。他就是潘剑锋。

冰刃的简洁和灵性散发出一种出只有黑客们才可以欣赏的美。如今在各大论坛上,还依然有诸多仰慕者追随着潘神的名号,传扬着他的传说。而潘神却低调地走出光环之外,修炼至今。

冰刃实验室,正是他的回归。

360潘剑锋:世界上存在没有漏洞的手机吗?

【IceSword 冰刃软件截图】

{潘神的迷宫}

潘剑锋坐在雷锋网编辑对面,一脸平静地说,其实这个漏洞并没有太多可说的,只是一个新的“系统提权漏洞”而已。

事实上,“系统提权漏洞”是拿到Root权限的最后也是最难的一跃,在谷歌的评价体系里毫无争议地属于高危级别漏洞。根据谷歌的致谢数据,每年这一级别的漏洞致谢仍是屈指可数。但在潘神眼里,这种形式的漏洞是一个经典形式,他只是为这个漏洞家族又添了一个新丁而已。这大概像一个学霸,看到大家都考95分,自己又有什么可高兴的呢?

对于这个曾经把对X86操作手册倒背如流,对系统内核技术如痴如醉的“技术宅”来说,他的目标并不是找到那个最坚固的攻城武器,而是制造出无人可破的防御系统——一个让图谋不轨的黑客永远迷失的迷宫。

对系统底层技术的了解,增加了他制定这个目标的底气。他把操作系统被拆分为逻辑背后的一组组代码。就好像一位建筑家,可以把摩天大厦拆分成钢筋水泥肌理下的每一条砖。

既然如此,他必须解释一个终极问题——漏洞因何而存在?

360潘剑锋:世界上存在没有漏洞的手机吗?

【Android 系统内核,一般指最底层的 Linux Kernel】

{漏洞的本质}

任何程序都是交互的过程:输入信息,得到反馈。而从本质上来说,这些交互可以被拆分为“一问一答”,也就是“输入输出”的单元。

黑客往往通过构建一些异常的输入。只要程序处理不正确,就会产生相应的问题,例如造成程序的崩溃。而通过精心构造提问的方式,可以实现意想不到的效果,甚至让程序走入你制定的逻辑。

这是漏洞的基本逻辑。

当然,现在越来越完善的系统对于绝大多数的“问题”都能够给出毫厘不差的“答案”。只有在极其特殊的情况中,才会出现漏洞。例如:

某次会议规定,与会者必须喝光面前的水才能离开,而偏偏有一个迟到的童鞋没有听到这个规矩,在杯中留了半杯水。当会议结束后,有机器人自动把所有杯子重新填满。这时,在原本没有喝光的水上面再加一杯水,就会造成溢出。整个桌子都会因此被打湿,设定好的程序就会发生错乱,漏洞出现。

某个电梯规定,不能同时容纳两个人。所以每当一个人进去之后,应当首先锁好电梯的门。但是如果一个人忙得晕头转向,忘记锁门,就可能出现第二个人突然闯进来的结果。这样一来电梯就会发生坠落。漏洞又出现了。

虽然没有锁门、没有喝水,这样的“失误”发生概率非常小,然而它们发生的条件却是确定的,只不过这种条件相当苛刻,在正常的运行过程中几乎不会发生。所以,寻找漏洞变得很简单:只要把一个程序运行过程中的所有“偏执”的可能性都一一尝试,就可以排查掉所有意外发生的条件。这种情况下,这套系统不就成为了一个没有漏洞的完美系统吗?

{世界上所有的回答}

好了,接下来我们要做一件浪漫的事,问出“这个世界上所有的问题”。

面对一个系统,我们原则上可以画出它的“控制流图”。也就是说,假设我们的计算能力无限,对于每一个逻辑,我们输入不同的值,计算出在怎样的值下面,系统会给出怎样的回答,把这些回答归纳为所有的可能性,再进一步对每一种可能性重复如上的操作。

如此一来,我们就可以画出巨幅的逻辑树,见到一个分叉路口就尝试每一个可能,最终我们的足迹会遍及逻辑树的所有枝杈,把从一个原点开始的所有可能都囊括进去。

360潘剑锋:世界上存在没有漏洞的手机吗?

【逻辑树示意图】

潘神解释,这种方法被称为“约束求解下的具体执行”,在这种情况下,会把所有的情况——哪怕是概率极小的事件——都进行预演。从而排查是否存在程序错乱的情况,进而发现漏洞所在。

然而,这样的计算远不像说起来这么简单。潘神说:

看到岔路,计算什么情况下往左跑,什么情况下往右跑。是一个特别难于解决的问题。而且如果完全计算所有逻辑上的可能性,对于数十万行代码的操作系统来说,时间要求过大。纵然在理论上成立,在现实中也没有可能实现。

所以,潘神实际上给出了一个悲伤的答案:

我们没办法穷尽世界上所有的问题,也就没办法验证世界上所有的答案。

在现实世界里,安全仍然必须有所取舍。用有限的资源去对抗无限的可能。而正因为安全是一个无法抵达,只能无限接近的顶峰,它才变得无比迷人。

雷峰网原创文章,未经授权禁止转载。详情见转载须知

分享:
相关文章

编辑

雷锋网编辑,关注科技人文,安全、黑客及芯片。
当月热门文章
最新文章
请填写申请人资料
姓名
电话
邮箱
微信号
作品链接
个人简介
为了您的账户安全,请验证邮箱
您的邮箱还未验证,完成可获20积分哟!
请验证您的邮箱
立即验证
完善账号信息
您的账号已经绑定,现在您可以设置密码以方便用邮箱登录
立即设置 以后再说