From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757726AbcATIUs (ORCPT ); Wed, 20 Jan 2016 03:20:48 -0500 Received: from mail.linuxfoundation.org ([140.211.169.12]:53291 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751336AbcATIUl (ORCPT ); Wed, 20 Jan 2016 03:20:41 -0500 Date: Wed, 20 Jan 2016 00:20:39 -0800 From: Greg KH To: David Howells Cc: jmorris@namei.org, Don Zickus , Prarit Bhargava , Yevgeny Pats , linux-kernel@vger.kernel.org, Jarod Wilson , linux-security-module@vger.kernel.org, keyrings@vger.kernel.org Subject: Re: [PATCH] KEYS: Fix keyring ref leak in join_session_keyring() Message-ID: <20160120082039.GA22945@kroah.com> References: <20160119220904.3102.51075.stgit@warthog.procyon.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20160119220904.3102.51075.stgit@warthog.procyon.org.uk> User-Agent: Mutt/1.5.24 (2015-08-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Jan 19, 2016 at 10:09:04PM +0000, David Howells wrote: > From: Yevgeny Pats > > This fixes CVE-2016-0728. > > If a thread is asked to join as a session keyring the keyring that's already > set as its session, we leak a keyring reference. > > This can be tested with the following program: > > #include > #include > #include > #include > > int main(int argc, const char *argv[]) > { > int i = 0; > key_serial_t serial; > > serial = keyctl(KEYCTL_JOIN_SESSION_KEYRING, > "leaked-keyring"); > if (serial < 0) { > perror("keyctl"); > return -1; > } > > if (keyctl(KEYCTL_SETPERM, serial, > KEY_POS_ALL | KEY_USR_ALL) < 0) { > perror("keyctl"); > return -1; > } > > for (i = 0; i < 100; i++) { > serial = keyctl(KEYCTL_JOIN_SESSION_KEYRING, > "leaked-keyring"); > if (serial < 0) { > perror("keyctl"); > return -1; > } > } > > return 0; > } > > If, after the program has run, there something like the following line in > /proc/keys: > > 3f3d898f I--Q--- 100 perm 3f3f0000 0 0 keyring leaked-keyring: empty > > with a usage count of 100 * the number of times the program has been run, > then the kernel is malfunctioning. If leaked-keyring has zero usages or > has been garbage collected, then the problem is fixed. > > Reported-by: Yevgeny Pats > Signed-off-by: David Howells > Acked-by: Don Zickus > Acked-by: Prarit Bhargava > Acked-by: Jarod Wilson Any reason you didn't tag this for stable kernels? thanks, greg k-h