
CVE-2016-0728을 위한 테스트베드, Linux의 refcount 누수/오버플로우 버그
이 저장소는 Linux에서 발생하는 refcount 누수 및 오버플로우 버그인 CVE-2016-0728에 대한 테스트 프로그램을 포함하고 있으며, 이는 use-after-free로 이어집니다.
이 버그는 Perception Point에 의해 발견 및 설명되었습니다. 저는 그들과 관련이 없습니다.
Welcome to the CVE-2016-0728 testbed
sizeof(struct msg_msg) == 0x30, sizeof(struct key) == 0xb8
PID: 27673, UID: (1000/1000)
Keyring: 1b66e5d6, "test-1a328d6e"
Usage: 1
Press a key: (f)ork (i)ncref (a)uto-incref (r)evoke (h)eap-spray (s)hell (q)uit
제 테스트 시스템에서는 다음과 같은 방법으로 루트 셸을 얻을 수 있었습니다:
revoke 호출execl("/bin/sh", "sh", NULL)무슨 일이 일어나는지 확인하기 위해 watch -n0.1 cat /proc/keys를 실행하는 것이 유용했습니다.
이 코드는 x86-64에서만 테스트되었지만, 다른 아키텍처에서도 실행되어야 합니다. 매직 오프셋을 사용하지 않고 Linux 헤더에서 구조체 정의를 복사하여 sizeof를 사용했기 때문입니다. (단, prepare_kernel_cred와 commit_creds의 주소는 하드코딩했습니다.)