User:Post-factum/TOMOYO/Adobe Reader

From ArchWiki

Follow the instructions here to install TOMOYO. Please note that this section describes using TOMOYO 2.5.

Note that the instructions below describe securing acroreadAUR.

  • Open /etc/tomoyo/exception_policy.conf file and add these lines:
path_group PDF_FILES /\{\*\}/\*.pdf
path_group THEMES_FILES /usr/share/themes/\{\*\}/\*
path_group THEMES_FILES /usr/share/themes/\*
path_group FONTS_DIRS /usr/share/fonts/\{\*\}/
path_group FONTS_FILES /usr/share/fonts/\{\*\}/\*
path_group FONTS_FILES /usr/share/fonts/\*
path_group ACROREAD_FILES /opt/Adobe/Reader9/\{\*\}/\*
path_group ACROREAD_FILES /opt/Adobe/Reader9/\*
path_group ACROREAD_FILES /home/\*/.adobe/Acrobat/\{\*\}/\*
path_group ACROREAD_FILES /home/\*/.adobe/Acrobat/\*
path_group ACROREAD_DIRS /home/\*/.adobe/Acrobat/\{\*\}/
path_group ACROREAD_DIRS /home/\*/.adobe/\{\*\}/
initialize_domain /usr/bin/acroread from any
  • Then open /etc/tomoyo/domain_policy.conf and add the following lines:
<kernel> /usr/bin/acroread
use_profile 3
use_group 0

file execute /bin/ls exec.realpath="/usr/bin/ls" exec.argv[0]="/bin/ls"
file execute /bin/pwd exec.realpath="/usr/bin/pwd" exec.argv[0]="/bin/pwd"
file execute /bin/sed exec.realpath="/bin/sed" exec.argv[0]="sed"
file execute /opt/Adobe/Reader9/Reader/intellinux/bin/acroread exec.realpath="/opt/Adobe/Reader9/Reader/intellinux/bin/acroread" exec.argv[0]="/opt/Adobe/Reader9/Reader/intellinux/bin/acroread"
file execute /usr/bin/basename exec.realpath="/usr/bin/basename" exec.argv[0]="basename"
file execute /usr/bin/cat exec.realpath="/usr/bin/cat" exec.argv[0]="cat"
file execute /usr/bin/cp exec.realpath="/usr/bin/cp" exec.argv[0]="cp"
file execute /usr/bin/cut exec.realpath="/usr/bin/cut" exec.argv[0]="cut"
file execute /usr/bin/dirname exec.realpath="/usr/bin/dirname" exec.argv[0]="dirname"
file execute /usr/bin/expr exec.realpath="/usr/bin/expr" exec.argv[0]="expr"
file execute /usr/bin/gconftool-2 exec.realpath="/usr/bin/gconftool-2" exec.argv[0]="gconftool-2"
file execute /usr/bin/mkdir exec.realpath="/usr/bin/mkdir" exec.argv[0]="mkdir"
file execute /usr/bin/rm exec.realpath="/usr/bin/rm" exec.argv[0]="rm"
file execute /usr/bin/sed exec.realpath="/usr/bin/sed" exec.argv[0]="sed"
file execute /usr/bin/test exec.realpath="/usr/bin/test" exec.argv[0]="/usr/bin/test"
file execute /usr/bin/uname exec.realpath="/usr/bin/uname" exec.argv[0]="uname"
file execute /usr/bin/which exec.realpath="/usr/bin/which" exec.argv[0]="which"
file execute /usr/bin/xargs exec.realpath="/usr/bin/xargs" exec.argv[0]="xargs"
file read /bin/bash
file read /opt/Adobe/Reader9/bin/acroread
file read /usr/bin/bash
file read /usr/bin/sed
file read /usr/lib/gconv/gconv-modules
file read /usr/lib/locale/locale-archive
file read @PDF_FILES
file read/write /dev/tty
file write /dev/null
misc env \*

<kernel> /usr/bin/acroread /usr/bin/cut
use_profile 0
use_group 0

<kernel> /usr/bin/acroread /bin/pwd
use_profile 0
use_group 0

<kernel> /usr/bin/acroread /usr/bin/dirname
use_profile 0
use_group 0

<kernel> /usr/bin/acroread /usr/bin/expr
use_profile 0
use_group 0

<kernel> /usr/bin/acroread /usr/bin/basename
use_profile 0
use_group 0

<kernel> /usr/bin/acroread /bin/ls
use_profile 0
use_group 0

<kernel> /usr/bin/acroread /bin/sed
use_profile 0
use_group 0

<kernel> /usr/bin/acroread /usr/bin/sed
use_profile 0
use_group 0

<kernel> /usr/bin/acroread /usr/bin/cat
use_profile 0
use_group 0

<kernel> /usr/bin/acroread /usr/bin/uname
use_profile 0
use_group 0

<kernel> /usr/bin/acroread /usr/bin/test
use_profile 0
use_group 0

<kernel> /usr/bin/acroread /usr/bin/gconftool-2
use_profile 0
use_group 0

<kernel> /usr/bin/acroread /usr/bin/xargs
use_profile 0
use_group 0

<kernel> /usr/bin/acroread /usr/bin/xargs /usr/bin/dirname
use_profile 0
use_group 0

