<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Уязвимости в подсистеме eBPF, позволяющие обойти защиту от атак класса Spectre</title>
    <link>https://opennet.dev/openforum/vsluhforumID3/124593.html</link>
    <description>В ядре Linux выявлена уязвимость (CVE-2021-33624), позволяющая использовать подсистему еBPF для обхода защиты от уязвимостей класса Spectre, дающих возможность определить содержимое памяти  в результате создания условий для спекулятивного выполнения определённых операций. Для атаки Spectre требуется наличие в привилегированном коде определённой последовательности команд, приводящих к спекулятивному выполнению инструкций. Через манипуляцию с передаваемыми для выполнения BPF-программами можно добиться генерации подобных инструкций в еBPF и добиться утечки по сторонним каналам содержимого памяти ядра и произвольных областей физической памяти...&lt;br&gt;&lt;br&gt;Подробнее: https://www.opennet.ru/opennews/art.shtml?num=55371&lt;br&gt;</description>

<item>
    <title>Уязвимости в подсистеме eBPF, позволяющие обойти защиту от а... (MATPOC)</title>
    <link>https://opennet.dev/openforum/vsluhforumID3/124593.html#189</link>
    <pubDate>Fri, 25 Jun 2021 09:08:04 GMT</pubDate>
    <description>curl https://make-linux-fast-again.com&lt;br&gt;</description>
</item>

<item>
    <title>Уязвимости в подсистеме eBPF, позволяющие обойти защиту от а... (Сейд)</title>
    <link>https://opennet.dev/openforum/vsluhforumID3/124593.html#188</link>
    <pubDate>Thu, 24 Jun 2021 22:22:06 GMT</pubDate>
    <description>Пора переходить на RISC-V.&lt;br&gt;</description>
</item>

<item>
    <title>Уязвимости в подсистеме eBPF, позволяющие обойти защиту от а... (Онаним)</title>
    <link>https://opennet.dev/openforum/vsluhforumID3/124593.html#187</link>
    <pubDate>Thu, 24 Jun 2021 20:18:02 GMT</pubDate>
    <description>Отличный пример перехода от синтаксиса iptables к синтаксису nft получился :D&lt;br&gt;&lt;br&gt;Так-то да, согласен, там не чистая императивность, и не чистая декларативность.&lt;br&gt;&lt;br&gt;Участие conntrack например явно декларативно, &quot;мы тут NAT сделали, а теперь паши, родимый&quot;.&lt;br&gt;&lt;br&gt;Для декларативности же правил конкретно не хватает того, что я уже написал в примере tcpdump vs iptables, в iptables нам приходится конкретику описывать. Вида &quot;если до роутинга (PREROUTING) пришло на порт UDP 1234 (-p udp -m udp --dport 1234) нас самих, заменить назначение на 1.2.3.4 (-j DNAT --to 1.2.3.4)&quot;, и ещё с дополнением - &quot;пропуская трафик (FORWARD), разрешить пакеты отовсюду в сторону 1.2.3.4:1234 (-d 1.2.3.4 -p udp -m udp --dport 1234)&quot;, которое обязано учитывать поменявшуюся в первом императиве ситуацию.&lt;br&gt;&lt;br&gt;Чисто декларативным аналогом правил выше является например функция &quot;проброс портов&quot; в интерфейсах роутеров: &quot;пробросить порт 1234 на сервер 1.2.3.4&quot; - там есть это самое &quot;как-нибудь&quot;, которое декларативный интерфейс разбирает в императив тог</description>
</item>

<item>
    <title>Уязвимости в подсистеме eBPF, позволяющие обойти защиту от а... (Ordu)</title>
    <link>https://opennet.dev/openforum/vsluhforumID3/124593.html#186</link>
    <pubDate>Thu, 24 Jun 2021 20:04:04 GMT</pubDate>
    <description>&amp;gt; Я бы сравнил цепочки iptables с &lt;br&gt;&amp;gt; function some_chain(packet) &lt;br&gt;&amp;gt; &#123; &lt;br&gt;&amp;gt;   if (condition1) some_cool_action_1; &lt;br&gt;&amp;gt;   if (condition2) &#123; packet.action = J_ACCEPT; return true; &#125; &lt;br&gt;&amp;gt;   if (condition3) &#123; packet.action = J_REJECT; return true; &#125; &lt;br&gt;&amp;gt;   if (condition4) &#123; if (some_subchain(packet)) return true; &#125; &lt;br&gt;&amp;gt;   ...&lt;br&gt;&amp;gt;   return false; &lt;br&gt;&amp;gt; &#125; &lt;br&gt;&lt;br&gt;Ну это и есть декларативное программирование. То что оно в C оно синтаксически не отличается -- это лишь ограничения C&apos;шного синтаксиса. Хотя, с другой стороны, даже в C ты не будешь так делать, потому что написанное не позволяет тебе собирать цепочки в рантайме. Ты будешь делать примерно так:&lt;br&gt;&lt;br&gt;struct Rule &#123;&lt;br&gt;    bool (*condition)(struct Packet *p, struct Environment *e);&lt;br&gt;    enum ActionReturns (*action)(struct Packet *p, struct Environment *e);&lt;br&gt;&#125;;&lt;br&gt;&lt;br&gt;Потом ты напишешь что-то типа:&lt;br&gt;&lt;br&gt;void netfiler_do_chain(struct Rule chain&#091;&#093;, size_t n, struct Packet *p) &#123;&lt;br&gt;    struct Environment e = make_environment();&lt;br&gt;    for(i = 0; i &amp;lt; n; i ++) &#123;&lt;br&gt;        switch(chain&#091;i&#093;.cond</description>
