Windows Kernel Race Contidion: новый старый баг, теперь со вкусом лесных цветов

Баги типа race condition — это редкость? Ничего подобного! Они повсюду, особливо в ядре Windows. Ребята из Google проделали совершенно чудную (если не сказать чудовищную) работу по анализу влияния точек взаимодействи ring0 с ring3 и возможными race condition, которые при этом воникают. В итоге около полусотни легко эксплуатируемых багов просто в win32k.sys, а ведь это только начало.



Простой смысл бага: подмена указателей в ядре из ring3 в моменты, когда в ядре осуществляется какая-нибудь банальная проверка, а потом выделяется память. Примечательно, что баг изначально был найден аж в 2008 году, потом о нём вспомнили в 2012 и вот наконец дебют Proof-of-Concept в 2013 и награда на PwnieAward.

Уязвимость для краткости назвали double fetch, поскольку для её релизации (использования) необходимо, что код на уровне ring0 дважды использовал значение, полученное из ring3.

Материалы здесь...

Блог j00ru (один из авторов этого чудного класса ядреных багов) здесь...

Надо признать, что j00ru скорее всего не человек — ждать больше 15 часов, чтобы в bochs загрузилась windows 7 может только андроид или нексус-7. Интересно, что для реализации уязвимости приходится полагаться на изрядную долю везения и авторам пришлось максимизировать время race condition искусственно, чтобы сделать срабатывания устойчивыми.
  • -1

  • 0

Комментариев нет

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.