<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Linux Forum &mdash; В OpenBSD добавлена новая защита от атак на основе заимствования кусков кода]]></title>
	<link rel="self" href="https://linuxforum.ru/extern.php?action=feed&amp;tid=39319&amp;type=atom" />
	<updated>2017-06-25T03:34:29Z</updated>
	<generator>PunBB</generator>
	<id>https://linuxforum.ru/viewtopic.php?id=39319</id>
		<entry>
			<title type="html"><![CDATA[В OpenBSD добавлена новая защита от атак на основе заимствования кусков кода]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=456003#p456003" />
			<content type="html"><![CDATA[<p><br />&nbsp; &nbsp; В состав OpenBSD принят набор патчей с реализацией технологии Trapsleds, позволяющей усложнить выполнение эксплоитов, использующих технику заимствования кусков кода, основанную на приёмах возвратно-ориентированного программирования (ROP, Return-Oriented Programming).&nbsp; &nbsp; &nbsp;Суть добавленного в OpenBSD метода защиты в применении для заполнения добавочных областей (используются для выравнивания блоков с кодом функций по 16-байтовой границе) инструкций INT3 вместо NOP на системах с архитектурой AMD64. Любые последовательности NOP длиннее двух байт заменяются на&nbsp; двухбайтовый короткий переход JMP поверх набора инструкций INT3, используемых для заполнения. Таким образом, при штатном выполнении программа&nbsp; перепрыгнет набор инструкций INT3 вместо холостого выполнения серии инструкций NOP.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;В случае осуществления атаки, при переходе на код гаджта (составляющий эксплоит блок заимствованных машинных инструкций) попадание на область заполнения на базе INT3 вместо NOP приведёт к возникновению исключения и остановке выполнения (SIGTRAP) атакованной программы. При вызове гаджета создатели эксплоита должны будут точно рассчитать адрес перехода, что значительно труднее, чем организовать переход на предшествующую гаджету область заполнения из NOP-инструкций. Разница в производительности при использование JMP-перехода при проведении синтетических тестов почти не заметна и составляет менее&nbsp; 1%, что может рассматриваться как погрешность измерения.&nbsp; &nbsp; &nbsp; <br />Напомним, что техника заимствования кусков кода&nbsp; используется для эксплуатации переполнений буфера в условиях, когда в страницах памяти стека и буфера установлен запрет на исполнение кода. Для организации выполнения кода атакующего в таких условиях логика выполнения shell-кода формируется с использованием методов возвратно-ориентированного программирования (ROP) -&nbsp; атакующий не пытается разместить свой код в памяти, а оперирует уже имеющимися в загруженных библиотеках кусками машинных инструкций, завершающихся инструкцией возврата управления (как правило, это окончания библиотечных функций).&nbsp; Работа эксплоита сводится к построению цепочки вызовов подобных блоков (&quot;гаджетов&quot;) для получения нужной функциональности. Для автоматизации выявления гаджетов применяются специальные инструменты. Используя готовые блоки&nbsp; машинных инструкций (гаджеты) можно организовать достаточно сложные операции, в том числе организовать работу условных операторов и циклов.&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; Источник: <strong>http://www.opennet.ru/opennews/art.shtml?num=46759</strong><br />&nbsp; &nbsp; <br /><a href="http://www.opennet.ru/opennews/art.shtml?num=46759">_источник</a></p>]]></content>
			<author>
				<name><![CDATA[R2-D2]]></name>
				<uri>https://linuxforum.ru/profile.php?id=40794</uri>
			</author>
			<updated>2017-06-25T03:34:29Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=456003#p456003</id>
		</entry>
</feed>
