CVE-2026-7473

Summary

On affected platforms running Arista EOS where a tunnel decapsulation configuration—such as VXLAN (Virtual Extensible LAN), decap-groups, or a GRE (Generic Routing Encapsulation) tunnel interface—is present, the switch will incorrectly decapsulate and forward other unexpected tunneled packet with a destination IP matching its configured decapsulation IP. This occurs because the switch does not verify the tunnel protocol type, potentially leading to the unexpected processing of non-configured tunnel traffic.

This issue has been reported as being exploited in the wild.

Affected Software

VendorProductVersion RangeStatus
Arista NetworksEOS4.36.0affected
Arista NetworksEOS4.35.0 <= 4.35affected
Arista NetworksEOS4.34.0 <= 4.34affected
Arista NetworksEOS4.33.0 <= 4.33affected
Arista NetworksEOS4.32.0 <= 4.32affected
Arista NetworksEOS4.31.0 <= 4.31affected
Arista NetworksEOS* <= 4.30affected

Weaknesses

  • CWE-1023: CWE-1023: Incomplete Comparison with Missing Factors

Workarounds

There are two broad approaches to mitigate this issue - (1) applying ACLs on upstream devices or (2) applying ACLs on the devices where the unexpected decapsulation is happening. In both cases, the idea is to either selectively allow only legitimate tunnel traffic or to selectively block malicious tunnel traffic. For example, if a network is configured to forward VXLAN traffic, but GRE traffic is being unexpectedly forwarded, then ACLs can be used to either selectively allow just VXLAN traffic or selectively block GRE traffic. More details about using the ACL feature can be found in the  Arista User Manual https://www.arista.com/en/um-eos/eos-acls-and-route-maps#xx1150869 .

A note of caution, the following ACL-based mitigation recommendations assume that the tunnel IP is dedicated solely to receiving the configured tunnel protocol traffic. When adapting these rules for your environment, it is important to explicitly permit any additional protocol traffic—such as BGP or SSH—if that IP serves multiple functions. To maintain connectivity, ensure these permit statements are sequenced before any deny statements directed at the decapsulation IP.

The following configurations align with the recommendations outlined in the  Arista EOS Hardening Guide https://arista.my.site.com/AristaCommunity/s/article/arista-eos-hardening-guide#Comm_Kna_ka0Uw00000097VJIAY_71 . Approach 1 - Applying ACL on Upstream Switches

On upstream devices, applying ACLs to allow specific tunneled traffic is straightforward. ACLs can be applied that match on tunnel destination IP, the IP next protocol field, and (optionally) UDP destination port to selectively allow or block specific tunnel protocols.

Example ACLs for Arista EOS follows.

ACL to permit VXLANv4 Only

This IPv4 ACL matches on VXLAN packets as follows: (a) IP next protocol = UDP (17) (b) IP DIP = VXLAN VTEP IP (c) UDP destination port = VXLAN UDP Port (4789)

It allows VXLAN packets and drops all other packets to the VXLAN Decap IP.

ip access-list foo    counters per-entry    1 permit udp any host <vxlan-decap-ip> eq 4789    2 deny ip any host <decap-ip>    3 permit ip any any

 

ACL to permit GREv4 Only

This IPv4 ACL matches on GRE packets as follows: (a) IP next protocol = GRE (47) (b) IP DIP = GRE Tunnel Destination IP

It allows GRE packets and drops all other packets to the GRE Decap IP.

ip access-list foo    counters per-entry    1 permit gre any host <gre-decap-ip>    2 deny ip any host <gre-decap-ip>    3 permit any any

 

ACL to permit IP-in-IPv4 Only

This IPv4 ACL matches on IP-in-IPv4 packets as follows: (a) IP next protocol = IPv4 (4) or IPv6 (41) (b) IP DIP = IP-in-IP Decap IP

It allows IP-in-IPv4 packets and drops all other packets to the IP-in-IPv4 Decap IP.

