LINUX.ORG.RU

Запуск браузера в песочнице

 ,


0

3

Всем здравствуйте! Решил озадачится вопросом безопасного серфинга во всемирной паутине, и в частности запуском браузера в некоей «песочнице». Столкнулся с нескольким вариантами технической реализации задачи: запуск браузера в виртуальной машине через SSH с перенаправлением X11, с использованием докеров, ну и firejail. Собственно вопрос. Что из предложенного более целесообразно, если подходить к вопросу без излишней паранойи. Тапками прошу не кидаться)


firejail или bwrap вполне целесообразно. firejail несколько проще в использовании и в понимании с нуля, bwrap гибче. Сам я использовал сначала firejail, теперь bwrap. И то и другое прекрасно работает и «песочит».

Докер — оверкилл и переусложнение. Виртуалка — совсем-совсем оверкилл.

Но конечно зависит от уровня паранойи. А то эдак можно и физически на другой машине запускать, у которой нет доступа к основной. А безопаснее всего вообще витую пару ножницами перерезать: нет интернета, нет проблем ;)

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

Вставлю свои пять копеек. Абсолютного ничего не бывает. Я не просил цепляться к словам, но просил какого-то совета, основанного на ваших практических знаниях и умениях

ext2
() автор топика

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

Виртуалка или firejail зависит от уровня паранойи. Иногда что-то установить проще в виртуалке.

Целесообразно без лишней паранойи использовать snap/flatpak как они есть, так как в самих браузерах есть песочница для каждой открытой страницы, а в snap есть профиль apparmor.

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

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

Песочница уровня «дно», кстати. Поэтому замысел тс-а вполне может иметь смысл даже без паранои.

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

Я что-то пропустил? Можно жаваскриптом на сайтах файлы хоста читать?

Уязвимости в самом браузере, например? Вы про какой хост?

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

Обратился внимание на muvm в asahi, они пошли правильным путём, посмотрев и взяв за основу crosvm и переписав на свой лад. Это vm но нет оверхеда и есть человеческое ускорение 3D без использования буферов, а используя DRM для прямого рендеринга минуя прокладки и прослойки как это в virtio

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

Я что-то пропустил?

Судя по всему да. Потому как:

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

Можно жаваскриптом на сайтах файлы хоста читать?

Ты понимаешь, что песочница - это слой снизу, а не просто какой-то запрет, особенно из самого браузера? В этом и смысл - это независимый механизм, который обрубает всё лишнее в корне(снизу), и верхние слои от этого деться никуда не могут в принципе. Поэтому можно там что-то читать, или нельзя - значения не имеет.

И да, мне понравился пример именно с файлами, в свете того что браузеры не используют mountns. Опровергните меня кто-нибудь скорее с последним тезисом.

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

https://wiki.mozilla.org/Security/Sandbox#Linux

Level 1 Many syscalls, including process creation

Level 2 Everything from level 1; Write access to the filesystem (Excludes shared memory, tempdir, video hardware)

Level 3 Everything from level 1-2; Read access to most of the filesystem (Excludes themes/GTK configuration, fonts, shared data and libraries)

Level 4 Everything from level 1-3; Network access including local sockets; System V IPC (Unless fgxlrx or VirtualGL is in use); Uses chroot jail; Uses Unprivileged User Namespaces (if available)

В релизных сборках Level 4

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

Приводить в пример фокс/мозилу - это конечно сильно, но да ладно. Но что ты мне хотел этим сказать? Там есть слово «sandbox» - это не важно, потому как там не указано, что это за sandbox. И судя по этому:

Level 2 Everything from level 1; Write access to the filesystem (Excludes shared memory, tempdir, video hardware)

Level 2 - access to the filesystem

Level 4 Everything from level 1-3; Network access including local sockets; System V IPC (Unless fgxlrx or VirtualGL is in use); Uses chroot jail; Uses Unprivileged User Namespaces (if available)

Level 4 - userns

это кулл-сандбоксы, которые сандбоксами не являются.

В любом случае, нужно смотреть в работе, а не заявления. Вот можешь проверить заодно ту же фс. Сделай nsenter в неймспейс(ы) браузера и сделай там, условно, ls -AR - так сможешь посмотреть, что там доступно из файлов. Меньше - лучше.

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

