Список задач в очереди ожидания отличается от того, который был выделен Binder - PullRequest
1 голос
/ 11 октября 2019

Я смотрю на уязвимость ядра Android, раскрытую в Project Zero от Google. Воспроизведение его в учебных целях на моем мобильном телефоне.

Вопрос:

"каким-то образом адрес очереди НЕ совпадает с потоком -> подождите .... что, когда приходит UAF, есть идеи, почему? не должно ли быть то же самое? это заголовок списка, не так ли? "

p0 ссылка: https://bugs.chromium.org/p/project-zero/issues/detail?id=1942 PoC: https://bugs.chromium.org/p/project-zero/issues/attachmentText?aid=414030

Мне пришлось немного настроить PoC ... чтобы запустить его на моем мобильном ядре. Я просто хочу увидеть, что адрес очереди (удалить очередь ожидания) такой же, как thread-> wait, но это не так :( какие-либо идеи, которые мне не хватает?

Может быть, вы знаете почему .. ниже некоторого кода+ отладка, проверка Android Binder UAF

Работа без KASAN - это боль, а также невозможность отладки ядра на лету ... хе-хе-хе ...

https://github.com/S3NEO/android_kernel_samsung_s3ve3g/blob/24c9b3454fddc6a5b332989cb4f4455c21867a42/drivers/staging/android/binder.c#L3222

thread-> адрес ожидания и освобождаемый ниже взятый из вышеупомянутой функции:

[87254.673335] wq queue:e4fb5398
[87254.673343] epoll struct:e4fb5380
[87254.673356] wq queue:e4fb5418
[87254.673362] epoll struct:e4fb5400
[87254.673389] binder_ioctl: 21697:21697 40046208 0
[87254.673396] iovec str size:8
[87254.673402] thread->wait:e5c5ed2c
[87254.673407] proc->wait:e5034268
[87254.673413] binder_free_thread size:252 worker_off:44
[87254.673421] freed thread:e5c5ed00
[87254.673859] ep_unregister_pollwait struct:e4fb5380 epi struct:e4fb5180
[87254.673915] ep_unregister_pollwait struct:e4fb5400 epi struct:e4fb5a80
[87254.673923] ep_unregister_pollwait list not empty
[87254.673929] whead before
[87254.673934] remove wait queue:e734d96c
[87254.673940] remove wait queue task list:e734d978
[87254.673946] ep_unregister_pollwait list not empty
[87254.673952] whead before

https://github.com/S3NEO/android_kernel_samsung_s3ve3g/blob/348ef929213854f5c7ce6b608e2ca0216d6bdce7/fs/eventpoll.c#L533

[87254.673957] remove wait queue:e734d9e4
[87254.673963] remove wait queue task list:e734d9f0


[87254.673989] ep_free
[87254.674000] ep_free

НО каким-то образом адрес очереди НЕ совпадает с потоком-> подожди .... что там, где появляется UAF, есть идеи, почему? не должно ли быть то же самое? оно возглавляет список, не так ли?

Может быть, выше справки, если вы не можете сказать,от него.

Спасибо,

...