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

<item>
    <title>Уязвимость в подсистеме io_uring, позволяющая получить приви... (n00by)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/133278.html#153</link>
    <pubDate>Wed, 03 Apr 2024 16:39:16 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt; let global_structures = Mutex::new(GlobalStructures::new()); &lt;br&gt;&amp;gt; Если твой обработчик сделал: &lt;br&gt;&amp;gt; if let Ok(gs) = global_structures.lock() &#123; &lt;br&gt;&amp;gt;     // то здесь у него есть эксклюзивный доступ &lt;br&gt;&amp;gt; к этим структурам через gs &lt;br&gt;&amp;gt; &#125; &lt;br&gt;&amp;gt; Подобный подход наверное не очень хорош, когда речь идёт о файловой системе, &lt;br&gt;&amp;gt; но файловая система это лишь один из возможных примеров. А если &lt;br&gt;&amp;gt; ты уже получив гарантии эксклюзивности доступа будешь использовать атомарный Arc, вместо &lt;br&gt;&amp;gt; Rc, то тебе наплевать на производительность щтоле?&lt;br&gt;&lt;br&gt;Подобный подход вообще не очень хорош, потому что все вызвавшие syscall приложения кроме одного дружно остановились в одном месте. О какой производительности говорить, когда мютекс вызвал планировщик и процессор принялся исполнять какие-то другие потоки? Сравнивать перезагнузку контекстов с каким-то счётчиком?&lt;br&gt;&lt;br&gt;&amp;gt;&amp;gt; placement new не нужна куча.&lt;br&gt;&amp;gt; А, ты хвастаться знаниями пришёл и докапываешься к словам, ожидая когда я &lt;br&gt;&amp;gt; начну комплименты твоему интеллекту и по</description>
</item>

<item>
    <title>Уязвимость в подсистеме io_uring, позволяющая получить приви... (n00by)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/133278.html#152</link>
    <pubDate>Wed, 03 Apr 2024 15:46:58 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt; в любой реализации кучи, которая отдельно следит за маппингом памяти, отдельно &lt;br&gt;&amp;gt; за занятыми виртуальными адресами.&lt;br&gt;&amp;gt; В данном частном случае, я отмечу, всё было сделано так, что в &lt;br&gt;&amp;gt; момент, когда страницы надо было анмапить, было невозможно решить надо ли &lt;br&gt;&amp;gt; анмапить или не надо, потому что владельцем этих страниц мог быть &lt;br&gt;&amp;gt; юзерспейс, если он мапил, или кернелспейс, если мапил он.&lt;br&gt;&amp;gt; То есть в ядре было понятно, что можно (и нужно) реклаймить виртуальную &lt;br&gt;&amp;gt; память из-под буферов и помечать свободной, а вот что делать с &lt;br&gt;&amp;gt; физической памятью уже было не ясно, потому что ключевая для принятия &lt;br&gt;&amp;gt; решения информация была утеряна к тому моменту.&lt;br&gt;&lt;br&gt;Вот эту последнюю проблему и решает RAII. Всё освобождается в одном месте - деструкторе (а что именно освобождается - это вообще дело десятое). Но может так оказаться, что всё это затруднительно завернуть в одну обёртку. Потому что архитектуру проектировали под язык Си и без расчёта на такое. То есть я веду вовсе не к тому, что плю</description>
</item>