</item>

<item>
    <title>Уязвимости в подсистеме eBPF, позволяющие обойти защиту от а... (Онаним)</title>
    <link>https://opennet.dev/openforum/vsluhforumID3/124593.html#185</link>
    <pubDate>Thu, 24 Jun 2021 19:41:58 GMT</pubDate>
    <description>То, да не то.&lt;br&gt;Многие -j являются заодно эквивалентом return, после чего flow прерывается, в этом очень существенное отличие от декларативного варианта.&lt;br&gt;Сложные вещи строятся на gosub&apos;ах, но они являются частью императивного flow, не образуя законченных цепочек исполнения, и могут вывалиться в return на любом этапе.&lt;br&gt;И т.д. и т.п.&lt;br&gt;&lt;br&gt;Я бы сравнил цепочки iptables с&lt;br&gt;&lt;br&gt;function some_chain(packet)&lt;br&gt;&#123;&lt;br&gt;  if (condition1) some_cool_action_1;&lt;br&gt;  if (condition2) &#123; packet.action = J_ACCEPT; return true; &#125;&lt;br&gt;  if (condition3) &#123; packet.action = J_REJECT; return true; &#125;&lt;br&gt;  if (condition4) &#123; if (some_subchain(packet)) return true; &#125;&lt;br&gt;  ...&lt;br&gt;  return false;&lt;br&gt;&#125;&lt;br&gt;</description>
</item>

<item>
    <title>Уязвимости в подсистеме eBPF, позволяющие обойти защиту от а... (Ordu)</title>
    <link>https://opennet.dev/openforum/vsluhforumID3/124593.html#184</link>
    <pubDate>Thu, 24 Jun 2021 18:19:23 GMT</pubDate>
    <description>Отличительная черта императивщины, от декларативщины ведь в наличии control-flow, iptables позволяет настраивать data-flow.&lt;br&gt;&lt;br&gt;Скажем такие штуки, как:&lt;br&gt;&lt;br&gt;Window::new()&lt;br&gt;    .title(&quot;My Window&quot;)&lt;br&gt;    .width(800)&lt;br&gt;    .height(600)&lt;br&gt;...&lt;br&gt;&lt;br&gt;считаются функциональщиной, так же как, я не знаю:&lt;br&gt;&lt;br&gt;let result = my_array.iter()&lt;br&gt;    .filter(&amp;#124;x&amp;#124; x &amp;lt; 42)&lt;br&gt;    .map(&amp;#124;x&amp;#124; x*x)&lt;br&gt;    .collect();&lt;br&gt;&lt;br&gt;В императивном стиле то же самое будет выглядеть как:&lt;br&gt;&lt;br&gt;let mut result = Vec::new();&lt;br&gt;for x in my_array &#123;&lt;br&gt;    if x &amp;lt; 42 &#123;&lt;br&gt;        result.push(x*x)&lt;br&gt;    &#125;&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;Во втором случае явно описывается control-flow, в первом описывается data-flow. А в первом случае, это ведь почти цепочка фильтров-преобразований как в iptables.&lt;br&gt;</description>
</item>

<item>
    <title>Уязвимости в подсистеме eBPF, позволяющие обойти защиту от а... (Брат Анон)</title>
    <link>https://opennet.dev/openforum/vsluhforumID3/124593.html#183</link>
    <pubDate>Thu, 24 Jun 2021 14:26:36 GMT</pubDate>
    <description>&amp;gt; как обычно, промахнуться своими фантазиями мимо реальности &lt;br&gt;&amp;gt; (или где там на скрине можно путти с десяточкой увидеть?) &lt;br&gt;&lt;br&gt;Как на чужом компе это можно было разглядеть?))&lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Уязвимости в подсистеме eBPF, позволяющие обойти защиту от а... (Онаним)</title>
    <link>https://opennet.dev/openforum/vsluhforumID3/124593.html#182</link>
    <pubDate>Thu, 24 Jun 2021 13:00:55 GMT</pubDate>
    <description>Чисто для сравнения.&lt;br&gt;&lt;br&gt;tcpdump тебе на port 1234 отдаст и tcp и udp и чёрта лысого&lt;br&gt;Вот это - декларативщина. Где он сам разберётся, где у него порт.&lt;br&gt;А в iptables тебе надо -p tcp или -p udp эксплицитно, да ещё и -m tcp / -m udp загрузить, чтобы --dport сработал. А если диапазон, то уже multiport отдельным указанием.&lt;br&gt;</description>
</item>

<item>
    <title>Уязвимости в подсистеме eBPF, позволяющие обойти защиту от а... (Онаним)</title>
    <link>https://opennet.dev/openforum/vsluhforumID3/124593.html#181</link>
    <pubDate>Thu, 24 Jun 2021 12:59:02 GMT</pubDate>
    <description>Ну вот MASQUERADE как раз и &quot;не рецепт&quot;. Точнее, на половину &quot;не рецепт&quot;.&lt;br&gt;А SNAT и DNAT - вполне себе &quot;рецепты&quot;.&lt;br&gt;ACCEPT, REJECT - 100&#037; рецепты.&lt;br&gt;И много чего прочего.&lt;br&gt;Ну и матчи - абсолютные рецепты по пакету, просто оформленные человеческим языком - в любом случае тебе к порту придётся протокол указывать :D Да ещё и какой модуль вгрузить.&lt;br&gt;</description>
</item>

</channel>
</rss>
