LINUX.ORG.RU

Как обезопасить свой компьютер от вредоносного кода из сторонних библиотек/модулей?

 , , , ,


2

4

Привет всем!

В связи с вот этой новостью Специальный вредоносный код в npm-пакете для России и Белоруссии собственно и возник вопрос. Там я уже его задавал, но решил вынести в отдельную тему, т.к. у меня проект несколько другой, да и не node это вообще.

Проект на тему ML, в нём используется:
* Python
* PyCharm
* Docker
* OpenCV
* TF Keras
Плюс куча пакетов Python'а на все случаи жизни, которым нет числа. Точнее, там много разных requirements.txt для разных частей (отдельно для training, отдельно для inference, отдельно для утилит), там есть пересечения в используемых пакетах. Сколько уникальных пока точно не посмотрел. Ну, допустим, штук 150. Никто ведь не помешает в pypi.org положить такую же каку со следующей версией библиотеки, как по ссылке выше, ведь так?

Да, логично зафиксировать версии, ничего просто так не обновлять, а если обновлять, то очень внимательно следить, что изменилось. Но тут легко что-то пропустить. Кроме того, в начале этого месяца уже были обновления (да, надо будет вникнуть, что там).

Локально я ничего не обучаю, однако не всё так просто... Обучение происходит на Азуре следующим образом: у меня запускается Docker контейнер, в нём код для работы с Азурой плюс сам код, который там будет выполняться и обучать модель, плюс все вспомогательные файлы. Всё это запаковывается, отправляется на Азуру, а там становится средой выполнения. Контейнер настроен так, что у него есть доступ наружу, в директорию с проектом. Это так by design, было до меня и просто так переделать это невозможно. Кроме собственно обучения я иногда просто тестирую код каких-то утилит локально, т.к. это многократно быстрее, чем запуск на Азуре ради того, чтобы понять, что оно падает или преобразует входные данные не так, как планировалось. Проекту нужно иметь доступ к камере, а мне нужно в реальном времени и с минимальной задержкой видеть окна с обработанными кадрами.

Всё осложняется тем, что весь проект очень большой 62,4 GiB, 1 772 813 files, 102 363 sub-folders. И это не считая того самого контейнера. Там ещё гигов 15. Да, естественно, не всё это гоняется на Азуру при каждом запуске, только разница (упрощённо говоря).

Как всё это огородить от основной системы и от бекапов (лежат на отдельном винте, делаются каждый вечер самой системой, где запускается рабочая среда)?

Мыслей у меня две:
* Виртуалка, в ней лёгкая система
* Контейнер LXC

В обоих случаях хорошо бы «прокидывать» (X11 сетевая прозрачность, настало твоё время!) окна графических приложений наружу, чтобы не запускать целый DE внутри. Надо чтобы это работало быстро, т.к. видео. И надо какую-то панель изнутри, чтобы запускать программы внутри изолированной среды.

Если LXC:
+ Благодаря единому ядру потребление памяти будет ниже, будет более гибким
+ Аналогично для места на накопителе, т.к. не надо будет выделять какой-то файл образа
+ Работа с файлами будет быстрее, т.к. не будет конструкции «файловая система в файле на файловой системе». Это важно, т.к. много мелких.
+ Проще «прокинуть» web-камеру. Т.е. для этого и делать ничего не надо.
+ Просто организовать прямой доступ к GPU
- Ниже безопасность, т.к. можно эксплуатировать уязвимости ядра
? Как из LXC будет запускаться Docker? Пробовал кто? механизмы у него и у LXC ведь один и те же.

Если виртуалка, я думаю надо что-то максимально лёгкое, вроде QEMU+KVM, с минимальной системой внутри. В этом случае:
+ Выше безопасность, т.к. ядро отдельное
- Больше места занимает
- Управление занимаемым местом не такое гибкое. Да, про динамический образ я в курсе.
- Ниже производительность при работе с файлами, особенно с мелкими
- Надо прокидывать устройства, что тоже снизит производительность
- Ниже производительность из-за эмуляции железа
- Проблемы с быстрым выводом графики
- Потребление памяти не гибкое. Можно использовать ballooning, но не знаю, насколько эффективно оно работает. Да и при старте виртуалка будет потреблять всё равно весь объём.
? Пробовал ли кто прокидывать внутрь виртуалок файловую систему c помощью Virtiofs или чего-то подобного? Смысл в том, чтобы файлы проекта остались доступными и снаружи, так их проще бекапить и не будет накладных расходов на две файловые системы.

