2019操作系统课程设计:在ucore获得稳定触发竞争条件的漏洞样本

在本页面维护操作系统课程设计大实验"xxxx"的相关信息。老师、助教和选做课程设计的同学可修改该页面的内容。

课程设计目标:从不稳定出发漏洞PoC获得可以稳定出发漏洞的新PoC和对应的具体线程调度方案

  1. 通过执行PoC, 获得trace
  2. 分析trace, 获得可能发生竞争条件漏洞的候选
  3. 通过结合错误报告, 筛选出一些候选
  4. 通过定向模糊测试, 对这些候选进行测试, 同时记录具体时间信息
  5. 如果触发竞争条件, 可以稳定出发漏洞的新PoC和对应的具体线程调度方案

实验参与者信息

姓名

学号

电子邮箱

GitHub 账户

李睿燮

2015080062

lee.yeb33@gmail.com

wasabbi

实验代码仓库:

具体实现步骤

获得竞争条件PoC

  1. 由于syzkaller没有移植完, 无法获得竞争条件PoC. 所以首先通过修改ucore代码, 使得一定能发生竞争条件
  2. (将来有时间的话, 可以把syzkaller移植完)

记录并分析trace

  1. 找记录ucore的执行路径的方法
  2. 通过一定的规则, 找出竞争条件的候选: 实现步骤为 (1)访问同一地址(候选太多) (2)分别对顺序违反(Order violation), 原子性违反(Atomicity violation)做规则进行进一步筛选 (3)基础类排位
  3. (将过来有时间的话, 可以根据错误报告进一步筛选竞争条件候选:(还没有确定具体方案) 实现步骤为 (1)先在ucore实现错误报告功能 (2)尽量利用错误报告信息进行筛选)

定向模糊测试

  1. 还没有确定如何实现线程调度. 修改qemu模拟器? 有没有更有效的方法? 需要满足以下条件
  2. 按照一定的规则线程调度: (1)使得执行到竞争侯选位置 (2)先让一方先执行, 以后让另一方先执行
  3. 记录详细时间信息

已有工作参考

syzkaller系统测试工具在ucore上的移植: http://os.cs.tsinghua.edu.cn/oscourse/OS2018spring/projects/g07

Lazy Diagnosis of In-Production Concurrency Bugs: http://??? , 主要参考竞争条件漏洞规则部分

Razzer: http://??? , 主要参考在模糊测试中触发竞争条件漏洞部分

日志

2018年3月25日 ucore实验

操作系统ucore8个实验: https://github.com/oscourse-tsinghua/os2019-wasabbi

2018年4月1日 明确实验方向

实验方向: https://drive.google.com/file/d/1O359-DQaZqptI6Lpc2P0gT4-at4bTtOT/view?usp=sharing

OS2019spring/projects/g07 (last edited 2019-04-01 17:57:07 by 2015080062)

MoinMoin Appliance - Powered by TurnKey Linux