Давай так, я не спец по безопасности, а если бы им был, то по умолчанию считал бы всё решетом. То что есть — достаточно для защиты от большинства атак от ленивых/бедных хакеров. Проверять это хорошо, но у меня нет на это времени. То что эта песочница — какая-то не такая песочница, не по ГОСТу, оставлю тебя при твоём мнении. Во всяком случае, то что пытается сделать ТС, очень похоже на уже готовую встроенную песочницу браузера, его полное право доверять браузерам или нет.

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

я не спец по безопасности

Это не важно. И да - я-то тоже не спец по безопасности. Правда там спецом особо быть и не нужно.

а если бы им был, то по умолчанию считал бы всё решетом.

Толку от этого. Если всё решето - то ничего не решето. Это бесполезная(точнее даже вредная) позиция. И да, оно и так 90%+ решето. Даёт ли что-то подобный вывод? - нет.

То что есть — достаточно для защиты от большинства атак от ленивых/бедных хакеров.

Ну это мало что значит. Тем более в контексте темы «хочу больше безопасности, нежели по дефолту».

Проверять это хорошо, но у меня нет на это времени.

то что пытается сделать ТС, очень похоже на уже готовую встроенную песочницу браузера

А как ты выяснил похожесть, если не знаешь что представляет из себя песочница браузера?

Я вот вижу что у меня хром использует только pidns(и не использует mountns, а значит видит всю фс, где привилегии позволяют). Может быть это в дистре так собрали, или там в зависимости от окружения какой-то иной сетап может быть выбран.

Но песочницы я не наблюдаю. Хотя про эти «песочницы в браузерах» довольно много говорят. Вот мне интересно, это я ошибаюсь/смотрю кривой сетап, или эти разговоры просто реклама.

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

У меня нет оснований доверять браузерам! Я не специалист в области кибербезопасности, но полагаю, что браузеры, в отличие от firejail, намного чаще являются целью атак.

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

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

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

А как ты выяснил похожесть, если не знаешь что представляет из себя песочница браузера?

Как и (почти) все песочницы, ограничивает сисколлы. Все эти ns это здорово, но круче когда дело в принципе не доходит до ns. В идеале оставить только read/write на заранее открытые дескрипторы, ну или что там ещё нужно для seccomp. Через эти дескрипторы открыт ограниченный апи, родительский процесс выполняет запросы этого апи и проверяет что можно и что нельзя. Лично мне хватило бы применить apparmor для родительского процесса, чтобы не переживать за свои данные, хоть я и понимаю что всякие использования GPU легко могут вытечь в несанкционированный рутовый доступ.

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

Как и (почти) все песочницы, ограничивает сисколлы.

Это ты в той мозила-брошюре прочитал? Сильно. Причём это противоречит цели. Нужно ограничить не «что можно делать», а «с чем можно делать»/«к чему можно получить доступ».

И да, это не похоже на то, что перечислено в оп. С «почти все» та же история.

Все эти ns это здорово, но круче когда дело в принципе не доходит до ns.

Оно не может до него не доходить.

В идеале оставить только read/write на заранее открытые дескрипторы, ну или что там ещё нужно для seccomp.

Удачи убрать open из браузера. Да и из много чего ещё.

Через эти дескрипторы открыт ограниченный апи, родительский процесс выполняет запросы этого апи и проверяет что можно и что нельзя.

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

Лично мне хватило бы применить apparmor для родительского процесса

Уже аппармор здесь, а ведь был сискол-фильтр(который не работает).

Ладно, ты просто перечисляешь мне нагугленные базворды.

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

Какой-то ты очередной токсер. Знаний ноль, гонора через край, чужие знания не знания, и обязательно только ты знаешь как надо. Ещё и аноним, в игнор тебя не добавить.

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

Решил посмотреть в профиль - тут уже всё сошлось. Мозилка, паста фокс-брошюрок, непонимание темы, паста базвордов, слёзы от беспомощности и вот он, венец программы:

Что касается критики раста, то её в сети огромное количество, особенно русскоязычной. В основном со стороны программистов на C++ (эти понятно, боятся и защищают свои рабочие места) и своеобразных луддитов, которым любой прогресс как серпом по яйцам.

Это очередной раст-герой. Я ещё не понял сразу, чего он так обижается, когда я мозилку не превозношу. А оно вот как.

anonymous
()