|
seclists.org/fulldisclosure/2010/Dec/85
В двух словах: в результате хитроорганизованных процессов за примерно 10 шагов в ядре возможно переписать 2 байта нулем.. ДВА СРАНЫХ БАЙТА!!! ДВА!! НУЛЕМ!!! и что в результате? локал рут эксплоит!
У меня только два вопроса:
0. Как это можно было откопать?
1. Как это можно было предусмотреть?
If a thread is created via clone(2) using the CLONE_CHILD_CLEARTID flag, a NULL
word will be written to a user-specified pointer when that thread exits.
This write is done using put_user(), which ensures the provided destination
resides in valid userspace by invoking access_ok(). However, Nelson
discovered that when the kernel performs an address limit override via
set_fs(KERNEL_DS) and the thread subsequently OOPSes (via BUG, page fault,
etc.), this override is not reverted before calling put_user() in the exit
path, allowing a user to write a NULL word to an arbitrary kernel address.
Note that this issue requires an additional vulnerability to trigger.
В двух словах: в результате хитроорганизованных процессов за примерно 10 шагов в ядре возможно переписать 2 байта нулем.. ДВА СРАНЫХ БАЙТА!!! ДВА!! НУЛЕМ!!! и что в результате? локал рут эксплоит!
У меня только два вопроса:
0. Как это можно было откопать?
1. Как это можно было предусмотреть?
impressed
thoughtful