<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Linux Forum &mdash; Проект grsecurity опубликовал реализацию механизма защиты RAP для ядра Linux]]></title>
	<link rel="self" href="https://linuxforum.ru/extern.php?action=feed&amp;tid=38473&amp;type=atom" />
	<updated>2017-02-07T04:09:40Z</updated>
	<generator>PunBB</generator>
	<id>https://linuxforum.ru/viewtopic.php?id=38473</id>
		<entry>
			<title type="html"><![CDATA[Проект grsecurity опубликовал реализацию механизма защиты RAP для ядра Linux]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=451914#p451914" />
			<content type="html"><![CDATA[<p><br />&nbsp; &nbsp; Проект grsecurity представил первый выпуск набора патчей с реализацией механизма защиты RAP (Reuse Attack Protector) для ядра Linux, позволяющего блокировать работу эксплоитов, основанных на технике заимствования кусков кода. Набор патчей включает всю запланированную функциональность и опубликован под лицензией GPLv2 в публичной тестовой ветке grsecurity для ядра Linux 4.9 (стабильные ветки grsecurity распространяются платно).&nbsp; &nbsp; &nbsp;Техника заимствования кусков кода используется для эксплуатации переполнений буфера в условиях, когда в страницах памяти стека и буфера установлен запрет на исполнение кода. Для организации выполнения кода атакующего в таких условиях логика выполнения shell-кода формируется с использованием методов возвратно-ориентированного программирования (ROP) -&nbsp; атакующий не пытается разместить свой код в памяти, а оперирует уже имеющимися в загруженных библиотеках кусками машинных инструкций, завершающихся инструкцией возврата управления (как правило, это окончания библиотечных функций).&nbsp; Работа эксплоита сводится к построению цепочки вызовов подобных блоков (&quot;гаджетов&quot;) для получения нужной функциональности. Для автоматизации выявления гаджетов применяются специальные инструменты. Используя готовые блоки&nbsp; машинных инструкций (гаджеты) можно организовать достаточно сложные операции, в том числе организовать работу условных операторов и циклов.&nbsp; &nbsp; &nbsp; &nbsp;Реализованная на уровне ядра защита RAP основана на организации контроля за переходом в точку вызова функции. Для проверки адресов, по которым производится возврат из функций, используется проверочный ключ (RAP cookie), который сохраняется в резервном регистре (r12). Ключ вычисляется сразу после сохранения в стек адреса возврата и проверяется перед осуществлением выхода из функции. Если в момент выхода сохранённый и вычисленный ключи не совпадают, то переход на код функции был произведён не на начало функции.&nbsp; &nbsp; &nbsp; &nbsp;Кроме отслеживания адресов возврата предлагается реализуемая на стороне компилятора техника определения какие функции могут быть вызваны из данного места и куда может быть возвращено управление.&nbsp; Данная часть защиты основана на идее категоризации функций по типам и определении допустимых мест, где могут применяться данные типы. При сборке приложения RAP формирует хэши, идентифицирующие используемые в программе функции, их параметры и тип возвращаемого значения. В процессе работы хэши проверяются на этапе косвенного вызова функции или выхода из функции.&nbsp; &nbsp; &nbsp; &nbsp;Ранее предлагаемые способы защиты от атак с использованием методов возвратно-ориентированного программирования, как правило, основывались на рандомизации адреса загрузки библиотеки, который при технике ASLR меняется при каждом запуске программы. Слабая сторона такого способа в том, что атакующий может подобрать точку входа в библиотеку (определить адрес известной функции) и вычислить смещение для вызова используемых в эксплоите гаджетов, относительная позиция которых в библиотеке сохраняется. Для нарушения вычисленных атакующим смещений гаджетов предлагаются методы перемешивания всех функций системной библиотеки, но они достаточно ресурсоёмки, что мешает их практическому внедрению.&nbsp; &nbsp; &nbsp;Предложенный проектом grsecurity подход позволяет достаточно надёжно блокировать атаки на основе заимствования кусков кода, но при этом оказывает минимальное влияние на производительность. Накладные расходы от применения RAP оцениваются в замедлении работы ядра на 5.4%, что ниже, чем при применении системы защиты от эксплуатации стека SSP (Stack Smashing Protector), используемой в Chrome OS. Отмечается, что в реальных условиях паразитная нагрузка от RAP заметно ниже, чем показатели синтетического теста, оценивающего производительность при&nbsp; наихудшем стечении обстоятельств.&nbsp; &nbsp; <span class="postimg"><img src="https://www.opennet.ru/opennews/pics_base/0_1486455751.png" alt="https://www.opennet.ru/opennews/pics_base/0_1486455751.png" /></span><br />&nbsp; &nbsp; &nbsp; В анонсе также упоминается о подготовке расширенной коммерческой реализации RAP, демонстрирующую более высокую производительность, снабжённую средствами статического анализа во время компиляции, включающую дополнительный высокооптимизированный вероятностный механизм XOR-защиты адресов возврата, поддерживающую C++ и LTO (оптимизация на этапе связывания).&nbsp; Коммерческая редакция развивается для организации финансирования продолжения разработки и проведения исследований в новых направлениях. Также отмечается, что&nbsp; подана заявка на получение патента, описывающего методы, лежащие в основе технологии RAP.<br />&nbsp; &nbsp; Источник: <strong>http://www.opennet.ru/opennews/art.shtml?num=45992</strong><br />&nbsp; &nbsp; <br /><a href="http://www.opennet.ru/opennews/art.shtml?num=45992">_источник</a></p>]]></content>
			<author>
				<name><![CDATA[R2-D2]]></name>
				<uri>https://linuxforum.ru/profile.php?id=40794</uri>
			</author>
			<updated>2017-02-07T04:09:40Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=451914#p451914</id>
		</entry>
</feed>
