Cisco's ICMPv6 Router Advertisement Guard feature bypass

Credit: Marc Heuse
Risk: Medium
Local: No
Remote: Yes

CVSS Base Score: 5/10
Impact Subscore: 2.9/10
Exploitability Subscore: 10/10
Exploit range: Remote
Attack complexity: Low
Authentication: No required
Confidentiality impact: None
Integrity impact: Partial
Availability impact: None

To bypass the Router Advertisement Guarding feature in the (very few) Cisco switches (and images) that support it: Attack: ======= Make the evil Router Advertisement fragmented and put the ICMPv6 into the second fragment, eg. by putting a very large Destination extension header before the ICMPv6 part. So the packets look like: Fragment 1: IPv6 Header Fragmentation Header Destination Header (~1400 bytes) Fragment 2: IPv6 Header Fragmentation Header Destination Header (continued with some bytes) ICMPv6 with RA Workaround: =========== To prevent this attack, put the following IPv6 ACL on all ports: deny ip any any undetermined-transport This will drop all packets where the switch is not able to identify the IPv6 transport type like in this attack. Note that this might drop some unusual valid traffic too. Workaround Bypass: ================== Craft the packets in a way so that the first fragment has an ICMPv6 echo request and the second fragment overwrites the first fragment with the ICMPv6 router advertisement. Fragment 1: IPv6 Header Fragmentation Header Destination Header (8 bytes) ICMPv6 with Echo Request Fragment 2: IPv6 Header Fragmentation Header with offset == 1 (equals position of 8th byte == start of Echo Request in first fragment) ICMPv6 with RA Note that the handling of overlapping fragments differs between platforms, some take the first fragment received, others the latest, so send the packets accordingly to your target. Hackers win again. Sorry Cisco. Have fun with IPv6! Greets, Marc P.S. Cisco is informed, they "accept the risk" ... P.P.S. thc-ipv6 v1.6 was released 10 days ago :-) -- Marc Heuse

Vote for this issue:


Thanks for you vote!


Thanks for you comment!
Your message is in quarantine 48 hours.

Comment it here.

(*) - required fields.  
{{ x.nick }} | Date: {{ x.ux * 1000 | date:'yyyy-MM-dd' }} {{ x.ux * 1000 | date:'HH:mm' }} CET+1
{{ x.comment }}

Copyright 2023,


Back to Top