<kernel> /usr/bin/acroread /usr/bin/which
use_profile 0
use_group 0

<kernel> /usr/bin/acroread /usr/bin/rm
use_profile 0
use_group 0

<kernel> /usr/bin/acroread /usr/bin/mkdir
use_profile 0
use_group 0

<kernel> /usr/bin/acroread /usr/bin/cp
use_profile 0
use_group 0

<kernel> /usr/bin/acroread /opt/Adobe/Reader9/Reader/intellinux/bin/acroread
use_profile 3
use_group 0

file chmod /home/\*/.local/share/recently-used.\* 0600
file chmod @ACROREAD_FILES 0644
file create /dev/shm/sem.\* 0666
file create /home/\*/.config/gtk-2.0/gtkfilechooser.ini\* 0666
file create /home/\*/.local/share/recently-used.\* 0666
file create /tmp/acroread\*/\* 0600
file create @ACROREAD_FILES 0-07777
file ioctl anon_inode:inotify 0x541B
file link /dev/shm/sem.\* /dev/shm/sem.\*
file mkdir /tmp/acroread_\*_\*/ 0700
file mkdir @ACROREAD_DIRS 0-07777
file read /dev/urandom
file read /etc/fonts/conf.avail/\*.conf
file read /etc/fonts/conf.d/\*.conf
file read /etc/fonts/fonts.conf
file read /etc/fstab
file read /etc/gtk-2.0/gtk.immodules-32
file read /etc/gtk-2.0/gtkrc
file read /etc/nsswitch.conf
file read /etc/pango/pango.modules-32
file read /etc/passwd
file read /home/\*/.XCompose
file read /home/\*/.Xauthority
file read /home/\*/.cache/fontconfig/\*
file read /home/\*/.config/fontconfig/fonts.conf
file read /home/\*/.fontconfig/\*
file read /home/\*/.gtk-bookmarks
file read /home/\*/.gtkrc-2.0
file read /home/\*/.gtkrc.mine
file read /home/\*/.kde4/share/config/gtkrc-2.0
file read /home/\*/.local/share/mime/mime.cache
file read /home/\*/.local/share/recently-used.xbel
file read /usr/lib/locale/locale-archive
file read /usr/lib32/gconv/ISO8859-1.so
file read /usr/lib32/gconv/UTF-16.so
file read /usr/lib32/gconv/UTF-32.so
file read /usr/lib32/gconv/gconv-modules
file read /usr/lib32/gdk-pixbuf-2.0/2.10.0/loaders.cache
file read /usr/lib32/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-xpm.so
file read /usr/lib32/gtk-\*/\*/engines/\*.so
file read /usr/lib32/gtk-\*/\*/immodules/\*.so
file read /usr/share/X11/locale/\*/XLC_LOCALE
file read /usr/share/X11/locale/compose.dir
file read /usr/share/X11/locale/iso8859-1/Compose
file read /usr/share/X11/locale/iso8859-1/XLC_LOCALE
file read /usr/share/X11/locale/locale.alias
file read /usr/share/X11/locale/locale.dir
file read /usr/share/mime/mime.cache
file read @FONTS_FILES
file read @ICONS_FILES
file read @PDF_FILES
file read @THEMES_FILES
file read sysfs:/devices/system/cpu/online
file read/write /dev/shm/sem.ADBE_REL_\*
file read/write /dev/shm/sem.ADBE_ReadPrefs_\*
file read/write /dev/shm/sem.ADBE_WritePrefs_\*
file read/write/truncate/unlink @ACROREAD_FILES
file read/write/unlink /dev/shm/sem.\*
file read/write/unlink /home/\*/.config/gtk-2.0/gtkfilechooser.ini\*
file read/write/unlink /home/\*/.local/share/recently-used.\*
file read/write/unlink /tmp/acroread\*/\*
file rename /home/\*/.config/gtk-2.0/gtkfilechooser.ini\* /home/\*/.config/gtk-2.0/gtkfilechooser.ini\*
file rename /home/\*/.local/share/recently-used.\* /home/\*/.local/share/recently-used.\*
file symlink /home/\*/.adobe/Acrobat/9.0/Cert/curl-ca-bundle.crt symlink.target="/opt/Adobe/Reader9/Reader/Cert/curl-ca-bundle.crt"
misc env \*
network unix stream connect /var/run/nscd/socket
network unix stream connect \000/tmp/.X11-unix/X0
  • After finishing editing reload TOMOYO configuration files by executing these commands:
# tomoyo-loadpolicy -df </etc/tomoyo/domain_policy.conf
# tomoyo-loadpolicy -ef </etc/tomoyo/exception_policy.conf

Voilà — your Adobe Reader is sandboxed now.

Please note that this configuration is generated on 64-bit Arch system, and some of your ioctls and library paths may differ from mentioned above. So in order to fine-tune TOMOYO configuration for your Adobe Reader start the tomoyo-auditd.service daemon.

Then go to /var/log/tomoyo folder and start watching reject_003.log:

tail -f reject_003.log

The output of this command will show you rejected actions for Adobe Reader, so you will be able to add them to domain_policy.conf file if needed.

Detailed guide about TOMOYO configuring can be found here.