mirror of
https://github.com/Divested-Mobile/DivestOS-Build.git
synced 2025-08-04 12:24:27 -04:00
Overhaul CVE patches
This commit is contained in:
parent
ce59045163
commit
92a0187dfb
907 changed files with 301921 additions and 3819 deletions
|
@ -1,71 +0,0 @@
|
|||
From 0eab121ef8750a5c8637d51534d5e9143fb0633f Mon Sep 17 00:00:00 2001
|
||||
From: Kees Cook <keescook@chromium.org>
|
||||
Date: Mon, 5 Dec 2016 10:34:38 -0800
|
||||
Subject: net: ping: check minimum size on ICMP header length
|
||||
|
||||
Prior to commit c0371da6047a ("put iov_iter into msghdr") in v3.19, there
|
||||
was no check that the iovec contained enough bytes for an ICMP header,
|
||||
and the read loop would walk across neighboring stack contents. Since the
|
||||
iov_iter conversion, bad arguments are noticed, but the returned error is
|
||||
EFAULT. Returning EINVAL is a clearer error and also solves the problem
|
||||
prior to v3.19.
|
||||
|
||||
This was found using trinity with KASAN on v3.18:
|
||||
|
||||
BUG: KASAN: stack-out-of-bounds in memcpy_fromiovec+0x60/0x114 at addr ffffffc071077da0
|
||||
Read of size 8 by task trinity-c2/9623
|
||||
page:ffffffbe034b9a08 count:0 mapcount:0 mapping: (null) index:0x0
|
||||
flags: 0x0()
|
||||
page dumped because: kasan: bad access detected
|
||||
CPU: 0 PID: 9623 Comm: trinity-c2 Tainted: G BU 3.18.0-dirty #15
|
||||
Hardware name: Google Tegra210 Smaug Rev 1,3+ (DT)
|
||||
Call trace:
|
||||
[<ffffffc000209c98>] dump_backtrace+0x0/0x1ac arch/arm64/kernel/traps.c:90
|
||||
[<ffffffc000209e54>] show_stack+0x10/0x1c arch/arm64/kernel/traps.c:171
|
||||
[< inline >] __dump_stack lib/dump_stack.c:15
|
||||
[<ffffffc000f18dc4>] dump_stack+0x7c/0xd0 lib/dump_stack.c:50
|
||||
[< inline >] print_address_description mm/kasan/report.c:147
|
||||
[< inline >] kasan_report_error mm/kasan/report.c:236
|
||||
[<ffffffc000373dcc>] kasan_report+0x380/0x4b8 mm/kasan/report.c:259
|
||||
[< inline >] check_memory_region mm/kasan/kasan.c:264
|
||||
[<ffffffc00037352c>] __asan_load8+0x20/0x70 mm/kasan/kasan.c:507
|
||||
[<ffffffc0005b9624>] memcpy_fromiovec+0x5c/0x114 lib/iovec.c:15
|
||||
[< inline >] memcpy_from_msg include/linux/skbuff.h:2667
|
||||
[<ffffffc000ddeba0>] ping_common_sendmsg+0x50/0x108 net/ipv4/ping.c:674
|
||||
[<ffffffc000dded30>] ping_v4_sendmsg+0xd8/0x698 net/ipv4/ping.c:714
|
||||
[<ffffffc000dc91dc>] inet_sendmsg+0xe0/0x12c net/ipv4/af_inet.c:749
|
||||
[< inline >] __sock_sendmsg_nosec net/socket.c:624
|
||||
[< inline >] __sock_sendmsg net/socket.c:632
|
||||
[<ffffffc000cab61c>] sock_sendmsg+0x124/0x164 net/socket.c:643
|
||||
[< inline >] SYSC_sendto net/socket.c:1797
|
||||
[<ffffffc000cad270>] SyS_sendto+0x178/0x1d8 net/socket.c:1761
|
||||
|
||||
CVE-2016-8399
|
||||
|
||||
Reported-by: Qidan He <i@flanker017.me>
|
||||
Fixes: c319b4d76b9e ("net: ipv4: add IPPROTO_ICMP socket kind")
|
||||
Cc: stable@vger.kernel.org
|
||||
Signed-off-by: Kees Cook <keescook@chromium.org>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
net/ipv4/ping.c | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/net/ipv4/ping.c b/net/ipv4/ping.c
|
||||
index 205e200..96b8e2b 100644
|
||||
--- a/net/ipv4/ping.c
|
||||
+++ b/net/ipv4/ping.c
|
||||
@@ -657,6 +657,10 @@ int ping_common_sendmsg(int family, struct msghdr *msg, size_t len,
|
||||
if (len > 0xFFFF)
|
||||
return -EMSGSIZE;
|
||||
|
||||
+ /* Must have at least a full ICMP header. */
|
||||
+ if (len < icmph_len)
|
||||
+ return -EINVAL;
|
||||
+
|
||||
/*
|
||||
* Check the flags.
|
||||
*/
|
||||
--
|
||||
cgit v1.1
|
||||
|
|
@ -1,64 +0,0 @@
|
|||
From a1b9bc540f4af79bd23e01ec08429e0efa4d2f7b Mon Sep 17 00:00:00 2001
|
||||
From: Qidan He <i@flanker017.me>
|
||||
Date: Thu, 13 Oct 2016 16:27:46 -0700
|
||||
Subject: [PATCH] net: ping: Fix stack buffer overflow in ping_common_sendmsg()
|
||||
|
||||
In ping_common_sendmsg(), when len < icmph_len, memcpy_fromiovec()
|
||||
will access invalid memory because msg->msg_iov only has 1 element
|
||||
and memcpy_fromiovec() attempts to increment it. KASAN report:
|
||||
|
||||
BUG: KASAN: stack-out-of-bounds in memcpy_fromiovec+0x60/0x114 at addr ffffffc071077da0
|
||||
Read of size 8 by task trinity-c2/9623
|
||||
page:ffffffbe034b9a08 count:0 mapcount:0 mapping: (null) index:0x0
|
||||
flags: 0x0()
|
||||
page dumped because: kasan: bad access detected
|
||||
CPU: 0 PID: 9623 Comm: trinity-c2 Tainted: G BU 3.18.0-dirty #15
|
||||
Hardware name: Google Tegra210 Smaug Rev 1,3+ (DT)
|
||||
Call trace:
|
||||
[<ffffffc000209c98>] dump_backtrace+0x0/0x1ac arch/arm64/kernel/traps.c:90
|
||||
[<ffffffc000209e54>] show_stack+0x10/0x1c arch/arm64/kernel/traps.c:171
|
||||
[< inline >] __dump_stack lib/dump_stack.c:15
|
||||
[<ffffffc000f18dc4>] dump_stack+0x7c/0xd0 lib/dump_stack.c:50
|
||||
[< inline >] print_address_description mm/kasan/report.c:147
|
||||
[< inline >] kasan_report_error mm/kasan/report.c:236
|
||||
[<ffffffc000373dcc>] kasan_report+0x380/0x4b8 mm/kasan/report.c:259
|
||||
[< inline >] check_memory_region mm/kasan/kasan.c:264
|
||||
[<ffffffc00037352c>] __asan_load8+0x20/0x70 mm/kasan/kasan.c:507
|
||||
[<ffffffc0005b9624>] memcpy_fromiovec+0x5c/0x114 lib/iovec.c:15
|
||||
[< inline >] memcpy_from_msg include/linux/skbuff.h:2667
|
||||
[<ffffffc000ddeba0>] ping_common_sendmsg+0x50/0x108 net/ipv4/ping.c:674
|
||||
[<ffffffc000dded30>] ping_v4_sendmsg+0xd8/0x698 net/ipv4/ping.c:714
|
||||
[<ffffffc000dc91dc>] inet_sendmsg+0xe0/0x12c net/ipv4/af_inet.c:749
|
||||
[< inline >] __sock_sendmsg_nosec net/socket.c:624
|
||||
[< inline >] __sock_sendmsg net/socket.c:632
|
||||
[<ffffffc000cab61c>] sock_sendmsg+0x124/0x164 net/socket.c:643
|
||||
[< inline >] SYSC_sendto net/socket.c:1797
|
||||
[<ffffffc000cad270>] SyS_sendto+0x178/0x1d8 net/socket.c:1761
|
||||
Memory state around the buggy address:
|
||||
ffffffc071077c80: f3 f3 f3 f3 00 00 00 00 00 00 00 00 00 00 f1 f1
|
||||
ffffffc071077d00: f1 f1 04 f4 f4 f4 f2 f2 f2 f2 04 f4 f4 f4 f2 f2
|
||||
>ffffffc071077d80: f2 f2 00 00 f4 f4 f2 f2 f2 f2 00 00 00 00 00 00
|
||||
^
|
||||
ffffffc071077e00: 00 f4 f2 f2 f2 f2 00 00 00 00 00 00 00 00 00 00
|
||||
ffffffc071077e80: 00 00 00 00 00 00 f3 f3 f3 f3 00 00 00 00 00 00
|
||||
|
||||
Bug: 31349935
|
||||
Change-Id: Ib7385fc26dfe7e07e9bab42a10ff65a37cbaab54
|
||||
Signed-off-by: Siqi Lin <siqilin@google.com>
|
||||
---
|
||||
net/ipv4/ping.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/net/ipv4/ping.c b/net/ipv4/ping.c
|
||||
index f8c8f60ad7e25..aaa70dd666674 100644
|
||||
--- a/net/ipv4/ping.c
|
||||
+++ b/net/ipv4/ping.c
|
||||
@@ -651,7 +651,7 @@ int ping_common_sendmsg(int family, struct msghdr *msg, size_t len,
|
||||
void *user_icmph, size_t icmph_len) {
|
||||
u8 type, code;
|
||||
|
||||
- if (len > 0xFFFF)
|
||||
+ if (len > 0xFFFF || len < icmph_len)
|
||||
return -EMSGSIZE;
|
||||
|
||||
/*
|
Loading…
Add table
Add a link
Reference in a new issue