ip access-list foo    counters per-entry    1 permit 4 any host <ipip-decap-ip>    2 permit 41 any host <ipip-decap-ip>    3 deny ip any host <ipip-decap-ip>    4 permit any any

 

ACL to Permit IP-in-IPv6 Only

This IPv6 ACL matches on IP-in-IPv6 packets as follows: (a) IP next protocol = IPv4 (4) or IPv6 (41) (b) IP DIP = IP-in-IP Decap IP

It allows IP-in-IPv6 packets and drops all other packets to the IP-in-IPv6 Decap IP.

ipv6 access-list foo    counters per-entry    1 permit 4 any host <ipip-decap-ip>    2 permit 41 any host <ipip-decap-ip>    3 deny ipv6 any host <ipip-decap-ip>    4 permit ipv6 any any

 

ACL to permit GUEv4 Only

This IPv4 ACL matches on GUE packets as follows: (a) IP next protocol = UDP (17) (b) IP DIP = GUE Decap IP (c) UDP destination port = UDP port configured per payload        (IP = Y or MPLS = Z)

It allows GUE packets and drops all other packets to the GUE Decap IP.

ip access-list foo    counters per-entry    1 permit udp any host <decap-ip> eq Y    2 permit udp any host <decap-ip> eq Z    3 deny ip any host <decap-ip>    4 permit ip any any

 

ACL to Permit GUEv6 Only

This IPv6 ACL matches on GUE packets as follows: (a) IP next protocol = UDP (17) (b) IP DIP = GUE Decap IP (c) UDP destination port = UDP port configured per payload        (IP = Y or MPLS = Z)

It allows GUE packets and drops all other packets to the GUE Decap IP.

ipv6 access-list foo    counters per-entry    1 permit udp any host <decap-ip> eq Y    2 permit udp any host <decap-ip> eq Z    3 deny ipv6 any host <decap-ip>    4 permit ipv6 any any Approach 2 - Applying ACL on Decapsulation Switches

Applying ACLs on the decapsulation device is more complicated. It requires the use of MAC ACLs on 7020R Series, 7280R/R2 Series, and 7500R/R2 Series systems and IP ACLs on 7280R3 Series, 7500R3 Series, and 7800R3 Series systems. In both cases, a TCAM profile update is also required. Note that TCAM profile update is a disruptive operation that could impact traffic forwarding. More information can be found in  User-defined TCAM Profiles https://www.arista.com/en/support/toi/eos-4-26-0f/14755-user-defined-tcam-profiles .

7020R Series, 7280R/R2 Series, and 7500R/R2 Series

Mitigation involves using MAC ACLs to allow specific expected protocol packets and block all other traffic to the configured decap IPs. The suggested MAC ACLs use User Defined Fields (UDFs) to match on specific fields in the packet headers. This requires a TCAM profile update to include the following UDF qualifiers:

  • For IPv4 tunnels, 2 16b and 1 32b UDF qualifiers need to be included.
  • For IPv6 tunnels, 2 16b and 4 32b UDF qualifiers need to be included.

However, in order to make room for the UDF qualifiers, other TCAM features/qualifiers must be removed due to hardware constraints. Following are some suggested TCAM profile changes to accommodate the required UDF qualifiers:

  • TCAM profile that includes the UDF qualifiers for IPv4 tunnels, but removes support for MPLS:

hardware tcam    profile test copy default       feature acl port mac          no key size limit           key field udf-16b-1 udf-16b-2 udf-32b-1       no feature mpls       no feature mpls pop ingress       no feature pbr mpls

 

 

  • TCAM profile that includes the UDF qualifiers for IPv4 tunnels, but removes support for VXLAN:

hardware tcam    profile test copy default       feature acl port mac          no key field src-mac          key field udf-16b-1 udf-16b-2 udf-32b-1

 

  

  • TCAM profile that includes the UDF qualifiers for IPv6 tunnels, but removes support for VXLAN and PBR:

hardware tcam    profile test1 copy default       feature acl port mac          no key size limit          no key field src-mac dst-mac          key field udf-16b-1 udf-16b-2 udf-32b-1 udf-32b-2 udf-32b-3 udf-32b-4       no feature tunnel vxlan       no feature tunnel vxlan routing       no feature pbr ip       no feature pbr ipv6

 

