
Тестовая среда для CVE-2016-0728, ошибка утечки/переполнения refcount в Linux
Этот репозиторий содержит тестовую программу для CVE-2016-0728, ошибки утечки счётчика ссылок и переполнения в Linux, приводящей к 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
В моей тестовой системе root-оболочку можно было получить следующим образом:
revoke.execl("/bin/sh", "sh", NULL)Я обнаружил, что полезно запускать watch -n0.1 cat /proc/keys, чтобы видеть,
что происходит.
Этот код тестировался только на x86-64, но он должен работать и на других
архитектурах, так как я не использовал магические смещения, а скопировал
определения структур из заголовков Linux и использовал sizeof
(за исключением того, что я жёстко задал адреса prepare_kernel_cred и
commit_creds).