1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
From 24036ea507862c7b7898b68289c8130f85599c10 Mon Sep 17 00:00:00 2001
From: Simon Kelley <simon@thekelleys.org.uk>
Date: Mon, 25 Sep 2017 18:47:15 +0100
Subject: [PATCH] Security fix, CVE-2017-14492, DHCPv6 RA heap overflow.
Fix heap overflow in IPv6 router advertisement code.
This is a potentially serious security hole, as a
crafted RA request can overflow a buffer and crash or
control dnsmasq. Attacker must be on the local network.
CVE: CVE-2017-14492
Upstream-Status: Backport
Signed-off-by: Sona Sarmadi <sona.sarmadi@enea.com>
---
CHANGELOG | 10 +++++++++-
src/radv.c | 3 +++
2 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG b/CHANGELOG
index a7c2f35..df6c157 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -35,7 +35,15 @@ version 2.78
and Kevin Hamacher of the Google Security Team for
finding this.
-
+ Fix heap overflow in IPv6 router advertisement code.
+ This is a potentially serious security hole, as a
+ crafted RA request can overflow a buffer and crash or
+ control dnsmasq. Attacker must be on the local network.
+ CVE-2017-14492 applies.
+ Credit to Felix Wilhelm, Fermin J. Serna, Gabriel Campana
+ and Kevin Hamacher of the Google Security Team for
+ finding this.
+
version 2.77
Generate an error when configured with a CNAME loop,
diff --git a/src/radv.c b/src/radv.c
index 1032189..9b7e52c 100644
--- a/src/radv.c
+++ b/src/radv.c
@@ -198,6 +198,9 @@ void icmp6_packet(time_t now)
/* look for link-layer address option for logging */
if (sz >= 16 && packet[8] == ICMP6_OPT_SOURCE_MAC && (packet[9] * 8) + 8 <= sz)
{
+ if ((packet[9] * 8 - 2) * 3 - 1 >= MAXDNAME) {
+ return;
+ }
print_mac(daemon->namebuff, &packet[10], (packet[9] * 8) - 2);
mac = daemon->namebuff;
}
--
1.7.10.4
|