On Sun, Mar 11, 2012 at 12:25:18AM +0100, Djalal Harouni wrote: > The /proc/<pid>/{environ,pagemap} are sensitive files which must be > protected across execve to avoid information leaks. > > These files are protected by attaching them to their task at open time by > saving the exec_id of the target task, this way in read we just compare > the target task's exec_id and the previously saved exec_id of the > proc_file_private struct, in other words we just bind these files to their > appropriate process image at open time. We do this since we are able to do > proper permission checks (ptrace) at each syscall, so we do not care about > the reader. > > Another important rule is to set the exec_id of the target task before the > permission checks at open, this way we do not race against target task > execve, and it will be more effective if the exec_id check at read/write > times are delayed as much as possible to be sure that the target task do > not change during execve. > > This patch adds the open file_operation to the > /proc/<pid>/{environ,pagemap} so we are able to set the exec_id of the > target task and to do the appropriate permission checks. The exec_id check > is done in the related read file_operation. ->open is duplicated. > --- a/fs/proc/base.c > +++ b/fs/proc/base.c > +static int environ_open(struct inode *inode, struct file *filp) -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html