Категория > Новости > В прошлом году проблему Dirty COW исправили не до конца - «Новости»
В прошлом году проблему Dirty COW исправили не до конца - «Новости»6-12-2017, 05:00. Автор: Аникита |
Осенью 2016 года в ядре Linux была выявлена и исправлена уязвимость CVE-2016-5195, получившая имя Dirty COW, существовала в коде начиная с версии 2.6.22, то есть с 2007 года. Проблема была связана с тем, как подсистема памяти ядра работает с механизмом copy-on-write (COW). Эксплуатируя баг можно спровоцировать так называемое состояние гонки. В итоге неавторизованный локальный пользователь получает доступ к memory mappings с правом записи, тогда как в нормальной ситуации доступ должен ограничивать только чтением (read-only). Кроме того, Dirty COW представляла проблему для устройств, работающих на базе Android. К примеру, Dirty COW и ее производные можно использовать против Android для получения root-доступа к системе. Также от Dirty COW не спасала даже контейнерная виртуализация. Теперь, спустя год после обнаружения уязвимости, выяснилось, что тогда проблему Dirty COW устранили не до конца. К такому выводу пришли эксперты компании Bindecy, уже опубликовавшие все подробности проведенного исследования в своем блоге. Так, оригинальная проблема касалась функции get_user_pages, которая используется для получения реальных физических страниц, стоящих за виртуальными адресами. По сути, уязвимость позволяла осуществлять запись для страниц с привилегиями read-only. Но, по словам исследователей, патч лишь «научил» get_user_pages запоминать тот факт, что цикл COW уже был пройден.
Исследователям удалось обнаружить проблему, связанную с работой pmd_mkdirty() и touch_pmd(). Вследствие бага get_user_pages может обратиться к touch_pmd() и добиться подмены содержимого PMD (Page Medium Directory), сделав его «грязным». Данный сценарий нарушит новую логику работы can_follow_write_pmd(): PMD станет «грязным», не выполнив цикл COW. В итоге запись для больших страниц памяти, промаркированных read-only, по-прежнему будет возможна. Специалисты опубликовали proof-of-concept эксплоит на GitHub и присвоили новой проблеме идентификатор CVE-2017–1000405. Для ядра Linux уже был подготовлен патч, и все крупные дистрибутивы должны обновиться в ближайшее время. Перейти обратно к новости |