2018年3月21日,我受邀参加了一个神秘的安全会议。 一间20来平的会议室,40多号人挤在一起。 现场为了保密,没有摄像,更没有直播。 商业上的竞争对手,学术界与工业界,大家因为一个共同的问题,罕见地坐到一张桌子上。
(阿里安全的资深安全专家“杭特”,聊到行业现状,他显得有点激动。) “杭特”接着解释。 中国的网络安全研究员,太多人一头扎进了0day这样技术含量很高的漏洞里。 但是在真实的网络安全世界,攻击者没时间搞这些技术性很强的东西,怎么用最简单的方法更快的捞钱,才是黑产关心的事。 于是我们看到,心脏滴血、破壳,这些漏洞出现后,安全圈都在聊:“这么简单的漏洞,稍微有点安全知识的人都能操作。” 实际上是,因为简单所以被忽视,而忽视本身就成了最大的漏洞。 随即,杭特抛出了会议的主题: “软件供应链安全”,我们忽视了太多这方面的风险,我们在这方面的防守能力很差,这是整个安全圈的事。 1、越简单的越容易被忽视 杭特首先给出了“软件供应链”的定义。
比如office、以及各种影音软件,甚至浏览器,总之你用的软件不是自己编程的,那么都属于软件供应链。 按照这个定义,多数人的赛博世界都被笼罩在软件供应链这张巨网里。 正因为这张巨网满布整个网络空间,一些看似简单的攻击方法,会带来核爆式的安全风险。 我们可以举一个简单的例子。 假设你是一个五星级饭店的大厨,有人想要陷害你。那么,他只需要把你的糖罐子和盐罐子互换一下,从此你的职业生涯就完蛋了。 这个例子其实是在解释,软件供应链涉及的是各种软件工具,而一旦工具本身被攻破,损失就会无法估量。 真实的攻击方式有多简单?影响又有多大? 不便透露来历的某业内安全人员做了一个小实验,略施手段表演了一出“狸猫换太子”的好戏。 介绍一下实验道具:一个免费邮箱以及Python编程语言(程序员基本会用)。可以说这项实验的成本基本为0。 故事中的主角,狸猫名为“zlib”,太子名为“zlib3”。 听起来太子的名字倒像是一个复制品。 故事始于一串代码,一串常用代码:“Pip install zlib3”。代码的意思是“命令安装一个名为’zlib3的资源包”。 程序员在编写代码时,经常犯这样的错误,手一抖把“zlib3”写成了“zlib”。 虽然只是少了一个数字,但电脑很单纯,它只认“zlib3”。所以正常情况下,电脑会提示这段代码无效。 就在这时,“邪恶”的研究员出现了。 正如你所想,实验研究员真的造了一个名为“zlib”的资源包,把“假狸猫”包装成了“真太子”。 电脑按照这段错误的命令执行后,会安装一个来自私人邮箱的假资源包,而这个资源包里还被注入了信息读取模块(这脑洞真的很贱,很让人喜欢)。 (作者作,实验简易图解) 结果可想而知,大把的程序员都误把狸猫当作太子,浑然不觉已是引狼入室。 实验的结果是:漏洞存在了100天,期间取得了全球X0000台服务器的控制权。 这其中包括GX、WX、XXX……等等等等,总之国内外的各大企业、某国所有的高校、某国的重要部门都在长长的受害者名单里。 当然,这只是一个实验,只是为了便于统计,顺手获取了这些服务器的帐户名和主机名。 那么假如不是实验呢?假如是黑产呢?这次小小的实验足够证明,软件供应链中存在巨大的安全风险。 讲到这里,杭特拿到场嘉宾打趣。
杭特继续解释。 实际上,这种攻击方式完全可以再做一下升级,直接黑掉正牌的“zlib3”资源库,把真太子干掉,连名字都改成一样的,更难被发现。如此一来,攻击将变得更加隐蔽,存在时间会更长,中招的服务器也会更多。 当然,实验主要还是要检测最简单的手法会引发什么连锁反应,事实证明,方法十分简单、“成绩异常斐然”。 值得庆幸,做实验的人不是搞黑产的。 2、最大的威胁来自于信任
杭特这句话这让我想起另一个故事。 把时间狠狠往前拉一下。 1984年图灵奖的获得者Ken Thompson发表了一次演讲,“反思对信任的信任”,演讲中Ken展示了一种骇人听闻的攻击方法。 解释这种攻击方法前,有必要科普一下: 程序员在制作软件时需要一个名为编译器的工具,简单来说,编译器的功能是将程序员的高级计算机语言翻译成机器语言(计算机可直接解读、运行的语言)。 Ken发明的这种攻击方式正是瞄准了编译器。 简单来说,他在编译器中开了一个后门,当程序员使用编译器时,Ken可以通过后门注入自己编写的恶意程序。 你会发现,这个攻击瞄准的是最底层的目标,试想,就连软件编写都已经被攻破,那么利用这种编译器编写出的软件,有什么安全可言呢? 而之所以说这种攻击是骇人听闻的,原因是:大多数人压根不会怀疑编译器的安全属性。 结果可想而知,程序员用这种编译器所编写的所有程序都会受到感染。 由此,Ken帮我们得出一个结论:只有当你的电脑里运行的每一个程序都完全是自己写的时,才能保障安全。 问题在于,这是不现实的,于是我们只能处在这样的一个环境里:
惊不惊悚?不惊悚。。。 可不可怕?不可怕。。。 那什么才惊悚,什么才可怕? 真正可怕的是:“即便如此,也没有解决的方法,至少目前我们只能选择信任这些软件” 3、构筑防线,需要战略能力
上文的例子都在说明一个现象,软件供应链安全的攻击成本极低,收益却很巨大。 但如果谈到解决,首先你要知道风险的存在形式才行。于是研究人员扫描这些风险时又发现了一个极其让人头疼的问题:威胁存在于软件供应的各个环节中,检测起来非常困难。 我们可以做一下理论假设:既然软件供应链是一条巨长、巨复杂的链条,做防守只要构筑一条更长、更复杂的防线就可以了。 显然,这是对人对技术的一项巨大挑战。唯一可以确定的是,“这不是一人之力可以完成的,或者说不是仅凭人力能够做到的”。 相比较起来,美国很早就有所部署。 NIST.SP.800-161.是美国施行的软件供应链风险管理标准。 该项标准中加高了软件投入使用的门槛,这的确能够阻挡大部分的假冒伪劣产品,但也给正经企业带来了痛苦,因为他们要准备大量材料,十分影响效率。 于是美国又做了一个VET计划,投了6000w美金,准备用四年时间专攻软件供应链,计划用最前沿的科技扫描出具有潜在威胁的漏洞。 这是由被动防守到主动防御迈出的一大步,当然这也是基于美国有相应的安全扫描技术,而不得不承认,目前中国不具备这样的技术手段。 明白了两方之间的差距,问题反而变得简单了,那就学习吧、锻炼吧,尽快培育出自己的检测技术吧! 阿里安全首先提供了他们的解决思路。 杭特为我们举了一个例子:
当然这只是针对某一特定漏洞定制的解决方案。面对复杂的“软件供应链安全”,摆在行业面前的问题是:检测标准怎么才能更全面。 不难发现,检测标准的划定尤为关键,太过宽泛就是大海捞针效率底,太过细分又会漏掉某些漏洞达不到效果。 为了解决这个问题,阿里决定举办一个软件供应链安全比赛。 比赛分为两拨,一拨是出题人,负责定义恶意行为、制定划分标准。另一拨是参赛者,需要自己摸索一套检测标准,从而扫描出题目恶意行为。 我微微揣测了一下用意,看起来只要参赛人员足够多,阿里安全就能统计到一波数据,什么样的检测标准更有效就能被筛选出来。 当然主办方阿里安全也付出了足够诱人的奖金。 只是,比赛中还是在进行有目的的扫描,这并不能真的应付实际场景中出现的威胁。 但杭特觉得比赛有更特殊的意义:
4、“软件供应链安全应该升级为社区意识” 针对软件供应链安全问题,腾讯也为我们提供了他们的解决思路。 腾讯玄武实验室正在做一个名为“Project A'Tuin”的全网软件检索工具,这听起来就是一项浩大的工程。 从原理上来说,它瞄准下载环节,在软件供应链中,下载是一个安全漏洞的集中爆发点。 因为很多网站中的盗版下载链接都会掺杂漏洞和病毒,使用者甚至难以分清哪些是正版软件哪些是盗版软件。 玄武实验室希望能够通过收集到全网中的软件信息,通过对比软件代码的哈希值以及数字签名信息来确认软件是否存在风险。 另一知名安全企业,知道创宇,聊了聊一些切实可行的举措。 比如定期更换密码、加强流量监控审计,虽然听起来耗时耗力,但是在自动化检测水平不高的情况下,想必这也是大多数安全企业都在实行的方法。 无论如何,软件供应链安全的确值得关注。而相比起技术,普通人更需要培养的还是安全意识。 另外,我还在会议中看到了一些可喜的现象。 昔日商业上互相搏斗的竞争对手坐到了一张桌子上,共同探讨如何解决整个安全行业的问题。 “在这里没有过多的交锋,更多的是技术思考和共同语言。” 本文作者高宁@浅黑科技,讲故事是他的主业,如果你对故事有兴趣,建议加他微信“gn9343” 完。 戳蓝字查看更多内容 黑客故事 风云观点 谭晓生:野蛮生长到今天 探索好奇 膨胀的iPhone 8 |
|