智能漏洞攻防探索 Note
0x00 前言
PS: 本笔记来自张超教授的现场talk总结
漏洞攻击 –> 漏洞
漏洞防御 –> 补丁
漏洞攻防路线:
机器辅助人来挖(CTF, 主要依靠个人能力) –> 自动攻防(人的经验规则为主,启发探索为辅,无法攻防博弈) –> 智能攻防(智能为主,规则经验为辅)
0x01 稍等下,马上就来
考虑到知识版权问题,PPT图片部分暂时删除,随后会以个人理解的角度来对其中的内容进行表述
0x07 Q&A
目前好用的工具?
SVF 静态分析工具
DFT 动态分析工具 - 污点跟踪
angr 符号执行 -> libc的库函数都是模拟的不准确
S2E 符号执行漏洞挖掘评价问题?
CVE 是一个侧面,目前最想看到的是在相同数据集上的不同表现
benchmark 没有统一,所以能测的就都测一下
fuzzing都说自己的策略好,但是这个属于无穷空间探索问题,并不能说所有情况下该策略都能比别人好,所以就需要实验支撑。但是实验是有随机性的。请求建议一下,如何在程序分析中培养自己的能力?
程序分析基本已经进入到了瓶颈期,想做大突破就比较难。(也就是静态分析技术,目前很多采用AI技术应用到静态分析上的,所以要改进的话可以从AI角度入手)。建议入门还是先熟悉目前的经典解决方案。数据充分的情况下,机器学习的效果可能比人提出的规则要好一些。未来Driller这种模糊测试的情况的发展?
符号执行虽然在学术界上价值高,热度也不低,但是在很多情况下应用不起来,比如在chrome的测试上。所以目前该组还是在改进fuzz本身上做研究。前面提到的arm上的防护研究?
在RISC-V上做了验证。敏感数据的特点->不应该被任何人修改,应该是只读的。如果敏感数据是从可修改区来的,那么就会出现问题。所以从硬件上限制了敏感数据的来源,如果不是来自只读区就限制。
arm pac (pointer authentication code) 理论上是可以绕过的,mte和pac相结合实现新的防护方法。
在硬件上做地址空间隔离,同进程内的隔离,因为有些是可控的有些是不可控的。接下来的fuzzing应该更关注什么方面?
目前更多的关注的是fuzzing在复杂目标上的应用,比如协议、驱动。协议的状态信息的自动化提取。驱动的模糊测试。自动提取知识来引导模糊测试的进行。目前在往更实用的方面来做。