LINUX.ORG.RU
решено ФорумTalks

[костылиринг]Защищаемся от дыр в браузере


0

2

В настоящее время идет много разговоров о возможном появлении вирусов под линукс. Так как идиотов в 1% пока влезает мало и программы в большинстве случаев ставятся через подписанные репозитории, основным каналом для получения вирусов, скорее всего, является браузер.

И у меня созрел такой вариант защиты. Создаем нового пользователя, назовем его browser_user. Создаем файл в /dev для того, чтобы на нем создать фс для домашней папки browser_user. Монтируем эту фс, а также /tmp с флагом noexec. И запускаем браузер через sudo от пользователя browser_user.

Как вам такой вариант?

★★

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

Сам себе создал проблему. Сам поставил задачу. Сам решил.

Молодец!

Vanilla
()

Открой для себя DAC. Конкретнее удобен TOMOYO.
В бубунтах уже должен быть AppArmor, остаётся его включить.

x3al ★★★★★
()

>Создаем файл в /dev для того, чтобы на нем создать фс для домашней папки
Можно монтировать любой файл, нафиг в /dev?

запускаем браузер через sudo от пользователя browser_user.

Угу. И пользователь browser_user может писать, к примеру, в /var/tmp.

/tmp с флагом noexec

Не для десктопных дистрибутивов.

Вообще можно и в чрут запихнуть. Но, как я уже говорил, для этого в линуксе есть механизмы DAC.

x3al ★★★★★
()

если пользователь до того дурак, что скачал вредоносный бинарь, сохранил в хоум и запустил - это его не спасет. а если запустил от рута (скажем установщик TurboUbunuTweaker v33.2), то тем более. хотя в таком случае его только биореактор спасет

marvin_yorke ★★★
()

man mandatory access control

Hoodoo ★★★★★
()

а какие данные ты собрался защищать от браузера? Музыку, фильмы?

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

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

Ну вообще если запускать из под другого пользователя, то он не будет иметь доступ к файлам исходного пользователя.

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

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

Tark ★★
() автор топика

Захочу что-нибудь скачать, скачается в ~browser_user, потом ещё переносить в мой ~, изменять владельца. Геморно. Не нужно.

gentoo_root ★★★★★
()

У меня тоже такая идея возникала. Только из-за отсутствия необходимости реализовывать не стал. Изолированное окружение а-ля «песочница», минимальные права, и разрешения на запись только своих конфигов. Если надо что-то качать - то через sudo как-нибудь. И да, контроль запускаемых процессов - чтоб из-под «браузерного» юзера мог запускаться ТОЛЬКО браузер, и ничего более. Правда, от дырок в ведре это не защищает... Да и вообще, если подумать - проблема достаточно надуманная. «Попасть» на 0day-уязвимость - вероятность относительно маленькая, а Линукс - это вам не маздайка, дыры латаются оперативно, да и обновления отключают только идиоты (в отличие от маздайки - в которой обновления отключены, по статистике, у 60% юзеров).

А подобная схема может быть полезна, если ты - параноик, и хочешь НУ ВАЩЕ защититься. Т.к. в этом случае должно быть ДВЕ 0day-уязвимости: в браузере, чтобы запустить произвольный код, и в ведре - для повышения привилегий.

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

нормальному вирусу права рута совершенно не обязательны

а разделение и «контроль запускаемых процессов - чтоб из-под „браузерного“ юзера мог запускаться ТОЛЬКО браузер, и ничего более» уже давно делается через selinux и аналоги, самое время наконец убрать selinux=0 из параметров загрузки и вздохнуть спокойно

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

Вот и я о том. Видимо, таки пора поковыряться с этим селинуксом. Хотя вирусы под Линукс если и появятся - то относительно не скоро, не раньше, чем сдохнет венда. Т.к. писать вирусы под своевременно обновляемую систему и браузеры - ну, наверное, на несколько порядков сложнее, чем под необновляемую годами. Так что - понятно, вендоюзеры со своими древнючими дырявыми ослами - первоочередная цель.

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

