четверг, 21 января 2016 г.

Astra Linux и критическая уязвимость в ядре Linux.

На днях интернет заполнился новостями об обнаружнии критической уязвимости в ядре Linux, находящейся там ещё с 2012 года:


Вот лишь малая часть таких публикаций:

Уязвимость ядра Linux ставит под удар миллионы пользователей Android 

В ядре Linux обнаружена уязвимость, позволяющая поднять привилегии в системе

Для проверки устойчивости Astra Linux Special Edition 1.4 к данной уязвимости, мною было решено попробовать данный эксплоит в отчечественной защищённой системе.

Эксплоит взят по данной ссылке.

Компилировать пришлось на другой машине, поскольку в базовый дистрибутив Astra Linux средства разработки и компилятор не входят (было бы странно, если бы они присутствали на защищённом объекте).

Затем в Astra Linux Special Edition пришлось выключить замкнутую программную среду, что бы разрешить системе запускать неподписанные бинарники.

Понятно, что такими действиями мы сами серьёзным образом нарушаем защиту системы, но должны же мы хоть как-то проверить эксплоит :)

Эксплоит был скомпилирован со следующими параметрами:

gcc cve_2016_0728.c -o cve_2016_0728 -lkeyutils -Wall

Затем через файлообменник скомпилированный эксплоит был передан на машину с Astra Linux Special Edition 1.4 и помещён в каталог /tmp, поскольку запуск из раздела домашнего пользователя исполняемых файлов запрещён.

 В Astra Linux Special Edition в поставке имеется два типа ядра: generic и pax

Pax-ядро, по идее, должно быть более защищённым по отношению именно к эксплоитам, поскольку существенным образом ограничивает права программ по запуску некорркетного исполняемого кода.

Итак, решено проверить оба ядра, что и было сделано.

Первым на проверку ушло ядро generic:


Как мы видим, эксплоит отработал до конца, однако повысить права пользователя не удалось, поскольку сработала система защиты, в результате чего пользователь принудительно оказался в упрощённой оболочке sh с прежними правами.

Далее я проверил на данную уязвимость ядро pax:


Как мы видим, pax ядро не стало церемониться с данным эксплоитом и просто убило его, как только программа выполнила некорректную инструкцию (примерно через минут 25 после запуска).

Таким образом, можно констатировать, что релиз 1.4, выпущенный в начале 2015 года устойчив к актуальным уязвимостям в ядре Linux (обнаруженным только в 2016 году), во многом благодаря своей встроенной системе защиты.

Понятно, что на по настоящему защищённых объектах даже запустить в Astra Linux Special Edition такой эксплоит - уже большая проблема, в условиях замкнутой программной среды, где каждый исполняемый файл должен быть подписан доверенным ключом.

Но даже сознательно отключив эту защиту, мы не смогли получить доступ к правам суперпользователя.

Дополнительно стоит отметить правильность подхода разработчиков Astra Linux в применении ядра с патчем pax, который существенным образом повышает защищённость системы.

1 комментарий:

  1. > Таким образом, можно констатировать, что релиз 1.4, выпущенный в начале 2015 года устойчив к актуальным уязвимостям в ядре Linux (обнаруженным только в 2016 году), во многом благодаря своей встроенной системе защиты.

    Таким образом, можно констатировать, что вы не разобрались в матчасти проблемы и запустив пустышку кричите о защищенности системы.

    Опубликованный PoC сделан под конкретную версию ядра, конкретной ОС, он не работает ни в дебианах, ни в генту, ни в слаках. Это значит что эти системы защищены? Конечно нет. Пара небольших настроек и патчей опубликованного PoC позволяют получить root на этих системах.

    У меня нету Astra, но думаю что в ней это тоже сработает, если тестер будет грамотным.

    ОтветитьУдалить