lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20100222200851.GD3344@hmsreliant.think-freely.org>
Date:	Mon, 22 Feb 2010 15:44:29 -0500
From:	Neil Horman <nhorman@...driver.com>
To:	akpm@...ux-foundation.org
Cc:	oleg@...hat.com, viro@...iv.linux.org.uk,
	linux-kernel@...r.kernel.org, nhorman@...driver.com
Subject: [PATCH] supress uid comparison test if core output files are pipes

Modify uid check in do_coredump so as to not apply it in the case of pipes

So this just got noticed in testing.  The end of do_coredump validates the uid
of the inode for the created file against the uid of the crashing process to
ensure that no one can pre-create a core file with different ownership and grab
the information contained in the core when they shouldn' tbe able to.  This
causes failures when using pipes for a core dumps if the crashing process is not
root, which is the uid of the pipe when it is created.

The fix is simple.  Since the check for matching uid's isn't relevant for pipes
(a process can't create a pipe that the uermodehelper code will open anyway), we
can just just skip it in the event ispipe is non-zero

Signed-off-by: Neil Horman <nhorman@...driver.com>


 exec.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/fs/exec.c b/fs/exec.c
index 6303d18..6af2214 100644
--- a/fs/exec.c
+++ b/fs/exec.c
@@ -1987,8 +1987,9 @@ void do_coredump(long signr, int exit_code, struct pt_regs *regs)
 	/*
 	 * Dont allow local users get cute and trick others to coredump
 	 * into their pre-created files:
+	 * Note, this is not relevant for pipes
 	 */
-	if (inode->i_uid != current_fsuid())
+	if (!ispipe && (inode->i_uid != current_fsuid()))
 		goto close_fail;
 	if (!cprm.file->f_op)
 		goto close_fail;
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