Please contact Arista TAC if further assistance is needed with TCAM profile construction. ACL to permit VXLAN v4 Decap only

This MAC ACL uses UDF to match on VXLAN packets as follows: (a) IP next protocol = UDP (0x11) (b) IP DIP = VXLAN VTEP IP (say 0xXXXXXXXX - converted in hex) (c) UDP destination port = VXLAN UDP Port (0x12b5)

It allows VXLAN packets and drops all other packets to the VXLAN Decap IP.

mac access-list payload alias ip-next-protocol-udp offset 2 pattern 0x00110000 mask 0xff00ffff

mac access-list payload alias ip-dip-decap-ip offset 4 pattern 0xXXXXXXXX mask 0x00000000      mac access-list payload alias udp-dport-vxlan offset 5 pattern 0x000012b5 mask 0xffff0000      mac access-list foo    counters per-entry    1 permit any any ip payload alias ip-next-protocol-udp alias ip-dip-decap-ip alias udp-dport-vxlan    2 deny any any ip payload alias ip-dip-decap-ip    3 permit any any

 

ACL to permit GREv4 Decap Only

This MAC ACL uses UDF to match on GRE packets as follows: (a) IP next protocol = GRE (0x2f) (b) IP DIP = GRE Decap IP (say 0xXXXXXXXX - converted in hex)

It allows GRE packets and drops all other packets to the GRE Decap IP.

mac access-list payload alias ip-next-protocol-gre offset 2 pattern 0x002f0000 mask 0xff00ffff

mac access-list payload alias ip-dip-decap-ip offset 4 pattern 0xXXXXXXXX mask 0x00000000

mac access-list foo    counters per-entry    1 permit any any ip payload alias ip-next-protocol-gre alias ip-dip-decap-ip    2 deny any any ip payload alias ip-dip-decap-ip    3 permit any any

 

If needed, the ACL can also be tweaked to match on specific GRE payloads as follows:

IPv4oGRE

ACL also matches on GRE next protocol = IPv4 (0x0800)

mac access-list payload alias gre-protocol-ipv4 offset 5 pattern 0x00000800 mask 0xffff0000

mac access-list foo    counters per-entry    1 permit any any ip payload alias ip-next-protocol-gre alias ip-dip-decap-ip alias gre-protocol-ipv4    2 deny any any ip payload alias ip-dip-decap-ip    3 permit any any

 

IPv6oGRE

ACL also matches on GRE next protocol = IPv6 (0x86dd)

mac access-list payload alias gre-protocol-ipv6 offset 5 pattern 0x000086dd mask 0xffff0000 mac access-list foo    counters per-entry    1 permit any any ip payload alias ip-next-protocol-gre alias ip-dip-decap-ip alias gre-protocol-ipv6    2 deny any any ip payload alias ip-dip-decap-ip    3 permit any any

 

MPLSoGRE

ACL also matches on GRE next protocol = MPLS (0x8847)

mac access-list payload alias gre-protocol-mpls offset 5 pattern 0x00008847 mask 0xffff0000

mac access-list foo    counters per-entry    1 permit any any ip payload alias ip-next-protocol-gre alias ip-dip-decap-ip alias gre-protocol-mpls    2 deny any any ip payload alias ip-dip-decap-ip    3 permit any any ACL to permit IP-in-IPv4 Decap Only

This MAC ACL uses UDF to match on IP-in-IP packets as follows: (a) IP next protocol = IPv4 (0x04) or IPv6 (0x29) (b) IP DIP = IP-in-IP Decap IP (say 0xXXXXXXXX - converted in hex)

It allows IP-in-ip packets and drops all other packets to the IP-in-IP Decap IP.

mac access-list payload alias ip-next-protocol-ipv4 offset 2 pattern 0x00040000 mask 0xff00ffff