Я пока склоняюсь к первому вариантус LXC. Я не думаю, что с пакетами может придти уж очень серьёзная малварь, которая будет эксплуатировать дырки в ядре. Вопрос в основном только в Docker'е, как он будет запускаться.

Какие у кого мысли? Да, я тут не рассматриваю безопасность самой host системы, так то ведь может и с обновлениями ОС что-то попасть, кака какая-то.

P.S.: i7-4770 (да, старичок, но сейчас чего купишь?), 32 GiB, Ubuntu 21.10

★★★★★

Я давно разрабатываю и устанавливаю пропиетарщину в контейнере systemd-nspawn.

LXC не зашёл из-за отсутствия удобоваримой документации, и по умолчанию не заработало. Сыпется миллион разных ошибок, поиск по ним выводит ответы с форумов 10-летней давности, непонятно вообще, пользуется ли этим кто-либо.

А systemd-nspawn прост как три копейки, за полгода ни единой проблемы.

Но докер внутри контейнера не запускал, т.к. мне это не нужно было пока.

emorozov
()
Последнее исправление: emorozov (всего исправлений: 1)
Ответ на: комментарий от emorozov

в контейнере systemd-nspawn

Удобно ли из него «доставать» графику? Как с доступом к устройствам USB?

ls-h ★★★★★
() автор топика

Можно для рядовых пользователей — мы обновляемся или пока нет?
Если есть сторонние репозитории, отключать или необязательно?

w201403
()
Ответ на: комментарий от ls-h

Обычная графика (даже с 3D ускорением) достаётся легко. Использую Xorg, поэтому достаточно обычных средств (переменная DISPLAY, ускорение настраивается тоже одной строкой по ArchWiki).

С USB не работал из контейнера, но думаю, что всё так же будет достаточно просто.

emorozov
()
Ответ на: комментарий от w201403

Подорваться сейчас можно на любом неадеквате.

Хочешь личного спокойствия - сделай бекапы данных и переедь на что-нибудь с территории РФ (тот же Alt). Там хотя бы лично морду набить Шигорину сможешь в случае чего. Ребята у себя хоть немного стабилизируют и проверяют свою платформу, да и им лишние сюрпризы от психов точно не нужны.

ploskov
()
Ответ на: комментарий от ploskov

Кстати про Альт, есть истории узбека? Не видел (кроме Шигорина) живых пользователей альта лет 10.. как оно?

Сертификаты отечественные из коробки есть и надо удалять, или можно спокойно использовать?

mogwai ★★★★★
()
Последнее исправление: mogwai (всего исправлений: 1)

Можно попробовать AppArmour и разрешить пакетным менеджерам доступ только в директорию пакетов.

no-such-file ★★★★★
()
Ответ на: комментарий от vvn_black

Нагадить можно разными способами, в том числе через скрипты выполняемые пакетным менеджером при установке/обновлении

cobold ★★★★★
()
Ответ на: комментарий от vvn_black

гадит не пакетный менеджер

Как пример. Балалайке которую ты разрабатываешь и запускаешь тоже права на запись особо не нужны, кроме логов.

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

которую ты разрабатываешь

Откуда такое ограничение?

Речь про любой опенсорц, и в первую очерердь про тот, что использует для построения рантайм окружения свой пакетный менеджер.

права на запись особо не нужны, кроме логов

А это вообще как? Т.е. полезная нагрузка всех приложений - только писать логи?

vvn_black ★★★★★
()
Ответ на: комментарий от vvn_black

Откуда такое ограничение?

Оттуда что вопрос ТСа был об этом.

Речь про любой опенсорц

Бери шире. Как дальше жить?

