<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: В состав OpenBSD-Current добавлен механизм защиты RETGUARD</title>
    <link>https://www.opennet.me/openforum/vsluhforumID3/114520.html</link>
    <description>В состав компилятора Clang, используемого для сборки базовой системы OpenBSD, интегрирован (http://undeadly.org/cgi?action=article;sid=20180606064444) механизм защиты RETGUARD, нацеленный на усложнение выполнения эксплоитов, построенных с использованием заимствования кусков кода (https://ru.wikipedia.org/wiki/&#037;D0&#037;92&#037;D0&#037;BE&#037;D0&#037;B7&#037;D0&#037;B2&#037;D1&#037;80&#037;D0&#037;B0&#037;D1&#037;82&#037;D0&#037;BD&#037;D0&#037;BE-&#037;D0&#037;BE&#037;D1&#037;80&#037;D0&#037;B8&#037;D0&#037;B5&#037;D0&#037;BD&#037;D1&#037;82&#037;D0&#037;B8&#037;D1&#037;80&#037;D0&#037;BE&#037;D0&#037;B2&#037;D0&#037;B0&#037;D0&#037;BD&#037;D0&#037;BD&#037;D0&#037;BE&#037;D0&#037;B5_&#037;D0&#037;BF&#037;D1&#037;80&#037;D0&#037;BE&#037;D0&#037;B3&#037;D1&#037;80&#037;D0&#037;B0&#037;D0&#037;BC&#037;D0&#037;BC&#037;D0&#037;B8&#037;D1&#037;80&#037;D0&#037;BE&#037;D0&#037;B2&#037;D0&#037;B0&#037;D0&#037;BD&#037;D0&#037;B8&#037;D0&#037;B5#.D0.97.D0.B0.D0.B8.D0.BC.D1.81.D1.82.D0.B2.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5_.D0.BA.D1.83.D1.81.D0.BA.D0.BE.D0.B2_.D0.BA.D0.BE.D0.B4.D0.B0) и приёмов возвратно-ориентированного программирования (ROP, Return-Oriented Programming). &lt;br&gt;Механизм включен только при сборке для архитектуры AMD64.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Суть метода защиты RETGUARD заключается в искажении адреса возврата обработчиков функций. Перед началом обработчика функции добавляется вызов XOR, комбинирующий адрес возвра</description>

<item>
    <title>В состав OpenBSD-Current добавлен механизм защиты RETGUARD (Анонимный Аноним)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID3/114520.html#40</link>
    <pubDate>Sun, 10 Jun 2018 14:57:55 GMT</pubDate>
    <description>Патчу уже около года: https://marc.info/?l=openbsd-tech&amp;m=150317547021396&amp;w=2&lt;br&gt;</description>
</item>

<item>
    <title>В состав OpenBSD-Current добавлен механизм защиты RETGUARD (Анонимный Аноним)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID3/114520.html#39</link>
    <pubDate>Sun, 10 Jun 2018 14:55:37 GMT</pubDate>
    <description>в каждую функцию добавляются следующие инструкции:&lt;br&gt;&lt;br&gt;    mov r11, &#091;cookie&#093;&lt;br&gt;    xor r11, &#091;rsp&#093;&lt;br&gt;    ...&lt;br&gt;    xor r11, &#091;rsp&#093;&lt;br&gt;    cmp r11, &#091;cookie&#093;&lt;br&gt;    jeq 2&lt;br&gt;    int 3&lt;br&gt;    int 3&lt;br&gt;    ret&lt;br&gt;&lt;br&gt;В случае с циклическим чтением, это добавит около 5 &quot;лишних&quot;, но быстрых машинных инструкций. Грубо говоря 5 тактов, если считать, как считали для 80486. Сейчас это намного быстрее&lt;br&gt;</description>
</item>

<item>
    <title>В состав OpenBSD-Current добавлен механизм защиты RETGUARD (Анонимный Аноним)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID3/114520.html#38</link>
    <pubDate>Sun, 10 Jun 2018 14:54:04 GMT</pubDate>
    <description>Он может изменить код только в новых страницах. Загруженные из файла страницы кода не модифицируемы. Эта защита была еще лет 15-20 назад&lt;br&gt;</description>
</item>

<item>
    <title>В состав OpenBSD-Current добавлен механизм защиты RETGUARD (PereresusNeVlezaetBuggy)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID3/114520.html#37</link>
    <pubDate>Sun, 10 Jun 2018 12:14:11 GMT</pubDate>
    <description>&amp;gt;&amp;gt;значением Cookie, которое затем сохраняется в стек.&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;Она живёт в read-only памяти.&lt;br&gt;&amp;gt; ну, пожалуй, read-only stack _действительно_ защитит от возвратного программирования, &lt;br&gt;&amp;gt; но при таком подходе печенки излишни. :) &lt;br&gt;&lt;br&gt;А кто сказал, что эта кука лежит на стеке? Она лежит в памяти по некоему ASLR-нотому адресу. Чтобы утащить куку, да ещё от нужной функции, нужно сделать то, для чего и нужно утащить куку, причём не обрушив программу &amp;#8212; при следующем запуске процесса куки будут уже другие. Это не обычный SSP, где куку можно утащить со стека простым чтением за границами буфера.&lt;br&gt;</description>
