Skip to content

Commit 6fd9909

Browse files
Spindeldavem330
authored andcommitted
ipv6: Don't reduce hop limit for an interface
A local route may have a lower hop_limit set than global routes do. RFC 3756, Section 4.2.7, "Parameter Spoofing" > 1. The attacker includes a Current Hop Limit of one or another small > number which the attacker knows will cause legitimate packets to > be dropped before they reach their destination. > As an example, one possible approach to mitigate this threat is to > ignore very small hop limits. The nodes could implement a > configurable minimum hop limit, and ignore attempts to set it below > said limit. Signed-off-by: D.S. Ljungmark <[email protected]> Acked-by: Hannes Frederic Sowa <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 1452db7 commit 6fd9909

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

net/ipv6/ndisc.c

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1218,7 +1218,14 @@ static void ndisc_router_discovery(struct sk_buff *skb)
12181218
if (rt)
12191219
rt6_set_expires(rt, jiffies + (HZ * lifetime));
12201220
if (ra_msg->icmph.icmp6_hop_limit) {
1221-
in6_dev->cnf.hop_limit = ra_msg->icmph.icmp6_hop_limit;
1221+
/* Only set hop_limit on the interface if it is higher than
1222+
* the current hop_limit.
1223+
*/
1224+
if (in6_dev->cnf.hop_limit < ra_msg->icmph.icmp6_hop_limit) {
1225+
in6_dev->cnf.hop_limit = ra_msg->icmph.icmp6_hop_limit;
1226+
} else {
1227+
ND_PRINTK(2, warn, "RA: Got route advertisement with lower hop_limit than current\n");
1228+
}
12221229
if (rt)
12231230
dst_metric_set(&rt->dst, RTAX_HOPLIMIT,
12241231
ra_msg->icmph.icmp6_hop_limit);

0 commit comments

Comments
 (0)