|
Message-ID: <20110327150546.GA16582@albatros> Date: Sun, 27 Mar 2011 19:05:46 +0400 From: Vasiliy Kulikov <segoon@...nwall.com> To: owl-dev@...ts.openwall.com Subject: sysfs facility Solar, all - I've wrote a draft version of sysfs facility for owl-control to restrict access to contents of sysfs mount point. It has only 2 modes - public (currently implemented in every distro) and restricted. It lacks a group restriction. The same works for procfs (e.g. to fix numerous ASLR infoleaks, prevent exploitation of CVE-2011-1020, or just to restrict ps(1)). root@...nshilla:~# control sysfs public root@...nshilla:~# control sysfs list public restricted root@...nshilla:~# ls -ld /sys drwxr-xr-x 12 root root 0 2011-03-27 13:18 /sys root@...nshilla:~# control sysfs restricted root@...nshilla:~# ls -ld /sys lrwxrwxrwx 1 root root 22 2011-03-27 18:57 /sys -> /var/run/mnt-sysfs/sys root@...nshilla:~# ls -ld /var/run/mnt-sysfs/sys drwxr-xr-x 12 root root 0 2011-03-27 13:18 /var/run/mnt-sysfs/sys root@...nshilla:~# ls -ld /var/run/mnt-sysfs/ drwx------ 3 root root 60 2011-03-27 18:57 /var/run/mnt-sysfs/ root@...nshilla:~# su - vasya vasya@...nshilla:~$ ls /sys ls: cannot access /sys: Permission denied root@...nshilla:~# control sysfs public root@...nshilla:~# ls -ld /sys drwxr-xr-x 12 root root 0 2011-03-27 13:18 /sys root@...nshilla:~# su - vasya vasya@...nshilla:~$ ls -ld /sys drwxr-xr-x 12 root root 0 2011-03-27 13:18 /sys #!/bin/bash . /etc/control.d/functions MNT_ORIG=/sys MNT_RESTRIC=/var/run/mnt-sysfs/sys MNT_TYPE=sysfs NAME_LIST="public restricted" #TODO: maybe create group u_sysfs? MNT_CUR=`mount | grep "type $MNT_TYPE" | cut -d' ' -f3` case "$*" in list) echo "$NAME_LIST" ;; status|'') STATUS="`test -h `" || exit 1 if [ -h "$MNT_ORIG" ]; then echo restricted else echo public fi ;; public) if [ "$MNT_CUR" = "$MNT_ORIG" ]; then exit 0 else [ -h "$MNT_ORIG" ] || [ ! -e "$MNT_ORIG" ] || exit 1 rm -f "$MNT_ORIG" mkdir -p -m755 "$MNT_ORIG" || exit 1 if [ -n "$MNT_CUR" ]; then mount --move "$MNT_CUR" "$MNT_ORIG" || exit 1 fi fi ;; restricted) if [ "$MNT_CUR" = "$MNT_RESTRIC" ]; then exit 0 else umask 0077 mkdir -p -m700 "$MNT_RESTRIC" || exit 1 if [ -n "$MNT_CUR" ]; then mount --move "$MNT_ORIG" "$MNT_RESTRIC" || exit 1 fi if [ -z "`ls $MNT_ORIG`" ]; then rmdir "$MNT_ORIG" || exit 1 ln -s "$MNT_RESTRIC" "$MNT_ORIG" || exit 1 else exit 1 fi fi ;; esac -- Vasiliy
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.