← All Advisories

CVE-2026-52943

Last refreshed2026-10-06

Status: UPDATED  |  Advisory ID: CVE-2026-52943

Key Details

CVECVE-2026-52943
CVSS Score / Version7.8 (High) / CVSS v3.1
Updated2026-09-08
CVSS VectorCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CVSS Proseattack vector is local; attack complexity is low; privileges required is low; user interaction is none; scope is unchanged; confidentiality impact is high; integrity impact is high; availability impact is high.
Affected productsSiemens SIMATIC S7-1500 CPU 1518-4 PN/DP MFP, Siemens SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP, and Siemens SIPLUS S7-1500 CPU 1518-4 PN/DP MFP
Classified asCWE-416 (Use After Free)

Affected Products, Subsystems & Sectors

VendorProductAffected VersionsPatch Status
SiemensSIMATIC S7-1500 CPU 1518-4 PN/DP MFP
SiemensSIMATIC S7-1500 CPU 1518F-4 PN/DP MFP
SiemensSIPLUS S7-1500 CPU 1518-4 PN/DP MFP
SubsystemsGeneral OT
SectorsMultiple

What to Know

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

net: skbuff: fix missing zerocopy reference in pskb_carve helpers

pskb_carve_inside_header() and pskb_carve_inside_nonlinear() both copy

the old skb_shared_info header into a new buffer via memcpy(), which

includes the destructor_arg pointer (uarg) for MSG_ZEROCOPY skbs.

Neither function calls net_zcopy_get() for the new shinfo, creating an

unaccounted holder: every skb_shared_info with destructor_arg set will

call skb_zcopy_clear() once when freed, but the corresponding

net_zcopy_get() was never called for the new copy. Repeated calls

drive uarg->refcnt to zero prematurely, freeing ubuf_info_msgzc while

TX skbs still hold live destructor_arg pointers.

KASAN reports use-after-free on a freed ubuf_info_msgzc:

BUG: KASAN: slab-use-after-free in skb_release_data+0x77b/0x810

Read of size 8 at addr ffff88801574d3e8 by task poc/220

Call Trace:

skb_release_data+0x77b/0x810

kfree_skb_list_reason+0x13e/0x610

skb_release_data+0x4cd/0x810

sk_skb_reason_drop+0xf3/0x340

skb_queue_purge_reason+0x282/0x440

rds_tcp_inc_free+0x1e/0x30

rds_recvmsg+0x354/0x1780

__sys_recvmsg+0xdf/0x180

Allocated by task 219:

msg_zerocopy_realloc+0x157/0x7b0

tcp_sendmsg_locked+0x2892/0x3ba0

Freed by task 219:

ip_recv_error+0x74a/0xb10

tcp_recvmsg+0x475/0x530

The skb consuming the late access still referenced the same uarg via

shinfo->destructor_arg copied by pskb_carve_inside_nonlinear() without

a refcount bump. This has been verified to be reliably exploitable: a

working proof-of-concept achieves full root privilege escalation from

an unprivileged local user on a default kernel configuration.

The fix follows the pattern of pskb_expand_head() which has the same

memcpy/cloned structure. For pskb_carve_inside_header(), net_zcopy_get()

is placed after skb_orphan_frags() succeeds, so the orphan error path

needs no cleanup. For pskb_carve_inside_nonlinear(), net_zcopy_get() is

placed after all failure points and just before skb_release_data(), so

no error path needs cleanup at all -- matching pskb_expand_head() more

closely and avoiding the need for a balancing net_zcopy_put(). (NVD)

What to Do

Monitor Siemens's web page for any future patch releases.

References

SourceReference
NVDhttps://nvd.nist.gov/vuln/detail/CVE-2026-52943
CVEhttps://www.cve.org/CVERecord?id=CVE-2026-52943