<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Уязвимость в Python-модуле TarFile, допускающая запись в любые части ФС</title>
    <link>https://opennet.me/openforum/vsluhforumID3/137034.html</link>
    <description>Во входящем в штатную поставку Python модуле tarfile, предоставляющем функции для чтения и записи tar-архивов, выявлено пять уязвимостей, одной из которых присвоен критический уровень опасности.  Уязвимости устранены в выпусках Python 3.13.4 и 3.12.11. Наиболее опасная уязвимость (CVE-2025-4517) даёт возможность при распаковке специально оформленного архива  записать файлы в любую часть файловой системы. В системных скриптах, использующих tarfile и запускаемых с правами root (например, в утилитах для работы с пакетами и изолированными контейнерами), уязвимость может применяться для повышения своих привилегий или выхода за пределы изолированного контейнера...&lt;br&gt;&lt;br&gt;Подробнее: https://www.opennet.ru/opennews/art.shtml?num=63365&lt;br&gt;</description>

<item>
    <title>Уязвимость в Python-модуле TarFile, допускающая запись в люб... (adolfus)</title>
    <link>https://opennet.me/openforum/vsluhforumID3/137034.html#48</link>
    <pubDate>Tue, 10 Jun 2025 19:30:54 GMT</pubDate>
    <description>То, что вы называете сишными проблемами, на 146&#037; логические проблемы программирования и ответсвенность за это несет программист. Также нужно отметить, что большую часть UB отлавливает компилятор в виде предупреждений и никто не мешает (1) конвертировать все предупреждения в ошибки. Тем не менее, все UB -- это факапы программиста. Никто не мешает (2) выписать из стандарта все случаи UB, повесить на стенку и всякий раз сверяться. А на всякий случай проверять код на утечки и явную тупость, типа использования неинициализированных переменных/объектов. В манах четко описаны все случаи, когда функция возврашает указатель на выделенную внутри этой функции область памяти, а для особо тупых, не понимающих, что если функция стандартной библиотеки возвращает указатель на область памяти, она может внутри вызывать malloc(), там еще и приписка, типа &quot;Программист должен освободить эту память сразу, как только она станет не нужна&quot;. strdup(), например.&lt;br&gt;Читаем документы POSIX насчет разделения ответственности. Эти парни считаю</description>
</item>

<item>
    <title>Уязвимость в Python-модуле TarFile, допускающая запись в люб... (Аноним)</title>
    <link>https://opennet.me/openforum/vsluhforumID3/137034.html#47</link>
    <pubDate>Fri, 06 Jun 2025 19:07:28 GMT</pubDate>
    <description>&amp;gt; Или в ранних версиях нет такого модуля?&lt;br&gt;&lt;br&gt;Ранние версии не поддерживаются, и исправлять там ничего не будут. Не можете обновиться на актуальный питон - вас поломают, и поделом.&lt;br&gt;</description>
</item>

<item>
    <title>Уязвимость в Python-модуле TarFile, допускающая запись в люб... (Аноним)</title>
    <link>https://opennet.me/openforum/vsluhforumID3/137034.html#46</link>
    <pubDate>Fri, 06 Jun 2025 18:01:17 GMT</pubDate>
    <description>&amp;gt; static int sanitize_path_cwdonly(char *buf /* modify inplace */); &lt;br&gt;&lt;br&gt;И как это будет работать? Допустим в пути симлинк, и когда это санитайзер будет вычислять канонический путь от корня, он получит более длинную строку, чем размер буфера, который он кстати даже не знает. Что ему делать в такой ситуации?&lt;br&gt;&lt;br&gt;Ты мыслишь так, как мыслили диды в 80-х годах. И с таким мышлением, у тебя код вечно будет в багах. Причём и санитизировать пути тебе не удастся полностью, и с памятью работать корректно тоже, потому что пытаясь решить первую проблему, ты начинаешь рыть себе яму второй проблемы.&lt;br&gt;</description>
</item>

<item>
    <title>Уязвимость в Python-модуле TarFile, допускающая запись в люб... (Аноним)</title>
    <link>https://opennet.me/openforum/vsluhforumID3/137034.html#45</link>
    <pubDate>Fri, 06 Jun 2025 16:59:37 GMT</pubDate>
    <description>РЕПЛ &amp;#8212; это в лиспах. Больше нигде не видел даже отдалённо напоминающего. Все попытки создать подобное в других языках выгдядят как детская поделка из пластилина и желудей, и имеет чуть большую полезность.&lt;br&gt;</description>