> писать вирусы под своевременно обновляемую систему и браузеры - ну, наверное, на несколько порядков сложнее

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

alpha ★★★★★
()

у меня тупо отдельные пользователи для скайпа, мыла итп. Это самый простой вариант. Хотя можно написать политики для apparmor(у мну убунта), но лень.

Зачем /tmp с noexec я так и не понял. Каталог с кэшем всё равно должен быть rw, туда вирус и будет складываться. Хотя, как дополнительная мера...

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

Ну, в моём понимании КОМПЬЮТЕРНЫЙ вирус - это то, что проникает в систему через «дырки» самой системы, или её компонентов. А «хорошо прорекламированное» - это МОЗГОВОЙ вирус. Тут никакая система не спасёт, только доктор, или пистолет. Раньше вот - никаких этих «установите кодек» или «супер-пупер-антивирусов» не было, а вирусы тихо и незаметно проникали через дырищщи в ослах и маздайках, порой - ВООБЩЕ без всякой активности юзера (включил комп, не успел загрузиться - а заразка к тебе уже из сетки приползла). А вот как осёл сдал позиции, и пошли нормальные браузеры - так и повылазило.

Saloed
()

Мне пару раз пытались подсунуть deb-пакеты вместо книг. Я решил, что это по причине того, что в ubuntu в firefox есть какое-нибудь расширение для работы с deb-пакетами.(у самого debian)
ЗЫ
Эх, дурак я! Надо было скачать, поковырял бы его потом...
Недавно специально искал этот сайт, не нашел.

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

не знаю что они там защищают новым пользователем.

arknir
()

Ох уж эти операсты. ЧТо только не придумают, лишь бы открытый браузер не ставить.

darkshvein ☆☆
()

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

Хотел бы я увидеть вирус на JavaScript :)

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

А вообще, люди, использующие огороженные технологии, запускают браузер из chroot'а...

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

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

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

Хопошо. Черви могут эту дыру и на яваскрипте юзать. И малварь, которая ставится на компьютер таким методом не является ничем фантастическим.

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

Хотел бы я увидеть вирус на JavaScript :)

Э-м-м-м... Пару лет назад расковыривал такой. Тока он не совсем жабаскрипт, он-ословый. Жабаскрипт содержит шифрованный вбскрипт и функцию-расшифровщик. А уже вбскрипт - вот уж воистинну ЭПИЧНАЯ дыра... Того, кто его придумал - надо вешать на столб за яйца. Заживо.

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

> сейчас самая ценная пользовательская информация - это история, пароли и прочее, браузер к ним имеет прямой доступ хоть так, хоть иначе
Можно (и нужно) юзать специальные e-mail и jabber клиенты, так что остаются только от форумов вроде LOR, но можно и пойти дальше — иметь два браузера в разных chroot, один для десятка доверенных форумов, где ты сидишь уже годами и другой для всего остального... ещё как-то настроить что бы внешние ссылки с таких форумов открывались в другом браузере.

Xenius ★★★★★
()

Вообще, я создавал такую тему, так что ты не первый. У меня ещё идея: сделать так что бы диалог сохранения был отдельным модулем, и когда ты выбираешь там файл, куда сохранять, даешь программе право на запись в этот файл. Именно конкретно в один выбранный. И так же диалог открытия. А кроме того что ты выбрал, проге давать доступ только к своим же конфигам.

Дальнейшее увеличение безопасности можно сделать если ещё и реализовать привилегии для процессов-вкладок, так что каждый процесс-вкладка получает доступ только к данным того сайта, который в ней открыт, так что даже если будет эксплоит, то в лучшем случае получится украсть только данные по тому сайту, на котором эксплоит, а для того что бы проникнуть дальше надо будет уже два эксплоита — и к интерпретатору HTML и к интегрированному модулю, который дает рисует остальное окно. А что бы проникнуть дальше — уже три, ещё и к chroot, потом к ядру...

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