mac access-list payload alias ip-next-protocol-ipv6 offset 2 pattern 0x00290000 mask 0xff00ffff

mac access-list payload alias ip-dip-decap-ip offset 4 pattern 0xXXXXXXXX mask 0x00000000 mac access-list foo    counters per-entry    1 permit any any ip payload alias ip-next-protocol-ipv4 alias ip-dip-decap-ip     2 permit any any ip payload alias ip-next-protocol-ipv6 alias ip-dip-decap-ip    3 deny any any ip payload alias ip-dip-decap-ip    4 permit any any

 

ACL to permit GUEv4 Decap Only

This MAC ACL uses UDF to match on GUE packets as follows: (a) IP next protocol = UDP (0x11) (b) IP DIP = GUE Decap IP (say 0xXXXXXXXX - converted in hex) (c) UDP destination port = UDP port configured per payload       (say UDP port for IP payload = 0xYYYY or UDP port for MPLS payload = 0xZZZZ - converted in hex)

It allows GUE packets and drops all other packets to the GUE Decap IP.

mac access-list payload alias ip-next-protocol-udp offset 2 pattern 0x00110000 mask 0xff00ffff

mac access-list payload alias ip-dip-decap-ip offset 4 pattern 0xXXXXXXXX mask 0x00000000

mac access-list payload alias udp-dport-gue-ip offset 5 pattern 0x0000YYYY mask 0xffff0000

mac access-list payload alias udp-dport-gue-mpls offset 5 pattern 0x0000ZZZZ mask 0xffff0000

mac access-list foo    1 permit any any ip payload alias ip-next-protocol-udp alias ip-dip-decap-ip alias udp-dport-gue-mpls    2 permit any any ip payload alias ip-next-protocol-udp alias ip-dip-decap-ip alias udp-dport-gue-ip    3 deny any any ip payload alias ip-dip-decap-ip    4 permit any any

 

ACL to permit GUEv6 Decap Only

This MAC ACL uses UDF to match on GUE packets as follows: (a) IP next protocol = UDP (0x11) (b) IPv6 DIP = GUE Decap IP (say 0xAAAAAAAABBBBBBBBCCCCCCCCDDDDDDDD - converted in hex) (c) UDP destination port = UDP port configured per payload       (say UDP port for IP payload = 0xYYYY or UDP port for MPLS payload = 0xZZZZ - converted in hex)

It allows GUE packets and drops all other packets to the GUE Decap IP.

mac access-list payload alias ipv6-next-protocol-udp offset 1 pattern 0x00001100 mask 0xffff00ff

mac access-list payload alias udp-dport-gue-ip offset 10 pattern 0x0000YYYY mask 0xffff0000

mac access-list payload alias udp-dport-gue-mpls offset 10 pattern 0x0000ZZZZ mask 0xffff0000

mac access-list payload alias ipv6-dip-decap-ip1 offset 6 pattern 0xAAAAAAAA mask 0

mac access-list payload alias ipv6-dip-decap-ip2 offset 7 pattern 0xBBBBBBBB mask 0

mac access-list payload alias ipv6-dip-decap-ip3 offset 8 pattern 0xCCCCCCCC mask 0

mac access-list payload alias ipv6-dip-decap-ip4 offset 9 pattern 0xDDDDDDDD mask 0

mac access-list foo    counters per-entry    1 permit any any ipv6 payload alias ipv6-next-protocol-udp alias ipv6-dip-decap-ip1 alias ipv6-dip-decap-ip2 alias ipv6-dip-decap-ip3 alias ipv6-dip-decap-ip4 alias udp-dport-gue-ip    2 permit any any ipv6 payload alias ipv6-next-protocol-udp alias ipv6-dip-decap-ip1 alias ipv6-dip-decap-ip2 alias ipv6-dip-decap-ip3 alias ipv6-dip-decap-ip4 alias udp-dport-gue-mpls    3 deny any any ipv6 payload alias ipv6-dip-decap-ip1 alias ipv6-dip-decap-ip2 alias ipv6-dip-decap-ip3 alias ipv6-dip-decap-ip4    4 permit any any ACL to permit IP-in-IPv6 Decap Only

