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

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

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

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

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

  【IceSword 冰刃软件截图】

{潘神的迷宫}

潘剑锋坐在雷锋网(搜索“雷锋网”公众号关注)记者对面,一脸平静地说,其实这个漏洞并没有太多可说的,只是一个新的“系统提权漏洞”而已。

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

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

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

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

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

{漏洞的本质}

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

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

这是漏洞的基本逻辑。

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

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

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

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

{世界上所有的回答}

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

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

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

  【逻辑树示意图】

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

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

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

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

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

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

本文转自d1net(转载)

IOS漏洞频出!世界上真的存在没有漏洞的手机吗?相关推荐

  1. 测试手机型号的软件,世界上有这么多型号的手机,开发一款App,该如何做测试?...

    如题,世界上有这么多型号的手机,苦逼的创业者开发一款 App 后,该如何做测试才好呢?某种意义上,早在 2011 年就成立的手机游戏及手机应用云测试平台"Testin云测"就是解决 ...

  2. nginx 上传文件漏洞_文件上传及解析漏洞

    注:本文仅供学习参考 文件上传定义: 文件上传漏洞是指网络攻击者上传了一个可执行的文件到服务器并执行.这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等. 这种攻击方式是最为直接和有效的, ...

  3. 世界上最奇特的国界线,万万没想到...

    全世界只有3.14 % 的人关注了 爆炸吧知识 你曾经可能多次在飞机上切换不同的国家, 但未曾真的看见过这些国家之间的分界线. 没见过之前, 你脑海中的国界线是怎样的? 一道高墙?还是一条无法逾越的鸿 ...

  4. 世界上排名前100的英文歌详细名单及介绍

    1. don't cry--guns n' roses 这首歌曾唱哭了千万人.总是能够触痛了心底最软的地方,心抽痛着,眼圈红了,却没有眼泪渗出,每多听一次就多一次的依恋... 2. fade to b ...

  5. [转] 世界上排名前100的英文歌—终于找全了

    [转] 世界上排名前100的英文歌-终于找全了(非常好听) 2011-12-21 23:49 阅读(2) 转载自王烽 1. don't cry--guns n' roses这首歌曾唱哭了千万人.总是能 ...

  6. 将iOS刷到Android设备上

    原文地址:http://qorbot.com/archives/178.html 一般情况下,同等流畅度的苹果手机和安卓手机相比,安卓的硬件配置比苹果几乎要高出一倍以上.之所以会有这么大的悬殊,主要是 ...

  7. 史上最全最详细多种手机主流操作系统详解

    史上最全最详细多种主流操作系统详解(经典,值得收藏) 2017-06-09 18:07 操作系统 一.手机操作系统 1 Android 谷歌安卓 这里写图片描述(https://img-blog.cs ...

  8. 世界上第一个微处理器真的是Intel 4004吗?其实这是个很复杂的故事…

    发明于1947年的晶体管作为电子放大器和开关,是各种电子设备(从袖珍收音机到仓库规模的超级计算机)的核心部件.其早期版本被称为"双极晶体管",至今仍在使用.到了20世纪60年代,工 ...

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

    CVE-2016-0844,这串毫不性感的代码是一个漏洞的名字. 通过这个漏洞,黑客可以拿到 Android 手机内核最高权限,在主人不知情的情况下翻看查看聊天记录.银行卡密码.随时静默拍照.向任意号 ...

最新文章

  1. SOCKET编程中,select()函数的作用
  2. parted如何将磁盘所有空间格式化_linux下大于2T的硬盘格式化问题
  3. idea整合mybatis错误
  4. idea pom依赖失败_IDEA中Maven依赖下载失败的完美解决方案
  5. 【并查集】【最小生成树】【贪心】给水(jzoj 2015)
  6. win7可以运行的mysql,win7下mysql安装
  7. 作者:寇纲(1975-),男,博士,西南财经大学工商管理学院教授、博士生导师、执行院长...
  8. 关于vue3.0中的this.$router.replace({ path: '/'})刷新无效果问题
  9. 骂人的代码_楚河骚话不断粉丝求代码 罕见喷脏怒怼弹幕
  10. 详述 Discord Desktop app RCE 挖洞经过,最后得$5000 + $300 (含 PoC 视频)
  11. oracle call 存储过程 带out_详解oracle数据库存储过程调试方法
  12. php 随机输出字符串,如何使用PHP生成随机字符串
  13. 原生js获取html根元素,JS获取屏幕高度的简单实现代码
  14. 微信小程序Tab切换下面的图表显示
  15. 将jar文件安装为系统服务
  16. 攻防世界crypto新手区writeup
  17. 2017中国北京艺术与框业展览会(AFAEXPO)会刊(参展商名录)
  18. 不重启Windows使环境变量快速生效
  19. 在HTML中怎么画一条直线
  20. python交换数组中的两个元素_Python 交换数组元素

热门文章

  1. 解决Oracle数据库报错ORA-12505的问题
  2. CF1129C Morse Code
  3. mousedown mouseup click 触发顺序
  4. 通过数据分析,了解外国人眼里的真实李子柒
  5. 音视频开发系列--H264编解码总结
  6. 关于VMware虚拟机安装失败的解决办法,报错(29142)或者安装系统后无法启动
  7. DB2-------
  8. 测试小故事83:世界很大
  9. 【Android控件】HorizontalScrollView的基础使用记录(滚动条自定义)
  10. CREATE DATABASE guestbook DEFAULT CHARSET utf8 COLLATE utf8_general_ci;