The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

46% Python-пакетов в репозитории PyPI содержат потенциально небезопасный код, opennews (??), 30-Июл-21, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


148. "46% Python-пакетов в репозитории PyPI содержат потенциально ..."  +/
Сообщение от Аноним (-), 01-Авг-21, 05:38 
> Я напишу свой eval через дочерний интерпретатор, тебе легче от этого станет?

1. Это больше приседаний, случайно, для своего удобства это уже все же никто делать не будет, прорубятся только самые одаренные и неленивые самострельщики.
2. По счастью, до меня это никогда не долетит, ибо я разборчивая скотина и не пользуюсь порождениями таких программистов. Облом, да? :)
3. Это не вы pybitmessage случайно кодили, кстати?

> Или дальше запретить запускать дочерние процессы?

Вообще-то я именно это и делаю в сетевых сервисах например... и если какому-нибудь сетевому серваку захочется в выполнение процесса, это немедленно гарантирует его пристрел и дальнейший аудит или замену. А с системдой это все еще и довольно легко организуется, ибо seccomp может вот именно что вырубить вам к чогту exec* да и W^X может быть и в файловой системе, то-есть, что врайтабельно то не экзекутабельно, а то что экзекутабельно - либо совсем не доступно, либо жестко влеплено только для чтения.

При очень сильном желании, конечно, гуру бэкдоринга сможет и это попытаться обойти. Но во первых высокий риск запалиться, во вторых высокий риск что что-то не сработает, в третьих это надо основательно по#$%ться уже и случайно так уж точно не сделаешь. Заодно и отмазаться при поимке не получится уже. Будет "споткнулся, упал на мой кулак своим лицом, и так 5 раз подряд".

Ответить | Правка | Наверх | Cообщить модератору

159. "46% Python-пакетов в репозитории PyPI содержат потенциально ..."  +/
Сообщение от Аноним (159), 01-Авг-21, 15:59 
>для своего удобства это уже все же никто делать не будет

Конечно же, чем написать копеечную обертку над процессами, побегу переписывать всю логику с eval.
А через какое-то время после запрета в pypi какой-нибудь pyeval появится.

>если какому-нибудь сетевому серваку захочется в выполнение процесса, это немедленно гарантирует его пристрел и дальнейший аудит или замену

И сразу идешь в баню, сесурити вахтёр доморощенный. Или пишешь мне биндинги на C ко всему, что запускается через процессы.

>врайтабельно то не экзекутабельно

python xxx.py, и все. Даже файл писать не обязательно, можно код аргументом передать.
А на самом деле даже процессы сторонние запускать не нужно.
Давай, запрети мне импортировать свежезаписанный py файл как модуль.

В любом случае, я буду писать как удобно мне, а всякие хуру идут лесом.

Ответить | Правка | Наверх | Cообщить модератору

162. "46% Python-пакетов в репозитории PyPI содержат потенциально ..."  +/
Сообщение от Онаним (?), 01-Авг-21, 19:12 
> Конечно же, чем написать копеечную обертку над процессами, побегу переписывать всю логику с eval.

Побежишь, куда денешься. Потому что иначе твоё поделие больше не запустится, и придётся тебе его в виде образа докера со включенным в интерпретаторе eval раздавать.

> И сразу идешь в баню, сесурити вахтёр доморощенный. Или пишешь мне биндинги
> на C ко всему, что запускается через процессы.

А кому ты нужен-то, биндинги тебе писать?

> python xxx.py, и все

И отказ в exec. Дальше см. первый тезис про докер.
Не, на локалхосте - пожалуйста. Но не далее.

Ответить | Правка | Наверх | Cообщить модератору

184. "46% Python-пакетов в репозитории PyPI содержат потенциально ..."  –1 +/
Сообщение от Аноним (144), 02-Авг-21, 13:29 
>А кому ты нужен-то

А ты кому нужен? Девопсы деплоят то, что написали разработчики, а не разработчики выполняют хотелки девопсов. Я написал сервис, описал в каких условиях он работает - будь добр его запустить. Сломанную твоими ограничениями логику переписываешь сам в личное время. Потому что если я дергаю некий инструмент через popen, значит другого способа (кроме переписывания инструмента на питон или написания обертки на C) нет. И потом еще посчитаем, сколько уязвимостей к уже имеющимся в инструменте ты добавил своей оберткой.

>придётся тебе его в виде образа докера
>придётся

претендент на сесурити ыкспертнасть юзает докер только в исключительных случаях. Ясно, понятно. Только когда вся инфраструктура без докера, то это тебе придется моё поделие в образ оформлять. Потому что я свои задачи завершил, а с деплоем выкобениваешься ты.

>отказ в exec

с чего бы? python на разделе с exec. Или ты мне хочешь весь мультипроцессинг сломать запретив создавать дочерние процессы?

Ответить | Правка | Наверх | Cообщить модератору

190. "46% Python-пакетов в репозитории PyPI содержат потенциально ..."  +/
Сообщение от Онаним (?), 02-Авг-21, 22:03 
> А ты кому нужен? Девопсы деплоят то, что написали

Вот девопсам это и объясняй, а не мне :D
Я в т.ч. общую системную полиси генерю, и хрен ты мне что напишешь и задеплоишь вне этой полиси.