>А с паролями что делать - не знаю.
В простом случае (защитить 3.5 особо важных пароля) — 2 изолированных браузера, запретить читать профили друг друга.
От сохранённых паролей спасут внешние заполнялки + отключение запоминания пароля.

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

>У меня ещё идея: сделать так что бы диалог сохранения был отдельным модулем, и когда ты выбираешь там файл, куда сохранять, даешь программе право на запись в этот файл. Именно конкретно в один выбранный. И так же диалог открытия. А кроме того что ты выбрал, проге давать доступ только к своим же конфигам.
Запусти любую программу под тем же tomoyo в learning-режиме и увидишь, сколько всего этой программе нужно.
Вообще бред. Это не будет распространяться на закрытый софт → будет нужен API для обычного доступа → защиты от выполнения произвольного кода нет.

процессов-вкладок

Хромоюзер, уходи. Мой огнелис способен сотни вкладок умещать в 600 мегабайт RAM. С процессами так не сделаешь.

каждый процесс-вкладка получает доступ только к данным того сайта, который в ней открыт

Это уже круче, чем SELinux, следовательно, сложнее. А на десктопе даже SELinux ставить — бредово.

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

>>процессов-вкладок

Хромоюзер, уходи. Мой огнелис способен сотни вкладок умещать в 600 мегабайт RAM. С процессами так не сделаешь.

А разве в FireFox 4 не сделали так же? (у меня 3.6.16)
И ты так говоришь, как будто 600 Мб RAM — это мало.

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

Это не будет распространяться на закрытый софт → будет нужен API для обычного доступа → защиты от выполнения произвольного кода нет.

Нет, просто закрытый софт не будет никакого доступа к системе иметь вообще, кроме своих же конфигов, и то по-минимуму.

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

Черви могут эту дыру и на яваскрипте юзать. И малварь, которая ставится на компьютер таким методом не является ничем фантастическим.

Хотел бы я взглянуть на JavaScript, который в обход NoScript'а загрузится, сохранит мне куда-нибудь тарбол с малварью, запустит make, а потом - саму малварь :)

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от zloy_buratino

Проблемы надо решать по мере их поступления.

Венда и касперский так и делают, не?

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

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

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

>А разве в FireFox 4 не сделали так же?
Нет.

И ты так говоришь, как будто 600 Мб RAM — это мало.

Для сотни вкладок — очень мало.

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

В этом нет смысла.

Нет, просто закрытый софт не будет никакого доступа к системе иметь вообще, кроме своих же конфигов, и то по-минимуму.

Да-да. А пользователям оперы что делать?

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

> Да-да. А пользователям оперы что делать?
Переходить на FireFox или Konqueror

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

В этом нет смысла.

Безопасность. Каждая вкладка получает доступ только к данным, касающимся открытого в ней сайта, так что никакие XSS просто не проканают.

Для сотни вкладок — очень мало.

Может быть. Только у меня что-то этот фирефокс то и дело выжирает всю память и падает.
Хотя у меня не сотни вкладок, всего около двух-трех десятков.
.

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

>Переходить на FireFox или Konqueror
Ок, следующий этам. Что делать пользователям adobe flash?)

Каждая вкладка получает доступ только к данным, касающимся открытого в ней сайта

Это сложно реализовать.

никакие XSS просто не проканают.

noscript — тоже вариант.

фирефокс то и дело выжирает всю память

Карма.

падает.

Тем более карма.

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

> Ок, следующий этам. Что делать пользователям adobe flash?)
Отказаться от флеша вообще или использовать gnash / swfdec / sparklight или как его

падает.

Тем более карма.

Потому что oomkill убивает, причем тут карма?

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

Вообще-то через переполнение буфера

это не значит что attacking surface не надо уменьшать :)

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

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

да, но вот какого хрена это уже не сделано дистростроителями для меня загадка. У меня вообще много вопросам к дистрам. Но самое печальное что есть толпы инертного народа которые будут против нововведений.

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