</item>

<item>
    <title>Уязвимость в Python-модуле TarFile, допускающая запись в люб... (Ustas)</title>
    <link>https://opennet.me/openforum/vsluhforumID3/137034.html#44</link>
    <pubDate>Fri, 06 Jun 2025 16:12:14 GMT</pubDate>
    <description>А что не так - телячий язык под брусничным соусом это что-то&amp;#8230;&lt;br&gt;</description>
</item>

<item>
    <title>Уязвимость в Python-модуле TarFile, допускающая запись в люб... (Аноним)</title>
    <link>https://opennet.me/openforum/vsluhforumID3/137034.html#43</link>
    <pubDate>Fri, 06 Jun 2025 16:08:02 GMT</pubDate>
    <description>&amp;gt;С такими рунами&lt;br&gt;&lt;br&gt;Щито поделать, десу. Ну вот не завезли в мейнстрим ничего похожего.&lt;br&gt;</description>
</item>

<item>
    <title>Уязвимость в Python-модуле TarFile, допускающая запись в люб... (Аноним)</title>
    <link>https://opennet.me/openforum/vsluhforumID3/137034.html#42</link>
    <pubDate>Fri, 06 Jun 2025 15:01:07 GMT</pubDate>
    <description>&amp;gt;Решением будет запрет использовать API открытия файлов стандартной библиотеки&lt;br&gt;&lt;br&gt;Ну что вы так с козырей то заходите? Если использовать линтер, то и раст внезапно не нужен, так как проверка владения может быть на стороне линтера. Но есть одна проблема: сишники являются идеологическими противниками любых линтеров, а ещё, они изобретают велосипеды. Так что удачи хотя-бы одного сишника уболтать на это.&lt;br&gt;&amp;gt;Кстати, твой пример не спасает, например, от симлинков&lt;br&gt;&lt;br&gt;Разумеется, вы не правы, я это проверил. Поскольку в окамле принято использовать библиотеки, а не велосипедить каждый раз, то данный случай в библиотеке учтён. Что опять таки выгодно отличает окамл от си.&lt;br&gt;</description>
</item>

<item>
    <title>Уязвимость в Python-модуле TarFile, допускающая запись в люб... (Аноним)</title>
    <link>https://opennet.me/openforum/vsluhforumID3/137034.html#41</link>
    <pubDate>Fri, 06 Jun 2025 14:51:21 GMT</pubDate>
    <description>&amp;gt;это просто тот же самый фильтр в стрингбилдере, который просто за вас кто-то написал.&lt;br&gt;&lt;br&gt;Нет. read_dir не примет в качестве аргумента строку, будет ошибка компиляции. А дальше, предполагается, что человек пойдёт в документацию, и выяснит, как это сделать правильно.&lt;br&gt;&amp;gt; static int sanitize_path_cwdonly(char *buf /* modify inplace */);&lt;br&gt;&lt;br&gt;Знаете, в чём проблема вашего кода? Это просто объявление функции, без тела. Языку си уже больше полувека, а вы до сих пор приводите гипотетическое решение, а не ссылку на хотя-бы сколь нибудь популярную сишную библиотеку. И никаких намёков, что это решение будет хоть в каком-то виде, хотя-бы когда-то.&lt;br&gt;</description>
</item>

<item>
    <title>Уязвимость в Python-модуле TarFile, допускающая запись в люб... (Аноним)</title>
    <link>https://opennet.me/openforum/vsluhforumID3/137034.html#40</link>
    <pubDate>Fri, 06 Jun 2025 14:36:46 GMT</pubDate>
    <description>Это не решение проблемы. Решением будет запрет использовать API открытия файлов стандартной библиотеки, и предоставление альтернативного API, который будет проверять пути. За попытки использовать стандартную библиотеку расстреливать на месте. Можно скрипт написать, который будет проверять коммиты на наличие вызовов функций стандартной библиотеки, реджектить эти коммиты и вызывать расстрельную команду.&lt;br&gt;&lt;br&gt;Довольно просто с организационной точки зрения. Но язык тут ни при чём.&lt;br&gt;&lt;br&gt;Кстати, твой пример не спасает, например, от симлинков, которые могут выводить за пределы того дерева файлов, которым ты хочешь ограничить свою программу.&lt;br&gt;</description>
</item>

</channel>
</rss>
