LINUX.ORG.RU

Профили AppArmor для Viber и Telegram

 , ,


4

0

Приветствую! Переполненный желанием принести сообществу красноглазых хоть какую-то пользу, решил выложить для всеобщего пользования профили безопасности AppArmor для постоянно сидящих в сети неугодных Столлману мессенджеров Viber и Telegram. Профили созданы на Kubuntu 16.04 и минимально тестировались (вроде запускаются, то есть) только на ней же. За основу был взят найденный где-то в сети профиль для скайпа. Часть правил осталась от скайпа, и, возможно, не нужна. В тексте профиля следует заменить /raid/downloads/ на нужную папку для загрузки\выгрузки файлов. Предполагается, что Viber ставился deb-пакетом с официального сайта, а Telegram - из ppa, оба в /opt. Мои исходные тексты выкладываются под свободной лицензией PIZZA-WARE. Дальнейшее совершенствование всемерно приветствуется, особенно в части доступа к оборудованию.

Viber:

#include <tunables/global>
/opt/viber/Viber {
  #include <abstractions/audio>
  #include <abstractions/consoles>
  #include <abstractions/dbus>
  #include <abstractions/gnome>
  #include <abstractions/kde>
  #include <abstractions/nameservice>
  #include <abstractions/video>

  # Executables
  /opt/viber/Viber ixmr,
  /usr/bin/xdg-open PUxmr,

  # Configuration files
  owner @{HOME}/.ViberPC/ rw,
  owner @{HOME}/.ViberPC/** krw,

  # Downloads/uploads directory
  /raid/downloads/** krw,
  
  # Libraries and other data
  /opt/viber/** mr,

  # Shared data
  /usr/share/viber/ r,
  /usr/share/viber/** r,

  # Devices
  /dev/ r,
  /dev/video[0-9]* mrw,
  /dev/nvidia* rw,

  # System information
  /etc/machine-id r,
  @{PROC}/sys/kernel/{ostype,osrelease} r,
  @{PROC}/sys/vm/overcommit_memory r,
  @{PROC}/[0-9]*/net/arp r,
  owner @{PROC}/[0-9]*/cmdline r,
  owner @{PROC}/[0-9]*/status r,
  owner @{PROC}/[0-9]*/task/ r,
  owner @{PROC}/[0-9]*/task/[0-9]*/stat r,
  /sys/devices/system/cpu/ r,
  /sys/devices/system/cpu/cpu[0-9]*/cpufreq/scaling_{cur_freq,max_freq} r,
  /sys/devices/pci*/*/** r,
  /sys/bus/pci/** r,

  # This probably should go to appropriate abstractions
  owner @{HOME}/.config/fontconfig/fonts.conf r,
  owner @{HOME}/.config/gtk-3.0/bookmarks r,
  owner @{HOME}/.config/pulse/cookie krw,
  owner @{HOME}/.icons/** r,
  owner @{HOME}/.kde/share/config/kioslaverc r,

  # Denials
  deny owner @{HOME}/.mozilla/ r,
  deny owner @{HOME}/.mozilla/** r,
  deny /sys/devices/virtual/dmi/** r,
}

Telegram:

#include <tunables/global>
/opt/telegram/Telegram {
  #include <abstractions/audio>
  #include <abstractions/consoles>
  #include <abstractions/dbus>
  #include <abstractions/gnome>
  #include <abstractions/kde>
  #include <abstractions/nameservice>
  #include <abstractions/video>

  # Executables
  /opt/telegram/Telegram ixmr,
  /usr/bin/xdg-open PUxmr,

  # Configuration files
  owner @{HOME}/.TelegramDesktop/ rw,
  owner @{HOME}/.TelegramDesktop/** krw,

  # Downloads/uploads directory
  /raid/downloads/** krw,
  
  # Libraries and other data
  /opt/telegram/** mr,

  # Devices
  /dev/ r,
  /dev/video[0-9]* mrw,
  /dev/nvidia* rw,

  # System information
  /etc/machine-id r,
  @{PROC}/sys/kernel/{ostype,osrelease} r,
  @{PROC}/sys/vm/overcommit_memory r,
  @{PROC}/[0-9]*/net/arp r,
  owner @{PROC}/[0-9]*/cmdline r,
  owner @{PROC}/[0-9]*/status r,
  owner @{PROC}/[0-9]*/task/ r,
  owner @{PROC}/[0-9]*/task/[0-9]*/stat r,
  /sys/devices/system/cpu/ r,
  /sys/devices/system/cpu/cpu[0-9]*/cpufreq/scaling_{cur_freq,max_freq} r,
  /sys/devices/pci*/*/** r,
  /sys/bus/pci/** r,

  # This probably should go to appropriate abstractions
  owner @{HOME}/.config/fontconfig/fonts.conf r,
  owner @{HOME}/.config/gtk-3.0/bookmarks r,
  owner @{HOME}/.config/pulse/cookie krw,
  owner @{HOME}/.icons/** r,
  owner @{HOME}/.kde/share/config/kioslaverc r,

  # Denials
  deny owner @{HOME}/.mozilla/ r,
  deny owner @{HOME}/.mozilla/** r,
  deny /sys/devices/virtual/dmi/** r,
}

PS Так же починил профиль для работы openjdk icedtea 8 в Firefox. Если кого интересует - готов выложить.


Столько гемора, лишь бы firejail не использовать.

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

Не имею ни малейшего понятия, но при резком обострении параноий желании можно сверить бинарник с бинарником с офсайта.

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

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

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

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

Deleted ()

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

o- ()

Какой паршивый синтаксис у этих конфигурационных файлов. Такое чувство, что смешали C++, BASH и MAKE.

EXL ★★★★★ ()

Внезапно, обновление!

Правила обновлены, за основу взят код https://github.com/phalaaxx/aaprofiles, тестировалось под Kubuntu 17.04

Viber 6.5.5.1481

# vim:syntax=apparmor
# Author: Bozhin Zafirov <bozhin@abv.bg>

#include <tunables/global>

#/opt/viber/Viber flags=(complain) {
/opt/viber/Viber {
  #include <abstractions/base>
  #include <abstractions/fonts>
  #include <abstractions/audio>
  #include <abstractions/user-tmp>
  #include <abstractions/dbus-session>
  #include <abstractions/nameservice>
  #include <abstractions/nvidia>

  ## access to binary
  /opt/viber/Viber rmPx,

  ## viber root tree
  /opt/viber/** rm,

  ## devices
  /sys/bus/pci/devices** r,
  /sys/devices/** r,

  ## network
  network,
  network tcp,

  ## home files
  owner @{HOME}/ r,
  owner @{HOME}/* rwk,
  owner @{HOME}/.ViberPC/ rw,
  owner @{HOME}/.ViberPC/** rwk,
  owner @{HOME}/.Xauthority r,
  owner @{HOME}/.config/user-dirs.dirs r,
  owner @{HOME}/.icons/** r,
  owner @{HOME}/Documents/ViberDownloads/* rw,

  ## /proc
  owner @{PROC}/*/status r,
  owner @{PROC}/*/fd/ r,

  ## nvidia
  /usr/share/nvidia/** r,

  ## other
  /etc/issue r,
  /etc/udev/udev.conf r,
  /usr/bin/lsb_release ux,
  /usr/bin/xdg-open ux,
  /tmp** rwm,
  /usr/share/icons/** r,

  ## deny rules
  deny /dev/tty r,
  
  ## мои дополнения
  /dev/dri/ r,
  /dev/dri/card0 wr,
  /usr/lib/x86_64-linux-gnu/** m,
  /etc/drirc r,
  owner @{HOME}/.config/kdeglobals r,
 }

Telegram 1.0.29-1 (теперь из основного репозитария Ubuntu)

# vim:syntax=apparmor
# Author: Bozhin Zafirov <bozhin@abv.bg>

#include <tunables/global>

/usr/bin/telegram-desktop {
  #include <abstractions/base>
  #include <abstractions/fonts>
  #include <abstractions/audio>
  #include <abstractions/kde>
  #include <abstractions/dbus-session>
  #include <abstractions/nameservice>

  # access to binary
  /usr/bin/telegram-desktop rmPx,

  # home files
  owner @{HOME}/ r,
  owner @{HOME}/* rwk,
  owner @{HOME}/.TelegramDesktop/ rwk,
  owner @{HOME}/.TelegramDesktop/** rwkl,
  owner @{HOME}/.icons/** r,
  owner @{HOME}/.cache/** rwk,
  owner @{HOME}/.config/kdeglobals r,

  # shared libraries
  /usr/lib/** rm,

  # /proc
  owner @{PROC}/** r,
  
  ## devices
  /dev/dri/ r,
  /sys/devices/** r,
}

Doge ()

если я правильно понял, то эта проприетарщина всеравно будет тиметь доступ к камере и микрофону с такими конфигами, так зачем оно тогда надо?

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

Приложения, особенно проприетарные, которые постоянно что то качают со своих серверов, являются самым уязвимым местом для эксплуатации уязвимостей. Наверняка в том же Viber и Skype куча дыр (а может и сознательных бэкдоров), которые по первой команде со своего сервера (который они постоянно слушают) сделают на твоей машине что угодно. Настроенные ограничения через AppArmor от этого защитят. Камеру надо шторкой закрывать, а микрофон - вытаскивать. Выживут только параноики.

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

Ну а толку тогда от твоих профилей, если ты их скопировал с шаблона и не оттестировал? Надо было tcpdump'ом и conntrack'ом сравнить трафик и показать, что да стало меньше. Но думаю даже этого будет недостаточно т.к. весь трафик до серфера зашифрован и неизвестно что он там передает.

Меня еще вот эти строчки смущает:

  owner @{HOME}/ r,
  owner @{HOME}/* rwk,
В AppArmor не шарю, но очень похоже на разрешение чтения/записи в хомяке, что не есть гуд т.к. пользователи там самое ценное обычно хранят.

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

Профили далеки от идеала, но лучше что-то, чем ничего. Не нравится - возьми и сделай лучше.

Меня еще вот эти строчки смущает

Право чтения и записи в домашнюю папку (но не во вложенные). Не знаю, зачем это. Может, и не нужно. Лично у меня для ценных данных отдельный раздел.

Doge ()

Обновил профиль для Viber

# vim:syntax=apparmor
# Author: Bozhin Zafirov <bozhin@abv.bg>, Doge <www.linux.org.ru/forum/security/12571666>

#include <tunables/global>

/opt/viber/Viber {
  #include <abstractions/base>
  #include <abstractions/fonts>
  #include <abstractions/audio>
  #include <abstractions/user-tmp>
  #include <abstractions/dbus-session>
  #include <abstractions/nameservice>
  #include <abstractions/nvidia>

  ## access to binary
  /opt/viber/Viber rmPx,

  ## viber root tree
  /opt/viber/** rm,

  ## devices
  /sys/bus/pci/devices** r,
  /sys/devices/** r,
  /dev/dri/ r,
  /dev/dri/card0 wr,

  ## network
  network,
  network tcp,

  ## home files main
  owner @{HOME}/.ViberPC/ rw,
  owner @{HOME}/.ViberPC/** rwk,
  owner @{HOME}/Documents/ViberDownloads/** rwk,
  owner @{HOME}/Документы/ViberDownloads/** rwk,
  
  ## home file other
  
  owner @{HOME}/.Xauthority r,
  owner @{HOME}/.config/user-dirs.dirs r,
  owner @{HOME}/.icons/** r,
  owner @{HOME}/.config/kdeglobals r,
  owner @{HOME}/.config/QtProject.conf r,
  owner @{HOME}.local/share/applications/mimeapps.list.new rw,
  owner @{HOME}.config/mimeapps.list.new rw,
  owner @{HOME}/.local/share/applications/mimeapps.list rw,
  owner @{HOME}/.config/mimeapps.list rw,

  ## /proc
  owner @{PROC}/*/status r,
  owner @{PROC}/*/fd/ r,
  /proc/sys/kernel/shmmax r,

  ## nvidia
  /usr/share/nvidia/** r,

  ## other
  /etc/issue r,
  /etc/udev/udev.conf r,
  /usr/bin/lsb_release ux,
  /usr/bin/xdg-open ux,
  /usr/bin/xdg-mime rix,
  /usr/bin/cut rix,
  /usr/bin/mawk rix,
  /bin/dash rix,
  /bin/mv rix,
  /tmp** rwm,
  /usr/share/icons/** r,
  /usr/lib/x86_64-linux-gnu/** m,
  /etc/drirc r,
  /opt/viber/QtWebEngineProcess rix,
  ptrace trace,

  ## deny rules
  deny /dev/tty r,
}

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