no-such-file ★★★★★
()

Я бы просто завел два компьютера. Один для личных данных, другой - для всего остального. На первом линукс с минимальным набором ПО и максимальными настройками безопасности. На втором всё рабочее ПО и данные.

Модель атакующего: подсмотреть данные на первом компе или саботировать работу второго.

Соотв. бэкапы и там и там.

seiken ★★★★★
()
Последнее исправление: seiken (всего исправлений: 1)

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

Может да, может нет. Плясать надо от цифровых ассетов, сколько они стоят, сколько времени восстанавливать всю систему и проч. Может так оказаться, что ваш диск форматировать никому не сдалось, а вот подлянку в арифметике в какой-то либе, которую не отревьюили получить проще, чем трояна от АНБ. А против этого, очевидно, никакая виртуалочка не спасет.

seiken ★★★★★
()
Ответ на: комментарий от seiken

Тут проблема в том что нынче и один не заведёшь.

peregrine ★★★★★
()

Очевидный flatpak очевиден. Заканчивайте использовать серверные контейнеры для десктопных приложений, это никогда не будет работать как следует.

eternal_sorrow ★★★★★
()
Ответ на: комментарий от w201403

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

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от LINUX-ORG-RU

несколько месяцев

Прям интересно, а что будет потом. Имею в виду, в мире.
Станет ли злокодное действо массовым, например. Нагнут ли FSF, чтобы нас утюжили, и т.д.

w201403
()
Ответ на: комментарий от w201403

Если начнется прямой военный конфликт именно с США, все довольно просто предсказать. Если идеологи типа Столлмана что-то начнут вякать, что типа война на руку проприетарщикам, и потому ее надо остановить, их просто задвинут, и никто в америках на них не будет обращать внимания. А те, кому донаты давали/дают, и у кого есть хотя бы маломальские ресурсы, чтобы влиять на разработку, примут четко оппортунистическую позицию, чтобы эти ресурсы и свое влияние на коммьюнити сохранить и не стать изгоями.

Тут же все просто: нет политической и народной поддержки - нет и способности отстаивать идеалы свободного ПО. Все эти аморфные движения, существующие на донатики добровольцев, внутри капитализма в нужный момент легко прогибаются под текущую кон’юнктуру.

seiken ★★★★★
()

Все же назначение контейнеров и виртуалок не в обеспечении безопасности. Для этого есть системы контроля доступа. Разве только приложение в контейнере удобнее огораживать тем же selinux, чем приложение вне контейнера.

i586 ★★★★★
()

LXC или докер, что есть в доступе и умеешь. Если ничего из перечисленного, то proxmox решает проблему настройки lxc, но нужен отдельный сервер.

einhander ★★★★★
()
Ответ на: комментарий от eternal_sorrow

Очевидный flatpak очевиден.

Вот есть приложение https://sourceforge.net/projects/dwsim/files/DWSIM/DWSIM 7.5/7.5.0/, как его офлатпачить?

С lxc понятно: dpkg -i и вперёд.

einhander ★★★★★
()
Последнее исправление: einhander (всего исправлений: 1)

Обучение происходит на Азуре

Лол. Бревна в глазу не видишь?

X11 сетевая прозрачность, настало твоё время!

А ты софт-то православный используешь, который на графических примитивах X рисуется? Даже «хипсторский» GTK+3 ещё на XRender налегает довольно активно, через Pango. Более новомодное ещё хуже, об арбузерных движках и говорить нечего.

bodqhrohro_is_back
()
Ответ на: комментарий от w201403

Нагнут ли FSF, чтобы нас утюжили, и т.д.

Бери выше, у нас уже проскакивают возгласы, что надо ввести уголовную ответственность за публикацию опенсорса, потому что это бесплатная помощь экономике агрессора.

Что характерно, с GPL такая инициатива не конфликтует, GPL требует всего лишь распространять исходники на тех же условиях, что бинарники. То есть если бинарники передаются только доверенным лицам после произнесения «ПАЯЛЬНИЦА», то и исходники надо так же. Придётся шпионов внедрять, а не просто взять и новую версию ядра для всяких альтов стянуть через проксю — уже профит.

