知名压缩软件 xz 被发现有后门,影响有多大?如何应对?
About
供应链危机越来越多了。
最近奇安信实验室也找到了一堆恶意pypi包,比如requestss这种假名字包,然后这些包下载下来就会被用来查找用户的隐私信息(就是浏览器里面保存的账号和密码等等)。
而这些代码其实很难直接进入用户的代码里面,因为pycharm都有自动补全等等,靠用户手滑打错的概率就和挖乌龟币的收益差不多。
那他们是怎么做的呢?
最典型就是水平高的就是加入一个开源项目,然后再引入有毒包(或者有毒子包)。
水平低就发csdn或者github上面做那种新生入门教程,在里面植入有毒包或者有毒子包。
目前奇安信用的是动态分析的方法,就是把这个包下载下来,然后hook系统api看看有没有人访问相应的隐私文件等等。
这个方法挺好用的,但是肯定不能覆盖所有的情况。
比如题目的攻击是对安全包的代码替换,那么在动态分析过程中就比较难发现。
假设有一个恶意安全包,是深度学习相关工具。他不偷隐私数据,不会访问系统文件,但是他偷实验结果和源代码。
但是很多好包同样存在需要api才能访问的功能等等,那么很难从行为上来区分两种行为。
而静态分析也有一些棘手的地方,黑客往往会将代码加密,然后调用url获取密钥再解密。
那么恶意代码本身就是隐藏的。
那为什么不能直接检测有没有存在解密的函数?这是由于加密包比如cryptography等等,都会存在测试函数,而测试函数中必然会包含加解密函数。
再引用一下我另外一篇回答为什么漏洞无法找完?
这是由于赖斯定理(图灵停机定理推导出来)说明了可以构造一个无法在有限时间内识别完是否安全的代码。
而同时又由于冯洛伊曼架构无法区分数据和代码,从而导致只需要引入外部数据即可转为代码,从而实现入侵。
我再来说一下深度学习检测和静态分析的结果的差异,为什么深度学习检测的效果看上去更好,可以很容易找到静态分析难以发现的问题。这问题影响了很多安全研究人员的信心,很大一部分加入了ai教。
这是由于人类的代码空间的分布的不均匀性,包括写出来漏洞也存在不均匀性。
我举个例子,我设置一个后门的开启条件是输入hash值为0的字符串,那么无论是模糊测试还是符号执行(模糊执行可以通过人工查看代码覆盖率来解决这个问题,当然也有更多巧妙的方法来实现代码覆盖率正常,但是无法真正执行的办法),还是静态分析显然都无法分析到这个代码可以执行。
而深度学习一看,什么?求hash值等于0一看就莫名其妙的,判定为后门吧。
这种差异来源于人类自身代码水平,是一种很弱的差异,很难抵抗被刻意构造的病毒代码。
所以说不能说gpt4看上去足够聪明了,可以直接帮我们看源码来找后门,我们就不需要传统的sat,模糊执行,动态分析等等。