The MAC ACL uses UDF to match on IP-in-IPv6 packets as follows: (a) IP next protocol = IPv4 (4) or IPv6 (41) (b) IPv6 DIP = IP-in-IP Decap IP (say 0xAAAAAAAABBBBBBBBCCCCCCCCDDDDDDDD - converted in hex)

It allows IP-in-ip packets and drops all other packets to the IP-in-IP Decap IP.

mac access-list payload alias ipv6-next-protocol-ipv4 offset 1 pattern 0x00000400 mask 0xffff00ff

mac access-list payload alias ipv6-next-protocol-ipv6 offset 1 pattern 0x00002900 mask 0xffff00ff

mac access-list payload alias ipv6-dip-decap-ip1 offset 6 pattern 0xAAAAAAAA mask 0

mac access-list payload alias ipv6-dip-decap-ip2 offset 7 pattern 0xBBBBBBBB mask 0

mac access-list payload alias ipv6-dip-decap-ip3 offset 8 pattern 0xCCCCCCCC mask 0

mac access-list payload alias ipv6-dip-decap-ip4 offset 9 pattern 0xDDDDDDDD mask 0

mac access-list foo    counters per-entry    1 permit any any ipv6 payload alias ipv6-next-protocol-ipv4 alias ipv6-dip-decap-ip1 alias ipv6-dip-decap-ip2 alias ipv6-dip-decap-ip3 alias ipv6-dip-decap-ip4    2 permit any any ipv6 payload alias ipv6-next-protocol-ipv6 alias ipv6-dip-decap-ip1 alias ipv6-dip-decap-ip2 alias ipv6-dip-decap-ip3 alias ipv6-dip-decap-ip4    3 deny any any ipv6 payload alias ipv6-dip-decap-ip1 alias ipv6-dip-decap-ip2 alias ipv6-dip-decap-ip3 alias ipv6-dip-decap-ip4    4 permit any any

 

7280R3 Series, 7500R3 Series, and 7800R3 Series

Mitigation involves using IPv6 PACLs to allow specific expected protocol packets and block all other traffic to the configured decap IPs. This requires the following TCAM profile update with the specified packet types:

hardware tcam    profile test       feature acl port ipv6          packet ipv6 ipv4 forwarding routed decap          packet ipv6 ipv6 forwarding routed decap          packet ipv6 gue ipv4 forwarding routed decap          packet ipv6 gue ipv6 forwarding routed decap          packet ipv6 gue mpls forwarding mpls decap

 

Note that introducing new packet types might also require specifying them under other features such as “acl vlan” or “qos ipv6”. Please reach out, if further assistance is needed with TCAM profile construction.

ACL to Permit GUEv6 Only

This IPv6 ACL matches on GUE packets as follows: (a) IP next protocol = UDP (0x11) (b) IP DIP = GUE Decap IP (c) UDP destination port = UDP port configured per payload       (IP = Y or MPLS = Z)

It allows GUE packets and drops all other packets to the GUE Decap IP.

ipv6 access-list foo    counters per-entry    1 permit udp any host <decap-ip> eq Y    2 permit udp any host <decap-ip> eq Z    3 deny ipv6 any host <decap-ip>    4 permit ipv6 any any

 

ACL to Permit IP-in-IPv6 Only

This IPv6 ACL matches on IP-in-IPv6 packets as follows: (a) IP next protocol = IPv4 (4) or IPv6 (41) (b) IP DIP = IP-in-IP Decap IP

It allows IP-in-IPv6 packets and drops all other packets to the IP-in-IPv6 Decap IP.

ipv6 access-list foo    counters per-entry    1 permit 4 any host <decap-ip>    2 permit 41 any host <decap-ip>    3 deny ipv6 any host <decap-ip>    4 permit ipv6 any any

ADP Enrichment

CISA ADP Vulnrichment

  • SSVC:
  • Exploitation: active
    • Automatable: yes
    • Technical Impact: total

Additional References

References