|
|
Message-ID: <20110618104207.GA13752@albatros>
Date: Sat, 18 Jun 2011 14:42:07 +0400
From: Vasiliy Kulikov <segoon@...nwall.com>
To: kernel-hardening@...ts.openwall.com
Subject: proc info restrictions problem
Hi,
I'm trying to adapt HARDEN_PROC restrictions to taskstats and proc
connector and stuck with a problem. proc connector is a special
broadcast netlink socket that gathers all proc information (fork, exit,
exec). There is one mechanism to filter the data coming into actual
receiving sockets:
int netlink_broadcast_filtered(..., void (*filter)(sock, skb, data), data)
"sock" is receiving socket, filter answers whether the skb should be
send to "sock".
The thing is a socket has no actual information about what specific task
owns it as it might be owned by multiple tasks simultaneously. So, I
cannot check for PTRACE_MODE_READ as I have only "struct cred*", not
"struct task_struct*". Some LSMs use only cred part of task, but SMACK
already uses some information from task_struct, so changing ptrace and LSM
interface is impossible.
Manual check for {e,r,fs,s}{u,g}id and capabilities via
cap_ptrace_access_check() might not be sufficient because of possible
additional LSM restrictions and policies.
I feel doubt whether ptrace_may_access() may be changed to something
more simple. Both -ow and -grsecurity use changed posix permissions and
gid on procfs files, so maybe just match subject's euid vs. object's uid?
Thanks,
--
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.