<item>
    <title>Уязвимость в подсистеме io_uring, позволяющая получить приви... (Аноним)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/133278.html#151</link>
    <pubDate>Wed, 03 Apr 2024 13:12:49 GMT</pubDate>
    <description>&amp;gt;&amp;gt; Если первое, то там оно не решается при помощи shared_ptr. Там память&lt;br&gt;&amp;gt;&amp;gt; была освобождена, но не была отмаплена.&lt;br&gt;&amp;gt; Значит решается другим частным случаем RAII, где освобождение всех ресурсов происходит в одной точке?&lt;br&gt;&lt;br&gt;Это решается интеллектом, который должен остановиться и подумать, что речь идёт о двух уровнях динамической аллокации. Аллокация виртуальной памяти отдельно, аллокация физической памяти, чтобы пополнить виртуальую, тоже отдельно. Ты можешь видеть это в любой реализации кучи, которая отдельно следит за маппингом памяти, отдельно за занятыми виртуальными адресами.&lt;br&gt;&lt;br&gt;В данном частном случае, я отмечу, всё было сделано так, что в момент, когда страницы надо было анмапить, было невозможно решить надо ли анмапить или не надо, потому что владельцем этих страниц мог быть юзерспейс, если он мапил, или кернелспейс, если мапил он.&lt;br&gt;&lt;br&gt;То есть в ядре было понятно, что можно (и нужно) реклаймить виртуальную память из-под буферов и помечать свободной, а вот что делать с физической памятью уже было не яс</description>
</item>

<item>
    <title>Уязвимость в подсистеме io_uring, позволяющая получить приви... (Аноним)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/133278.html#150</link>
    <pubDate>Wed, 03 Apr 2024 12:40:18 GMT</pubDate>
    <description>&amp;gt; Такие попытки как раз и будут. Приложение вызвало syscall, далее поток работает в ядре и лезет куда-то в структуры примонтированной ФС. Они общие для всех? Сколько ещё других приложений делают тот же syscall - неизвестно.&lt;br&gt;&lt;br&gt;Представь себе ситуацию:&lt;br&gt;&lt;br&gt;let global_structures = Mutex::new(GlobalStructures::new());&lt;br&gt;&lt;br&gt;Если твой обработчик сделал:&lt;br&gt;&lt;br&gt;if let Ok(gs) = global_structures.lock() &#123;&lt;br&gt;    // то здесь у него есть эксклюзивный доступ к этим структурам через gs&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;Подобный подход наверное не очень хорош, когда речь идёт о файловой системе, но файловая система это лишь один из возможных примеров. А если ты уже получив гарантии эксклюзивности доступа будешь использовать атомарный Arc, вместо Rc, то тебе наплевать на производительность щтоле?&lt;br&gt;&lt;br&gt;&amp;gt; placement new не нужна куча.&lt;br&gt;&lt;br&gt;А, ты хвастаться знаниями пришёл и докапываешься к словам, ожидая когда я начну комплименты твоему интеллекту и познаниям отпускать? Ты очень умный. И много знаешь. Молодей чувак, круто.&lt;br&gt;&lt;br&gt;Но для ясности, давай заменим слово &quot;куча&quot;</description>
</item>

<item>
    <title>Уязвимость в подсистеме io_uring, позволяющая получить приви... (aname)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/133278.html#149</link>
    <pubDate>Wed, 03 Apr 2024 10:23:26 GMT</pubDate>
    <description>ЧСХ, из тысячеглаза, только одна пара нашла лютейший ад, который готовился в liblzma.&lt;br&gt;&lt;br&gt;Так и живём&lt;br&gt;</description>
</item>

<item>
    <title>Уязвимость в подсистеме io_uring, позволяющая получить приви... (12yoexpert)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/133278.html#148</link>
    <pubDate>Wed, 03 Apr 2024 10:10:17 GMT</pubDate>
    <description>где-то проводили конкурск на самый короткий и долгокомпилирующийся код на си. там чел каким-то кривым include-ом отправил компилятор на вечную компиляцию&lt;br&gt;</description>
</item>

