我正在尝试创建一个触发CVE-2017-10661的c程序。
据我所知,因为如果对文件描述符进行并行操作,may_cancel机制就没有得到妥善保护,你可能会导致崩溃。
我相信这些并行操作是读取,轮询等对吗?
目前我已经写了这段代码。
private RelativeLayout getParentView(){
return (RelativeLayout) MyActivity.this.getWindow().getDecorView().getRootView();
}
如你所见,我设置了一个计时器,然后我只做了一个阅读操作。有没有办法通过进行多次读取或轮询来触发错误?
答案 0 :(得分:1)
竞争条件由timerfd_settime()
- >触发timerfd_setup_cancel()
- > timerfd_setup_cancel()
。因此,您应该使用多个线程来执行timerfd_settime
,并将标记设为TFD_TIMER_ABSTIME|TFD_TIMER_CANCEL_ON_SET
。
以下是我在网上找到的POC。