From 77050ff91f7d3760e89ececb258929ac8ac67396 Mon Sep 17 00:00:00 2001 From: Sona Sarmadi Date: Wed, 21 Oct 2015 09:37:45 +0200 Subject: kernel: CVE-2015-1333 Fixes denial of service due to memory leak in add_key() References: http://www.openwall.com/lists/oss-security/2015/07/27/7 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-1333 Upstream fix: https://git.kernel.org/cgit/linux/kernel/git/stable/ linux-stable.git/commit/?id=4fd5dc9eece297f49f16f82422ead3a28b11ea70 Signed-off-by: Sona Sarmadi Signed-off-by: Tudor Florea --- .../keys-CVE-2015-1333.patch | 57 ++++++++++++++++++++++ .../linux-hierofalcon-4.1/keys-CVE-2015-1333.patch | 52 ++++++++++++++++++++ recipes-kernel/linux/linux-hierofalcon_3.19.bb | 2 + recipes-kernel/linux/linux-hierofalcon_4.1.bb | 2 + 4 files changed, 113 insertions(+) create mode 100644 recipes-kernel/linux/linux-hierofalcon-3.19/keys-CVE-2015-1333.patch create mode 100644 recipes-kernel/linux/linux-hierofalcon-4.1/keys-CVE-2015-1333.patch (limited to 'recipes-kernel') diff --git a/recipes-kernel/linux/linux-hierofalcon-3.19/keys-CVE-2015-1333.patch b/recipes-kernel/linux/linux-hierofalcon-3.19/keys-CVE-2015-1333.patch new file mode 100644 index 0000000..4181252 --- /dev/null +++ b/recipes-kernel/linux/linux-hierofalcon-3.19/keys-CVE-2015-1333.patch @@ -0,0 +1,57 @@ +From 66db51c9f7b2fe7ebdfa753b2aa9abbb9feddc87 Mon Sep 17 00:00:00 2001 +From: Colin Ian King +Date: Mon, 27 Jul 2015 15:23:43 +0100 +Subject: [PATCH] KEYS: ensure we free the assoc array edit if edit is valid + +[ Upstream commit HEAD ] + +commit ca4da5dd1f99fe9c59f1709fb43e818b18ad20e0 upstream. + +__key_link_end is not freeing the associated array edit structure +and this leads to a 512 byte memory leak each time an identical +existing key is added with add_key(). + +The reason the add_key() system call returns okay is that +key_create_or_update() calls __key_link_begin() before checking to see +whether it can update a key directly rather than adding/replacing - which +it turns out it can. Thus __key_link() is not called through +__key_instantiate_and_link() and __key_link_end() must cancel the edit. + +CVE-2015-1333 + +Upstream-Status: Backport + +Signed-off-by: Colin Ian King +Signed-off-by: David Howells +Signed-off-by: James Morris +Signed-off-by: Greg Kroah-Hartman + +(cherry picked from commit c9cd9b18dac801040ada16562dc579d5ac366d75) +Signed-off-by: Sasha Levin +Signed-off-by: Sona Sarmadi +--- + security/keys/keyring.c | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +diff --git a/security/keys/keyring.c b/security/keys/keyring.c +index e72548b..d334370 100644 +--- a/security/keys/keyring.c ++++ b/security/keys/keyring.c +@@ -1181,9 +1181,11 @@ void __key_link_end(struct key *keyring, + if (index_key->type == &key_type_keyring) + up_write(&keyring_serialise_link_sem); + +- if (edit && !edit->dead_leaf) { +- key_payload_reserve(keyring, +- keyring->datalen - KEYQUOTA_LINK_BYTES); ++ if (edit) { ++ if (!edit->dead_leaf) { ++ key_payload_reserve(keyring, ++ keyring->datalen - KEYQUOTA_LINK_BYTES); ++ } + assoc_array_cancel_edit(edit); + } + up_write(&keyring->sem); +-- +1.9.1 + diff --git a/recipes-kernel/linux/linux-hierofalcon-4.1/keys-CVE-2015-1333.patch b/recipes-kernel/linux/linux-hierofalcon-4.1/keys-CVE-2015-1333.patch new file mode 100644 index 0000000..5927c50 --- /dev/null +++ b/recipes-kernel/linux/linux-hierofalcon-4.1/keys-CVE-2015-1333.patch @@ -0,0 +1,52 @@ +From 4fd5dc9eece297f49f16f82422ead3a28b11ea70 Mon Sep 17 00:00:00 2001 +From: Colin Ian King +Date: Mon, 27 Jul 2015 15:23:43 +0100 +Subject: [PATCH] KEYS: ensure we free the assoc array edit if edit is valid + +commit ca4da5dd1f99fe9c59f1709fb43e818b18ad20e0 upstream. + +__key_link_end is not freeing the associated array edit structure +and this leads to a 512 byte memory leak each time an identical +existing key is added with add_key(). + +The reason the add_key() system call returns okay is that +key_create_or_update() calls __key_link_begin() before checking to see +whether it can update a key directly rather than adding/replacing - which +it turns out it can. Thus __key_link() is not called through +__key_instantiate_and_link() and __key_link_end() must cancel the edit. + +CVE-2015-1333 + +Upstream-Status: Backport + +Signed-off-by: Colin Ian King +Signed-off-by: David Howells +Signed-off-by: James Morris +Signed-off-by: Greg Kroah-Hartman +Signed-off-by: Sona Sarmadi +--- + security/keys/keyring.c | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +diff --git a/security/keys/keyring.c b/security/keys/keyring.c +index e72548b..d334370 100644 +--- a/security/keys/keyring.c ++++ b/security/keys/keyring.c +@@ -1181,9 +1181,11 @@ void __key_link_end(struct key *keyring, + if (index_key->type == &key_type_keyring) + up_write(&keyring_serialise_link_sem); + +- if (edit && !edit->dead_leaf) { +- key_payload_reserve(keyring, +- keyring->datalen - KEYQUOTA_LINK_BYTES); ++ if (edit) { ++ if (!edit->dead_leaf) { ++ key_payload_reserve(keyring, ++ keyring->datalen - KEYQUOTA_LINK_BYTES); ++ } + assoc_array_cancel_edit(edit); + } + up_write(&keyring->sem); +-- +1.9.1 + diff --git a/recipes-kernel/linux/linux-hierofalcon_3.19.bb b/recipes-kernel/linux/linux-hierofalcon_3.19.bb index 25eb602..1a85f72 100644 --- a/recipes-kernel/linux/linux-hierofalcon_3.19.bb +++ b/recipes-kernel/linux/linux-hierofalcon_3.19.bb @@ -1,4 +1,5 @@ DESCRIPTION = "Linux kernel for AMD Hierofalcon Cortex-A57" +FILESEXTRAPATHS_prepend := "${THISDIR}/linux-hierofalcon-3.19:" COMPATIBLE_MACHINE = "hierofalcon*" @@ -14,6 +15,7 @@ SRC_URI = "git://git.yoctoproject.org/linux-yocto-3.19;branch="standard/qemuarm6 file://03-arm64-don-t-set-READ_IMPLIES_EXEC-for-EM_AARCH64-ELF.patch \ file://319-Hierofalcon-Update-xgbe-drivers-for-B0-board.patch \ file://defconfig \ + file://keys-CVE-2015-1333.patch \ " S = "${WORKDIR}/git" diff --git a/recipes-kernel/linux/linux-hierofalcon_4.1.bb b/recipes-kernel/linux/linux-hierofalcon_4.1.bb index a9159b1..1140927 100644 --- a/recipes-kernel/linux/linux-hierofalcon_4.1.bb +++ b/recipes-kernel/linux/linux-hierofalcon_4.1.bb @@ -1,4 +1,5 @@ DESCRIPTION = "Linux kernel for AMD Hierofalcon Cortex-A57" +FILESEXTRAPATHS_prepend := "${THISDIR}/linux-hierofalcon-4.1:" COMPATIBLE_MACHINE = "hierofalcon*" @@ -20,6 +21,7 @@ SRC_URI = "git://git.yoctoproject.org/linux-yocto-4.1;branch="standard/qemuarm64 file://412-7-styx-linux-tracking.git-f9a9d954f23b967cd26338afda9a0a96afe62c25.patch \ file://412-styx-Fix-build-issues-after-porting-PCI-patches-to-4.1.2-.patch \ file://defconfig \ + file://keys-CVE-2015-1333.patch \ " S = "${WORKDIR}/git" -- cgit v1.2.3-54-g00ecf