From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eamon Walsh Subject: Re: SELinux and access(2), we want to know. Date: Fri, 08 May 2009 01:16:35 -0400 Message-ID: <4A03C033.6030307@tycho.nsa.gov> References: <1241723924.2791.107.camel@localhost.localdomain> <20090507195729.GA21104@us.ibm.com> <4A03AC41.1040505@schaufler-ca.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: "Serge E. Hallyn" , Eric Paris , selinux@tycho.nsa.gov, linux-fsdevel@vger.kernel.org, linux-security-module@vger.kernel.org, viro@ZenIV.linux.org.uk, sds@tycho.nsa.gov To: Casey Schaufler Return-path: In-Reply-To: <4A03AC41.1040505@schaufler-ca.com> Sender: linux-security-module-owner@vger.kernel.org List-Id: linux-fsdevel.vger.kernel.org Casey Schaufler wrote: > Serge E. Hallyn wrote: > >> Quoting Eric Paris (eparis@redhat.com): >> >> >>> 3) I've also heard it hinted that we could do this with audit by just >>> having audit drop the denials that include the access(2) syscall and the >>> scontext and tcontext for the slew of things the SELinux policy writers >>> know we are not interested in. And while it seems good, now we have >>> >>> >> What is the difference whether an attacker does access(2) to check for >> /etc/shadow rights, or does a failed open()? >> >> > > I have been studiously ignoring the discussions on the SELinux list because > in the end it really doesn't matter, as Serge (appears to) point out here. > The access() system call was a major thorn in the side of the POSIX security > working group because its behavior is not really very rational. By design > it does not take into account read-only file systems, ACLs, MAC labels, > TOMOYO policy, or anything other than the mode bits. A successful return > from access() gives you no assurance whatever that if you actually try the > operation it will succeed. My recollection is that every version of > "trusted unix" written treats the system call the same way it would a > call to lstat(), because that's really all it is doing. > Serge, and the status quo, says access() == open(), not access() == lstat(). Eric's proposed change would be necessary to support access() == lstat(), even as an option. -- Eamon Walsh National Security Agency