Ответить | Правка | Наверх | Cообщить модератору

191. "46% Python-пакетов в репозитории PyPI содержат потенциально ..."  +/
Сообщение от Онаним (?), 02-Авг-21, 22:05 
(не, ты можешь конечно, никому не сказав, но при разборе полётов в случае дыры в твоём эвале - с тебя же и вычтут)
Ответить | Правка | Наверх | Cообщить модератору

175. "46% Python-пакетов в репозитории PyPI содержат потенциально ..."  +/
Сообщение от Аноним (-), 02-Авг-21, 04:52 
> Конечно же, чем написать копеечную обертку над процессами, побегу переписывать
> всю логику с eval.

Ну как бы я по подобным причинам и не собираюсь питонятиной пользоваться, больно там характерная секурити. Небось у вас такого красивого и на system() ума хватит, очень рекомендую, особенно круто в него непроверенные пользовательские данные отдавать.

> А через какое-то время после запрета в pypi какой-нибудь pyeval появится.

Да ну кто бы сомневался что питонисты придумают полунедосвоместимый способ прострела пяток еще раз?

> И сразу идешь в баню, сесурити вахтёр доморощенный. Или пишешь мне биндинги
> на C ко всему, что запускается через процессы.

Ну, мне для начала нафиг не упал твой софт, с таким качеством и секурити, поэтому пишу я тебе только дырку от бублика. А в баню отправляется такой софт с моих систем. Впрочем, он туда обычно и не попадает.

> python xxx.py, и все. Даже файл писать не обязательно, можно код аргументом передать.

Как тебе идея получить -1 на эту потугу, вебмакака? А прикинь, после сборки вон той песочницы там может не быть ни 1 бинаря. А что, прога уже запущена, ей больше не надо ничо. Если она что-то внешнее дергает это уже повод провести аудит этого крапа и скорее всего стереть его, либо за бэкдор, либо за непотребный код. Легитимных поводов для exec из например сетевого сервиса очень немного.

> А на самом деле даже процессы сторонние запускать не нужно.

Вообще-то именно так, покуда вы не менеджер сервисов или нечто подобное. А для сетевых штук это удобный хук для детекта хаксоров.

> Давай, запрети мне импортировать свежезаписанный py файл как модуль.

Хорошая идея, reason: W^X. Ну то-есть на своем локалхосте ты можешь хоть вирье запускать, а на чем-то сверх того ну тебя такого в пень.

> В любом случае, я буду писать как удобно мне, а всякие хуру идут лесом.

Вот именно это я как раз и делаю - и спасибо за иллюстрацию почему. Мне код с таким качеством и безопасТностью даром не упал.

Ответить | Правка | К родителю #159 | Наверх | Cообщить модератору

185. "46% Python-пакетов в репозитории PyPI содержат потенциально ..."  +/
Сообщение от Аноним (144), 02-Авг-21, 13:46 
>непроверенные пользовательские данные

мои непроверенные пользовательские данные это медиафайлы. И там уязвимостей в нижележащих библиотеках столько, что RCE рано или поздно случится хоть eval отключай, хоть capabilities по самый корень режь.
>W^X

как это остановит importlib? Модуль это не динамическая библиотека, а тот же скрипт, который будет выполняться уже запущенным интерпретатором.

Ответить | Правка | Наверх | Cообщить модератору

198. "46% Python-пакетов в репозитории PyPI содержат потенциально ..."  –1 +/
Сообщение от Аноним (-), 06-Авг-21, 07:02 
> мои непроверенные пользовательские данные это медиафайлы. И там уязвимостей в нижележащих
> библиотеках столько, что RCE рано или поздно случится

Отличный аргумент за то чтобы их в sandbox по максимуму. А то и пересобрать с asan/ubsan если просадка скорости не критична.

Грубо говоря, если RCE не может ничего, кроме счета - вред умеренный. А с должной расстановкой капканов будет легко пойман. Ну вон хук на exec - и при попытке развить успех разовьется... облом для хаксора.

> хоть eval отключай, хоть capabilities по самый корень режь.

Типа, если подхватил гусарский насморк, то нехай и спид заодно заходит? А медиафайлы могут пытаться атаковать и более высокоуровневый обработчик, впихав хитрозадый контент в всякие теги и проч. Правда, удобнее всего так башистов иметь, но пример pybitmessage показал что бывают варианты.

>>W^X
> как это остановит importlib? Модуль это не динамическая библиотека, а тот же
> скрипт, который будет выполняться уже запущенным интерпретатором.

Вообще идея такая чтобы нельзя было догружать извне исполняемые штуки. Eval - самый простой и быстрый способ прострела пяток на этом направлении. Но если вы хотели сказать что в питоне более 9000 способов прострела пяток - наверное, вы правы. Во всяком случае, в battle for wesnoth его пробовали юзать как игровой скриптинг и пришли к тому что догружаемые с сервера дополнений аддоны могут взламывать юзеру систему и это нельзя заткнуть, питон слишком дыряв для этого. И поюзали Lua. А вот этот вполне можно сделать чисто считалкой-скриптилкой без IO наружу и вот так оно урон системе пользователя нанести не может.

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру