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 对未来的预测

  1. 手动分析方式不会改变
  2. 基本模糊测试结果不会很好
  3. 代码覆盖率反语料库推动新工作
  4. 静态分析对VR来说效率仍然不高