The OpenNET Project / Index page

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

В Firefox для OpenBSD реализована поддержка unveil

19.11.2019 03:32

В Firefox для OpenBSD реализована поддержка изоляции файловой системы при помощи системного вызова unveil(). Необходимые патчи уже приняты в апстрим firefox и войдут в состав Firefox 72.

Firefox в OpenBSD был и ранее защищён, используя pledge для ограничения доступа каждого типа процессов (main, content и GPU) к системным вызовам, теперь для них также будет ограничен доступ к файловой системе при помощи unveil(). По умолчанию, доступ ограничен директориями ~/Downloads и /tmp; и при загрузке файлов из сети, и при просмотре файлов с диска. Настройки pledge() и unveil() хранятся в файлах в /usr/local/lib/firefox/browser/defaults/preferences/, содержимое которых может переопределяться в файлах из /etc/firefox/. Преимущество второго варианта в том, что только root может редактировать эти файлы.

Ранее аналогичные возможности были добавлены в браузеры Chromium и Iridium.

  1. Главная ссылка к новости (https://marc.info/?t=157325352...)
  2. OpenNews: Выпуск OpenBSD 6.6
  3. OpenNews: Для OpenBSD развивается новая git-совместимая система контроля версий Got
  4. OpenNews: Планы по усилению механизма защиты W^X в OpenBSD
  5. OpenNews: В OpenBSD предложен новый системный вызов unveil() для изоляции ФС
  6. OpenNews: OpenBSD развивает Pledge, новый механизм изоляции приложений
Автор новости: Дон Ягон
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/51890-unveil
Ключевые слова: unveil, pledge
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (41) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 08:09, 19/11/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    > Ранее аналогичные возможности были добавлены в браузеры Chromium и Iridium.

    Гугловцы тоже ничего, потихоньку догоняют файрфокс. Молодцы.

     
     
  • 2.2, Аноним (2), 09:08, 19/11/2019 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Кто кого догоняет?
     
     
  • 3.7, ryoken (ok), 10:40, 19/11/2019 [^] [^^] [^^^] [ответить]  
  • +3 +/
    "Кто на ком стоял?" (Простите, не удержался :D )
     
  • 2.11, Дон Ягон (ok), 12:34, 19/11/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Гугловцы тоже ничего, потихоньку догоняют файрфокс. Молодцы.

    В хроме поддержка unveil() появилась раньше, чем в ff.
    Авторы патчей в обоих случаях - разработчики OpenBSD/мэйнтейнеры портов.

     
     
  • 3.26, Kuromi (ok), 18:54, 19/11/2019 [^] [^^] [^^^] [ответить]  
  • +/
    А что вы хотели, для Мозиллы *BSD - второстепенные (в лучшем случе) ОС. Хотите фичи - пилите сами. Ну вот и результат.
     
     
  • 4.31, Дон Ягон (ok), 20:48, 19/11/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > А что вы хотели, для Мозиллы *BSD - второстепенные (в лучшем случе) ОС. Хотите фичи - пилите сами. Ну вот и результат.

    1) Меня всё устраивает.
    2) Не только для Мозиллы.
    3) Ну так сами и пилят. Unveil/pledge в некоторой степени экспериментальные возможности, логично, что патчи идут от тех, кто ближе к их разработке.

     

  • 1.3, йййй (ok), 09:26, 19/11/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А в линуксе как с этим? Есть что-то подобное?
     
     
  • 2.4, Serge (??), 09:33, 19/11/2019 [^] [^^] [^^^] [ответить]  
  • +3 +/
    AppArmor
     
  • 2.5, б.б. (?), 09:36, 19/11/2019 [^] [^^] [^^^] [ответить]  
  • +3 +/
    в Linux нет единой системы, где всё от ядра до библиотек контролируется и собирается единым способом, поэтому в Linux - только внешние утилиты, изнутри это сделать принципиально невозможно.
     
     
  • 3.8, ryoken (ok), 10:41, 19/11/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Хм.. А Вы Gentoo видели?
     
     
  • 4.9, б.б. (?), 10:45, 19/11/2019 [^] [^^] [^^^] [ответить]  
  • +/
    а в gentoo есть единая система? наоборот, там можно использовать разные libc, разные не только версии ядер но и системы ядер, разный инит. как там синхронизировать все системные вызовы в ядре и библиотеках?
     
     
  • 5.10, ryoken (ok), 11:47, 19/11/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Ну я таки больше про то, что собирается там всё одинаково :). (Вот допекает то, что кажется FireFox в зависимостях тащит rust и ещё кто-то тащит Clang).
     
     
  • 6.21, Аноним (21), 17:45, 19/11/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > в зависимостях тащит rust и ещё кто-то тащит Clang
    > rust
    > ещё кто-то

    и кто бы это мог быть...

     
     
  • 7.39, ryoken (ok), 08:53, 20/11/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > и кто бы это мог быть...

    Дада, вот и я теряюсь в догадках :D.

     
  • 6.36, Аноним (-), 02:28, 20/11/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Еще Firefox в зависимостях тащит C++, поскорее бы уже начали чистку.
     
  • 3.19, Урри (?), 17:01, 19/11/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Что именноь невозможно? Использовать seccomp, если он доступен?
     
  • 2.12, Дон Ягон (ok), 12:44, 19/11/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Теоретически, seccomp - это что-то подобное pledge (с существенными и принципиальными различиями в реализации). Про аналог unveil я не слышал.
    Даже в случае с seccomp знаю лишь много вариантов со сторонними утилитами, а-ля firejail, в таком случае, все ограничения во имя безопасности устанавливаются до запуска программы и должны учитывать поиск ей разделяемых библиотек на диске и т.п. - как следствие, политики должны быть более разрешительные. Не уверен, что слышал о примерах, где seccomp вызвается в коде самой программы, а не в утилите-обёртке.
    Pledge/Unveil - это не сорт MAC, а сорт сброса привилегий, т.е. программа инициализируется, подгружает всё необходимое и после этого, перед переходом в основной рабочий цикл "отказывается" от полномочий/доступа к частям ФС при помощи pledge/unveil, а не запускается изначально под ограничениями, установленными администраторами сбоку от логики работы программы.
     

  • 1.6, Аноним (6), 09:50, 19/11/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Если на уровне приложения, то seccomp() позволяет на зайчаточном уровне ограничивать видимость. Если на уровне дистрибутива, то apparmor/selinux, но тут уж кто во что горазд.
     
  • 1.13, Аноним (13), 12:51, 19/11/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Это что б никто не пробовал локальные файлы в браузере открывать? А как html документацию из пакетов репозитария открывать?
     
     
  • 2.14, Дон Ягон (ok), 13:07, 19/11/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Насчёт ff пока точно не скажу, потому что ещё не тестировал, но в chromium/iridium в опёнке unveil пока не по-умолчанию и есть опция "--enable-unveil", без которой никаких ограничений нет.
    Подозреваю, что в каком-то виде (скорее всего, в виде "--disable-unveil" в итоге) опция останется, как раз для таких вот кейсов.
    В случае ff не знаю насчёт такой опции, но, с виду, можно разрешить необходимое через настройки в /etc/firefox/.
     
  • 2.15, йййй (ok), 13:34, 19/11/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Как я понял, AppArmor профиль уже включен в Ubunte. Посмотрел, там похоже доступ к каталогам правда ограничен .firefox, Downloads, Public и прочие служебные. Но ведь сохранять в произвольный каталог можно и открывать и произвольного? Или нельзя?
     
     
  • 3.29, йййй (ok), 19:46, 19/11/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Отвечаю себе ) firefox в списке disable. Так что в ubunte по умолчанию походу ничего подобного нет.
     

  • 1.16, Аноним (16), 14:57, 19/11/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    какой только неведомой херней мурзила  не занята...

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

    Это ж не очередная "забота" путем анального огораживания, этак что случайно и для людей можно ж сделать.

     
     
  • 2.17, Дон Ягон (ok), 15:26, 19/11/2019 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > какой только неведомой херней мурзила  не занята...

    Причём тут вообще мозилла? Патчи написаны участниками OpenBSD, "заслуга" мозиллы только в том, что она приняла эти патчи в апстрим. Всё.

    В OpenBSD у меня звук в ff работает без всякого pulse, так что...

     
     
  • 3.20, анонн (ok), 17:21, 19/11/2019 [^] [^^] [^^^] [ответить]  
  • +/
    >> какой только неведомой херней мурзила  не занята...
    > Причём тут вообще мозилла? Патчи написаны участниками OpenBSD, "заслуга" мозиллы только
    > в том, что она приняла эти патчи в апстрим. Всё.

    На самом деле, это уже не мало:
    https://lwn.net/Articles/482858/
    > Roughly 100 new lines of code were all that was required to use Capsicum in Chromium on FreeBSD, largely because the browser was written with privilege separation in mind.

    Это в 2012 году было. Гугл-апстрим патчи отклонил, типа "маргинальщина" (позже правда спортировав сам capsicum на пингвина), патчи через пару лет "протухли", все затихло - в итоге хромо-песочницы, емнип, на фре нема.

    Вообще, "кросплатформенность" у гугла (вне восхвалений маркетологов) весьма хромает -- все, что не нацелено на OS X, Windows или WSL^W пингвинчика, апстримом зачастую игнорируется:



    ls -l /usr/ports/www/chromium/files/|wc -l    
         756
    cat /usr/ports/www/chromium/files/*|wc -l                  
       19808

    grep -r "^+[^+]"  /usr/ports/www/chromium/files/|wc -l
        3920



     
     
  • 4.32, Дон Ягон (ok), 21:56, 19/11/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Почему-то был уверен, что pledge+unveil уже влиты в апстрим хромого, а прочитал тебя и засомневался. Надо проверить. Ибо в патчах точно что-то про pledge/unveil есть.

    А про capsicum - я вообще не в курсе, как сейчас он развивается. Какие-то истории успеха значительные есть?

     
     
  • 5.38, анонн (ok), 03:22, 20/11/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Почему-то был уверен, что pledge+unveil уже влиты в апстрим хромого, а прочитал
    > тебя и засомневался. Надо проверить. Ибо в патчах точно что-то про pledge/unveil есть.

    Гложут меня сомнения:
    https://github.com/chromium/chromium/search?utf8=%E2%9C%93&q=un
    (хотя поиск на гитхабе конечно не очень)

    > А про capsicum - я вообще не в курсе, как сейчас он
    > развивается. Какие-то истории успеха значительные есть?

    Все тихо и стабильно, как в гроб^W пирамиде (хотя тулзы из базы потихоньку переводят на него):
    https://wiki.freebsd.org/Capsicum

     
     
  • 6.41, Дон Ягон (ok), 12:33, 20/11/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Гложут меня сомнения

    Я вполне мог ошибаться. Видимо, и ошибался.

     
  • 2.18, xm (ok), 15:42, 19/11/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Во FreeBSD Pulseaudio отсутствует в зависимостях Firefox, так что не надо проецировать страдания линуксоидов.
     
     
  • 3.22, пох. (?), 18:33, 19/11/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    то есть вы и это ниасилили? (открывает консоль...опачки...закрывает консоль, чур меня, чур!)

    Я просто оставлю это здесь:
    # pkg install -n firefox
    Updating FreeBSD repository catalogue...
    Fetching meta.txz: 100%    944 B   0.9kB/s    00:01
    Fetching packagesite.txz: 100%    6 MiB   2.2MB/s    00:03
    Processing entries:   0%
    Processing entries: 100%
    FreeBSD repository update completed. 32774 packages processed.
    All repositories are up to date.
    The following 121 package(s) will be affected (of 0 checked):

    New packages to be INSTALLED:
            firefox: 70.0.1,1
            startup-notification: 0.12_4
            xcb-util: 0.4.0_2,1
            libxcb: 1.13.1
            libXdmcp: 1.1.3
    [skip полный набор иксов - но этого им показалось мало!]
            font-misc-ethiopic: 1.0.3_4
    [чисто поржать]
            wayland: 1.16.0_1
    [иксов недостаточно, нам надо было собрать с вафляндом!]
            dbus: 1.12.12
    [конечно же]
            tpm-emulator: 0.7.4_2
    [это-то еще зачем?]
            avahi-app: 0.7_2
    [здравствуйте!]
            gtk3: 3.24.10_1
    [ну конечно]
            gtk2: 2.24.32
    [уп-с... а что, одного было мало?]
    [ну и на сладкое, самое интересное]
            alsa-plugins: 1.1.1_6
            alsa-lib: 1.1.2_2

    Number of packages to be installed: 121

    The process will require 902 MiB more space.
    173 MiB to be downloaded.

    итого - гигабайт мусора, не включая, видимо, ниасиленный пщпщ, это я о вас был слишком хорошего мнения. Зато вот - нате на лопате - эмулятор линуксной альсы, напрочь отсутствующей во фре. Как это дружит с фуфлофоксиным сэндбоксингом - а догадайтесь.

     
     
  • 4.23, xm (ok), 18:45, 19/11/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Я вот вижу что вы не осилили пойти в порты и убрать галочки с Pulseaudio которая там за каким-то чёртом по умолчанию установлена.
    Своё мнение о вас, кстати, я не только не изменил, но и упрочил ;)

    UPD. Только что заметил что OSS выпилили оттуда. Н-да...

     
     
  • 5.33, пох. (?), 22:13, 19/11/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Я вот вижу что вы не осилили пойти в порты

    Я вам продемонстрировал, что лежит в официальных пакетах. Это п-ц покруче тех, что в линуксах - те хоть два gtk не тащат.

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

    > UPD. Только что заметил что OSS выпилили оттуда.

    ну надо же.
    Что ж это щеконадуватель ниасилил пойти в исходники и быстро впилить обратно?

     
  • 4.24, имя (ok), 18:51, 19/11/2019 [^] [^^] [^^^] [ответить]  
  • +/
    За этой простынёй ещё не видно идущих в комплекте патченых-перепатченых библиотек!

    $ sed '/IUSE="/,/"/!d' /usr/portage/www-client/firefox/firefox-70.0.1.ebuild | egrep -o 'system-[^ ]+'
    system-av1
    system-harfbuzz
    system-icu
    system-jpeg
    system-libevent
    system-sqlite
    system-libvpx
    system-webp

    При этом с системным cairo собраться нынче вообще невозможно без погружения в код.

     
     
  • 5.27, анонн (ok), 18:59, 19/11/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > При этом с системным cairo собраться нынче вообще невозможно без погружения в
    > код.

    ldd /usr/local/lib/firefox/libxul.so|grep cai
    libcairo-gobject.so.2 => /usr/local/lib/libcairo-gobject.so.2 (0x809669000)
    libcairo.so.2 => /usr/local/lib/libcairo.so.2 (0x809674000)

    ldd /usr/local/lib/firefox/libxul.so|grep eve
    libevent-2.1.so.7 => /usr/local/lib/libevent-2.1.so.7 (0x8092de000)

    ldd /usr/local/lib/firefox/libxul.so|grep sql
    libsqlite3.so.0 => /usr/local/lib/libsqlite3.so.0 (0x808e5c000)

    Но это esr (68).

     
     
  • 6.30, имя (ok), 19:47, 19/11/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > ldd /usr/local/lib/firefox/libxul.so|grep cai
    >  libcairo-gobject.so.2 => /usr/local/lib/libcairo-gobject.so.2 (0x809669000)
    >  libcairo.so.2 => /usr/local/lib/libcairo.so.2 (0x809674000)

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

    > Но это esr (68).

    https://github.com/mozilla/gecko-dev/commit/2b0049a09ee48527f66ccc128d2e4925e6 случился за год до этого релиза.

     
  • 4.25, анонн (ok), 18:53, 19/11/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > итого - гигабайт мусора, не включая, видимо, ниасиленный пщпщ, это я о
    > вас был слишком хорошего мнения. Зато вот - нате на лопате
    > - эмулятор линуксной альсы, напрочь отсутствующей во фре. Как это дружит
    > с фуфлофоксиным сэндбоксингом - а догадайтесь.




    % pkg options firefox-esr            
    firefox-esr - ALSA: on
    firefox-esr - CANBERRA: off
    firefox-esr - DBUS: on
    firefox-esr - DEBUG: off
    firefox-esr - FFMPEG: on
    firefox-esr - GCONF: on
    firefox-esr - JACK: on
    firefox-esr - LIBPROXY: off
    firefox-esr - OPTIMIZED_CFLAGS: on
    firefox-esr - PROFILE: on
    firefox-esr - PULSEAUDIO: on
    firefox-esr - SNDIO: on
    firefox-esr - TEST: off



    pkg info -d firefox-esr|grep -c pulse                                          
    0
    % pkg info -d firefox-esr|grep -c way                                            
    0

    Держите нас и далее в курсе всех подозрений!

     
     
  • 5.28, xm (ok), 19:21, 19/11/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Кстати, теперь, вроде бы, достаточно в опциях будет оставить только SNDIO и не тащить всё это pulsealsa-тряхомудие. Сейчас опции отключу. Посмотрим как оно с следующим апдейтом соберётся.
     
     
  • 6.34, пох. (?), 22:20, 19/11/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Посмотрим как оно с следующим апдейтом соберётся.

    главное - ни в коем случае не смотреть, работает ли в нем после этого звук.

    типикал freebsd-др..ры. Зато у них "в зависимостях пульсаудио нет". (в config есть, в зависимостях - нет. Ну молодцы, чо.)

      

     
     
  • 7.35, xm (ok), 22:45, 19/11/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Действительно, странно что опция присутствует но ничего не делает.
    Надо майнтайнера пнуть, что ли.
    Впрочем, что тут перед хамом распинаться...
     
     
  • 8.37, анонн (ok), 03:08, 20/11/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Не недо Его уже пинали, чтобы выпилил пульсу из зависимостей - в опциях указаны... текст свёрнут, показать
     
     
  • 9.40, пох. (?), 10:14, 20/11/2019 [^] [^^] [^^^] [ответить]  
  • +/
    а нелюбители работы через двойную прослойку эмуляторов - не могут разьве что са... текст свёрнут, показать
     
     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



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

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