project zero talk note
0x01 定位
任务:让0day更难
工作:
- 漏洞研究
- exploit开发
- 缓解设计和审查
0x02 Project Zero如何找bug
1.我应该从哪儿找?
- 优先级。 攻击者会在哪里看?重视单个研究人员的经验+专业知识
- 找到新的攻击面,或迭代已知的攻击面。
2.我应该怎么找? 也就是怎么找到一个切入角度
- 选择处理不可信数据的输入点并找到其bugs。
- 选择一个bug类来查找实例。
- 选择一个功能/规范,找出不同实现中的常见缺陷。
- 查找已知问题的变形。
3.CVE-2018-10751
- 三星Galaxy S7 Edge中的OMACP溢出–由短信触发
- 通过寻找处理SMS的Intent找到
- 一年前,Contextis报道了一个类似的错误
4.Fuzzing
Canonical mutation fuzzing(大概意思是利用经典数据的变种来进行fuzz):语料库创建,参数优化,模糊测试,覆盖反馈,崩溃分析。
自定义模糊测试,如定制生成器或文件格式突变感知。
5.手动审查
有时是线性的:枚举函数列表并前向分析。
有时横向:找到一些脆弱属性的实例(错误类,重复错误,非标准模式),稍后建立“触发点”。
0x03 对未来的预测
- 手动分析方式不会改变
- 基本模糊测试结果不会很好
- 代码覆盖率反语料库推动新工作
- 静态分析对VR来说效率仍然不高