</item>

<item>
    <title>В состав OpenBSD-Current добавлен механизм защиты RETGUARD (КО)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID3/114520.html#36</link>
    <pubDate>Sat, 09 Jun 2018 13:39:00 GMT</pubDate>
    <description>&amp;gt;значением Cookie, которое затем сохраняется в стек.&lt;br&gt;&amp;gt;&amp;gt;Она живёт в read-only памяти.&lt;br&gt;&lt;br&gt;ну, пожалуй, read-only stack _действительно_ защитит от возвратного программирования, но при таком подходе печенки излишни. :)&lt;br&gt;</description>
</item>

<item>
    <title>В состав OpenBSD-Current добавлен механизм защиты RETGUARD (КО)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID3/114520.html#35</link>
    <pubDate>Sat, 09 Jun 2018 04:54:13 GMT</pubDate>
    <description>&amp;gt; Так вот сложи, в худшем случае тактов на пихание SALT в стек, в лучшем передача SALT в функци. через регистры&lt;br&gt;&lt;br&gt; Самое забавное, что описываемые Вами действия нужны только для атаки на алгоритм защиты. Ибо по условиям атаки, атакующий может писать в стек (и регистры), но не может создавать страницы с кодом. Таким образом он может подделать и адрес возврата и число по которому надо ксорить (например 0).&lt;br&gt; А просто два ксора адреса возврата по константе (которую бы неплохо инициализировать при загрузки библиотеки в память) это сущие копейки. Ибо на современном этапе главные тормоза - это лишние обращения в память (промахи в кеше).&lt;br&gt;</description>
</item>

<item>
    <title>В состав OpenBSD-Current добавлен механизм защиты RETGUARD (Sw00p aka Jerom)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID3/114520.html#32</link>
    <pubDate>Fri, 08 Jun 2018 13:04:35 GMT</pubDate>
    <description>Так суть механизма RETGUARD, не от закрытия каких-то багов, а от предотвращения дальнейшей эксплуатации бага (того же переполнения стека). А так если даже предотвращается эксплуатация, но никак не защитит от DOS и приведёт в любом случае к падению приложения. Если имеется возможность как-то получить результат ксора, то легко можно вычислить ту самую куку, которая непонятно когда вычисляется (формируется) на этапе компиляции или в рантайме, одна ли она для всех ретурнов или разная, и внизу в коментах задали наводящий вопрос - а как валидируется потом реальный адресс возврата (хотя его валидация не важна, приложение будет падать при &quot;хер пойми ретурн адресе&quot;, а что когда он неожиданно укажет на валидное место?). Доказано - РОП идеальный механизм, которому нужно противодействовать только, как я думаю, попыткой переосмысления всей Фоннеймановской архитектуры, как минимум вынести хранения адресов возврата из стека куда нить в другое место :)&lt;br&gt;</description>
</item>

<item>
    <title>В состав OpenBSD-Current добавлен механизм защиты RETGUARD (PereresusNeVlezaetBuggy)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID3/114520.html#30</link>
    <pubDate>Fri, 08 Jun 2018 08:40:10 GMT</pubDate>
    <description>&amp;gt; Ну вот. Существенно хуже, чем я ожидал, кстати.&lt;br&gt;&lt;br&gt;SSP обычная на момент внедрения отъедала около 5&#037; в рантайме (правда, SSP, в отличие от retguard, используется не для всех функций), так что могло быть и хуже. :)&lt;br&gt;</description>
</item>

<item>
    <title>В состав OpenBSD-Current добавлен механизм защиты RETGUARD (Crazy Alex)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID3/114520.html#29</link>
    <pubDate>Fri, 08 Jun 2018 08:37:43 GMT</pubDate>
    <description>Ну вот. Существенно хуже, чем я ожидал, кстати.&lt;br&gt;</description>
</item>

</channel>
</rss>