bodqhrohro_is_back
()

Чтобы малварь с питоновскими пакетами не прилетела, надо использовать не requirements.txt, а pipenv или poetry, которые фиксируют все версии пакетов и их зависимостей. Таким образом не может ничего нового прилететь, пока ты сам не захочешь обновить версии пакетов.

rupert ★★★★★
()
Ответ на: комментарий от seiken

Что ж.. значит, им нельзя существовать внутри капитализма.
Толковый ответ, спасибо.

w201403
()

юзай btrfs, тогда в случае вредоноса из снапшота восстановишься.

tz4678 ★★
()
Ответ на: комментарий от bodqhrohro_is_back

А, кстати, я как-то видел программу, к которой доступ заблокировали. Что-то с wine связанное, вроде. Уже не помню — ещё в 2015м видел. Там была фотография, где на летающую бабу с мечом нападали типа звери с горящими глазами. Мол, она — Украина, а звери эти — мы))
Короче, что? Для спокойствия нужен gitruhub с лицензиями и соглашениями?

w201403
()
Ответ на: комментарий от w201403

к которой доступ заблокировали

Так это тупо по GeoIP, всё равно достать легко.

Для спокойствия нужен gitruhub с лицензиями и соглашениями?

Да хоть Яндекс.Код делайте, суть-то в том, что разрабатывать там будете сами, без зарубежных товарищей, которые делают львиную долю опенсорса. Потянете? :P

bodqhrohro_is_back
()

Страхование киберрисков.

Вы решили, что хотите застраховать свой бизнес от киберрисков, выбираете соответствующую программу и размер страховой защиты из предложенных вариантов. Если происходит страховой случай, то Вы получаете финансовую компенсацию.

chenbr0
()
Ответ на: комментарий от mogwai

Не видел (кроме Шигорина) живых пользователей альта лет 10.. как оно?

В море грибы искать - ну такое себе. Иначе сложно не найти. :-)

AS ★★★★★
()
Ответ на: комментарий от mogwai

как оно?

                                       alt@host-34
   XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX    OS: ALT Linux 
   XXXXXXXXXXXXXXXXX0xkk0XXXXXXXXX    Kernel: x86_64 Linux 5.15.31-std-def-alt1
   XXXXXXXXXXXXXXXXX0xc';lkXXXXXXX    Uptime: 11m
   XXXXXXXXXXXXXXXXXK0c ..lKXXXXXX    Packages: 779
   XXXXXXXXXXXXXXXXKXXd'''cx0XXXXX    Shell: bash
   XXXXXXXXXXXXXXXXXWMO:' .;dXXXXX    Resolution: 1920x1080
   XXXXXX0xddddddd0WWMk;.  .:OKXXX    WM: JWM
   XXXXKOc....,c:,co0Wk;.   'lkXXX    GTK Theme: Adwaita [GTK3]
   XXXXd'. 'ccxKkoc;oOdl.   .;xXXX    Disk: 4,1G / 37G (12%)
   XXK0;  .lXXWMNKd;;;;;.   .'oXXX    CPU: AMD Athlon II X2 270 @ 2x 3.4GHz
   XXOd' ..xMMMMWWx,''..    ..lKKX    GPU: AMD/ATI Juniper XT [Radeon HD 5770]
   XXXl. ..xMMMMWW0ddo,...  ..cOKX    RAM: 317MiB / 3929MiB
   XXXl' .,xMMMMWNX0KXl ..   .cOKX   
   XXoo;.,lOMMWWNXXXNMk,,,.  .cOKX   
   XX0x:.lKNMMWNNXK0XNX0Ox:...lKKX   
   XXX0c.oMMMMWXXX0kOOXMWWOo:.oXXX   
   XXXXc cXNMMWXXXXXko0MMMKkl'dXXX   
   OXKO; ;kKMMWXK0Oko:kWNNx,..c0KX   
   XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   
   XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
amd_amd ★★★★★
()

Правительственный уровень доступа к критически важным системам + рекомендации MS.

Xant1k ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.