Логотип exploitDog
Консоль
Логотип exploitDog

exploitDog

redhat логотип

CVE-2026-53228

Опубликовано: 25 июн. 2026
Источник: redhat
CVSS3: 5.7
EPSS Низкий

Описание

In the Linux kernel, the following vulnerability has been resolved: ipv6: sit: reload inner IPv6 header after GSO offloads ipip6_tunnel_xmit() caches the inner IPv6 header pointer at function entry and continues using it after iptunnel_handle_offloads(). For GSO skbs, iptunnel_handle_offloads() calls skb_header_unclone(). When the skb header is cloned, skb_header_unclone() can call pskb_expand_head(), which may move the skb head. The pskb_expand_head() contract requires pointers into the skb header to be reloaded after the call. If the later skb_realloc_headroom() branch is not taken, SIT uses the stale iph6 pointer to read the inner hop limit and DS field. That can read from a freed skb head after the old head's remaining clone is released. Reload iph6 after the offload helper succeeds and before subsequent reads from the inner IPv6 header. Keep the existing reload after skb_realloc_headroom(), since that branch can also replace the skb.

A flaw was found in the Linux kernel's Simple Internet Transition (SIT) tunnel driver for IPv6. When processing network traffic with Generic Segmentation Offload (GSO) enabled, the driver may use a stale pointer to the inner IPv6 header after the socket buffer (skb) head has been reallocated. This can lead to reading from freed memory, potentially allowing an attacker to cause a denial of service or gain access to sensitive information.

Отчет

An IPv6 SIT tunnel transmit path can keep a stale inner IPv6 header pointer across GSO offload handling. iptunnel_handle_offloads can unclone the skb header and pskb_expand_head can move the skb head, so later reads from iph6 may access freed skb header memory. The directly supported primitive is a UAF read of header fields such as hop limit and DS field, with likely impact ranging from kernel crash or warning to limited exposure or corruption of packet metadata. For the CVSS the PR:N reflects the paranoid network forwarding scenario where an attacker does not need local code execution if traffic can be routed into a configured SIT tunnel. The issue is not a generic Internet exposed service by default and usually depends on a configured SIT tunnel, GSO traffic, and skb header cloning conditions. Impact is at least denial of service and in the worst still defensible interpretation may include limited confidentiality or integrity impact from stale kernel memory reads.

Меры по смягчению последствий

Mitigation for this issue is either not available or the currently available options don't meet the Red Hat Product Security criteria comprising ease of use and deployment, applicability to widespread installation base or stability.

Затронутые пакеты

ПлатформаПакетСостояниеРекомендацияРелиз
Red Hat Enterprise Linux 6kernelOut of support scope
Red Hat Enterprise Linux 7kernelAffected
Red Hat Enterprise Linux 7kernel-rtAffected
Red Hat Enterprise Linux 9kernel-rtAffected
Red Hat Enterprise Linux 10kernelFixedRHSA-2026:6477508.09.2026
Red Hat Enterprise Linux 8kernel-rtFixedRHSA-2026:6853217.09.2026
Red Hat Enterprise Linux 8kernelFixedRHSA-2026:6853117.09.2026
Red Hat Enterprise Linux 9kernelFixedRHSA-2026:9341201.11.2026
Red Hat Enterprise Linux 9kernelFixedRHSA-2026:9341201.11.2026

Показывать по

Дополнительная информация

Статус:

Moderate
Дефект:
CWE-416
https://bugzilla.redhat.com/show_bug.cgi?id=2492733kernel: ipv6: sit: reload inner IPv6 header after GSO offloads

EPSS

Процентиль: 48%
0.00576
Низкий

5.7 Medium

CVSS3

Связанные уязвимости

CVSS3: 9.8
ubuntu
5 месяцев назад

In the Linux kernel, the following vulnerability has been resolved: ipv6: sit: reload inner IPv6 header after GSO offloads ipip6_tunnel_xmit() caches the inner IPv6 header pointer at function entry and continues using it after iptunnel_handle_offloads(). For GSO skbs, iptunnel_handle_offloads() calls skb_header_unclone(). When the skb header is cloned, skb_header_unclone() can call pskb_expand_head(), which may move the skb head. The pskb_expand_head() contract requires pointers into the skb header to be reloaded after the call. If the later skb_realloc_headroom() branch is not taken, SIT uses the stale iph6 pointer to read the inner hop limit and DS field. That can read from a freed skb head after the old head's remaining clone is released. Reload iph6 after the offload helper succeeds and before subsequent reads from the inner IPv6 header. Keep the existing reload after skb_realloc_headroom(), since that branch can also replace the skb.

CVSS3: 9.8
nvd
5 месяцев назад

In the Linux kernel, the following vulnerability has been resolved: ipv6: sit: reload inner IPv6 header after GSO offloads ipip6_tunnel_xmit() caches the inner IPv6 header pointer at function entry and continues using it after iptunnel_handle_offloads(). For GSO skbs, iptunnel_handle_offloads() calls skb_header_unclone(). When the skb header is cloned, skb_header_unclone() can call pskb_expand_head(), which may move the skb head. The pskb_expand_head() contract requires pointers into the skb header to be reloaded after the call. If the later skb_realloc_headroom() branch is not taken, SIT uses the stale iph6 pointer to read the inner hop limit and DS field. That can read from a freed skb head after the old head's remaining clone is released. Reload iph6 after the offload helper succeeds and before subsequent reads from the inner IPv6 header. Keep the existing reload after skb_realloc_headroom(), since that branch can also replace the skb.

CVSS3: 7
msrc
4 месяца назад

ipv6: sit: reload inner IPv6 header after GSO offloads

CVSS3: 9.8
debian
5 месяцев назад

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

CVSS3: 9.8
github
5 месяцев назад

In the Linux kernel, the following vulnerability has been resolved: ipv6: sit: reload inner IPv6 header after GSO offloads ipip6_tunnel_xmit() caches the inner IPv6 header pointer at function entry and continues using it after iptunnel_handle_offloads(). For GSO skbs, iptunnel_handle_offloads() calls skb_header_unclone(). When the skb header is cloned, skb_header_unclone() can call pskb_expand_head(), which may move the skb head. The pskb_expand_head() contract requires pointers into the skb header to be reloaded after the call. If the later skb_realloc_headroom() branch is not taken, SIT uses the stale iph6 pointer to read the inner hop limit and DS field. That can read from a freed skb head after the old head's remaining clone is released. Reload iph6 after the offload helper succeeds and before subsequent reads from the inner IPv6 header. Keep the existing reload after skb_realloc_headroom(), since that branch can also replace the skb.

EPSS

Процентиль: 48%
0.00576
Низкий

5.7 Medium

CVSS3