0
我試圖做一個c程序觸發CVE-2017-10661。CVE-2017-10661觸發
據我瞭解,因爲might_cancel機制,它沒有得到適當的保護,如果你對文件描述符進行並行操作,你可能會導致崩潰。
我相信這些並行操作是讀取,輪詢等權利?
目前我寫了這段代碼。
#include <sys/timerfd.h>
#include <sys/poll.h>
#include <sys/epoll.h>
#include <stdio.h>
#include <stdlib.h>
#include <strings.h>
#include <unistd.h>
int main(int ac, char *av[])
{
int timerfd;
int epollfd;
struct itimerspec timerValue;
uint64_t exp;
ssize_t s;
/* set timerfd */
timerfd = timerfd_create(CLOCK_MONOTONIC, 0);
if (timerfd < 0) {
printf("failed to create timer fd\n");
exit(1);
}
bzero(&timerValue, sizeof(timerValue));
timerValue.it_value.tv_sec = 1;
timerValue.it_value.tv_nsec = 0;
timerValue.it_interval.tv_sec = 1;
timerValue.it_interval.tv_nsec = 0;
/* start timer */
if (timerfd_settime(timerfd, 0, &timerValue, NULL) < 0) {
printf("could not start timer\n");
exit(1);
}
s = read(timerfd, &exp, sizeof(uint64_t));
exit(0);
}
正如你可以看到我設置了一個計時器,然後我只做一個閱讀操作。有沒有辦法通過多讀取或輪詢來觸發錯誤?
謝謝!這真的很有幫助!我正在使用多線程,但使用'read'。我現在就試試 –
那麼,這個POC是否應該觸發這個bug呢? –
是的,它應該。這個bug是由syzkaller自動生成的這個POC發現的。 – FatMinMin