CVE-2021-47515

seg6: fix the iif in the IPv6 socket control block

State
Published
Severity
7.5 High
Published
May 24, 2024
Updated
Aug 5, 2026
Reserved
May 24, 2024

Read the record on cve.org

Description

In the Linux kernel, the following vulnerability has been resolved:

seg6: fix the iif in the IPv6 socket control block

When an IPv4 packet is received, the ip_rcv_core(...) sets the receiving interface index into the IPv4 socket control block (v5.16-rc4, net/ipv4/ip_input.c line 510):

IPCB(skb)->iif = skb->skb_iif;

If that IPv4 packet is meant to be encapsulated in an outer IPv6+SRH header, the seg6_do_srh_encap(...) performs the required encapsulation. In this case, the seg6_do_srh_encap function clears the IPv6 socket control block (v5.16-rc4 net/ipv6/seg6_iptunnel.c line 163):

memset(IP6CB(skb), 0, sizeof(*IP6CB(skb)));

The memset(...) was introduced in commit ef489749aae5 ("ipv6: sr: clear IP6CB(skb) on SRH ip4ip6 encapsulation") a long time ago (2019-01-29).

Since the IPv6 socket control block and the IPv4 socket control block share the same memory area (skb->cb), the receiving interface index info is lost (IP6CB(skb)->iif is set to zero).

As a side effect, that condition triggers a NULL pointer dereference if commit 0857d6f8c759 ("ipv6: When forwarding count rx stats on the orig netdev") is applied.

To fix that issue, we set the IP6CB(skb)->iif with the index of the receiving interface once again.

Scores

CVSSScoreVectorSource
3.17.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:HLinux

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • c630ec8bdadae9d557b1ceb9d6c06e149108a0d4 to before b16d412e5f79734033df04e97d7ea2f50a8e9fe3Affected
  • 2f704348c93ff8119e642dae6a72327f90b82810 to before 6431e71093f3da586a00c6d931481ffb0dc2db0eAffected
  • ef489749aae508e6f17886775c075f12ff919fb1 to before ef8804e47c0a44ae106ead1740408af5ea6c6ee9Affected
  • ef489749aae508e6f17886775c075f12ff919fb1 to before 666521b3852d2b2f52d570f9122b1e4b50d96831Affected
  • ef489749aae508e6f17886775c075f12ff919fb1 to before 98adb2bbfa407c9290bda299d4c6f7a1c4ebd5e1Affected
  • ef489749aae508e6f17886775c075f12ff919fb1 to before ae68d93354e5bf5191ee673982251864ea24dd5cAffected
  • b71b7e0280f47b4ac633fbfd153423814ea87810Affected
  • 4.14.98 to before 4.14.258Affected
  • 4.19.20 to before 4.19.221Affected
  • 4.20.7 to before 4.21Affected
LinuxLinux
  • 5.0Affected
  • before 5.0Not affected
  • 4.14.258 through 4.14.*Not affected
  • 4.19.221 through 4.19.*Not affected
  • 5.4.165 through 5.4.*Not affected
  • 5.10.85 through 5.10.*Not affected
  • 5.15.8 through 5.15.*Not affected
  • 5.16 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.