<item>
    <title>Уязвимость в подсистеме io_uring, позволяющая получить приви... (n00by)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/133278.html#147</link>
    <pubDate>Wed, 03 Apr 2024 09:23:06 GMT</pubDate>
    <description>&amp;gt;&amp;gt;&amp;gt; Но найти все указатели хранящие данный адрес в общем случае может только&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; сборщик мусора.&lt;br&gt;&amp;gt;&amp;gt; В частном хватает std::shared_ptr&amp;lt;&amp;gt;.&lt;br&gt;&amp;gt; Ты сейчас говоришь про случай описанный в новости, или просто произносишь общую &lt;br&gt;&amp;gt; фразу о том, что иногда все эти сложности решаются при помощи &lt;br&gt;&amp;gt; shared_ptr?&lt;br&gt;&lt;br&gt;Вот прямо сейчас я начну говорить о том, что не стоит вырезать контекст (вернул фразу, на которую отвечал).&lt;br&gt;&lt;br&gt;&amp;gt; Если первое, то там оно не решается при помощи shared_ptr. Там память &lt;br&gt;&amp;gt; была освобождена, но не была отмаплена.&lt;br&gt;&lt;br&gt;Значит решается другим частным случаем RAII, где освобождение всех ресурсов происходит в одной точке?&lt;br&gt;&lt;br&gt;&amp;gt; Если второе, то да, иногда shared_ptr помогает, а иногда оказывается таким тормозом, &lt;br&gt;&amp;gt; постоянно сбрасывая кеши, то лучше бы его и не было.&lt;br&gt;&lt;br&gt;Это понятно, особенно если он внутри косвенный и с подсчётом ссылок (что не является единственно возможной реализацией).&lt;br&gt;&lt;br&gt;&amp;gt;&amp;gt; А Rust что делает? unique_ptr выполняет на этапе компиляции &lt;br&gt;&amp;gt; Неее... В расте есть аналог shared_ptr -- то ли</description>
</item>

<item>
    <title>Уязвимость в подсистеме io_uring, позволяющая получить приви... (n00by)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/133278.html#146</link>
    <pubDate>Wed, 03 Apr 2024 08:44:35 GMT</pubDate>
    <description>&amp;gt;&amp;gt; Не подходит, код ядра выполняется в произвольном потоке.&lt;br&gt;&amp;gt; Это может быть не важно, в каком потоке он выполняется. Главное чтобы &lt;br&gt;&amp;gt; к Rc не было бы попыток конкурентного доступа из разных потоков. &lt;br&gt;&lt;br&gt;Такие попытки как раз и будут. Приложение вызвало syscall, далее поток работает в ядре и лезет куда-то в структуры примонтированной ФС. Они общие для всех? Сколько ещё других приложений делают тот же syscall - неизвестно. &lt;br&gt;&lt;br&gt;&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt; 1. А в ядре никто и не использует std. Под ядро написана &lt;br&gt;&amp;gt; замена std, которая во многом похожа, но всё же заметно различается, &lt;br&gt;&amp;gt; например Vec::new() возвращает Result&amp;lt;Vec, _&amp;gt;, а не Vec. Я не разглядывал &lt;br&gt;&amp;gt; её, но подозреваю что все эти разговоры про Rc и Arc &lt;br&gt;&amp;gt; туда слабо применимы, потому что в ядре очень востребованы обёртки над &lt;br&gt;&amp;gt; сишными типами с рефкаунтами, и для создания таких обёрток Rc и &lt;br&gt;&amp;gt; Arc бесполезны.&lt;br&gt;&amp;gt; 2. Если в ядре нет кучи, то нет никакого смысла говорить про &lt;br&gt;&amp;gt; shared_ptr, use-after-free, и пр. Когда троллишь, следи за толщиной, п</description>
</item>

<item>
    <title>Уязвимость в подсистеме io_uring, позволяющая получить приви... (платиновый спонсор)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/133278.html#145</link>
    <pubDate>Wed, 03 Apr 2024 08:36:49 GMT</pubDate>
    <description>&amp;gt; Ну вот зачем это в ядре по умолчанию, а. Кому оно нужно кроме полутора мегамонстров?&lt;br&gt;&lt;br&gt;Ядро-то ? Правильно, никому оно ненужно. В смысле - настолько чтобы платить вашему б-жку с пальцем по ляму долларов в месяц.&lt;br&gt;&lt;br&gt;Поскреби по кармашкам - может, найдешь? &lt;br&gt;&lt;br&gt;Хахаха! Вот поэтому мы этот дэушка и будим танцыват. Ну и кое что после танцев.&lt;br&gt;&lt;br&gt;</description>
</item>

</channel>
</rss>
