{
    "dataType": "CVE_RECORD",
    "dataVersion": "5.2",
    "cveMetadata": {
        "cveId": "CVE-2024-39503",
        "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "state": "PUBLISHED",
        "assignerShortName": "Linux",
        "dateReserved": "2024-06-25T14:23:23.752Z",
        "datePublished": "2024-07-12T12:20:36.299Z",
        "dateUpdated": "2026-08-05T11:33:49.210Z"
    },
    "containers": {
        "cna": {
            "providerMetadata": {
                "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
                "shortName": "Linux",
                "dateUpdated": "2026-08-05T11:33:49.210Z"
            },
            "descriptions": [
                {
                    "lang": "en",
                    "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nnetfilter: ipset: Fix race between namespace cleanup and gc in the list:set type\n\nLion Ackermann reported that there is a race condition between namespace cleanup\nin ipset and the garbage collection of the list:set type. The namespace\ncleanup can destroy the list:set type of sets while the gc of the set type is\nwaiting to run in rcu cleanup. The latter uses data from the destroyed set which\nthus leads use after free. The patch contains the following parts:\n\n- When destroying all sets, first remove the garbage collectors, then wait\n  if needed and then destroy the sets.\n- Fix the badly ordered \"wait then remove gc\" for the destroy a single set\n  case.\n- Fix the missing rcu locking in the list:set type in the userspace test\n  case.\n- Use proper RCU list handlings in the list:set type.\n\nThe patch depends on c1193d9bbbd3 (netfilter: ipset: Add list flush to cancel_gc)."
                }
            ],
            "metrics": [
                {
                    "cvssV3_1": {
                        "version": "3.1",
                        "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
                        "baseScore": 7.8,
                        "baseSeverity": "HIGH"
                    },
                    "scenarios": [
                        {
                            "lang": "en",
                            "value": "AV:L - The vulnerable paths are the ipset nfnetlink command handler (`ip_set_destroy()` via NFNL_SUBSYS_IPSET) and network-namespace teardown (`ip_set_net_exit()`), both of which require local access via a netlink socket or namespace lifecycle. No remote peer data reaches the freed object.\nAC:L - `cancel_gc()` queues `call_rcu(&e->rcu, __list_set_del_rcu)` and `set` is `kfree()`d immediately afterwards, so the callback is guaranteed to dereference freed memory — the attacker owns both sides (creating the set and issuing destroy/exiting the netns) and can repeat it arbitrarily to win the reclaim. CONFIG_IP_SET is a standard distro module, so no rare configuration is needed.\nPR:L - `nfnetlink_rcv()` checks `netlink_net_capable(skb, CAP_NET_ADMIN)`, which resolves to `ns_capable(net->user_ns, CAP_NET_ADMIN)`, so any unprivileged user gets it with `unshare -Urn`; ipset state is fully per-netns, and namespace exit is itself an unprivileged-user-controlled event.\nUI:N - The attacker performs every step alone — create the list:set, add a member, then destroy the set or exit the namespace. No victim action is involved.\nS:U - The use-after-free corrupts kernel heap memory within the same kernel security authority; there is no VM, IOMMU, or sandbox boundary crossed.\nC:H - After `struct ip_set` (generic kmalloc-192) is reclaimed and sprayed, `ip_set_ext_destroy()` reads `set->extensions` and `set->offset[IPSET_EXT_ID_COMMENT]` from attacker data, and `ip_set_comment_free()` performs `strlen(c->str)` on the resulting pointer — an arbitrary kernel read usable for full memory disclosure and KASLR defeat.\nI:H - The same chain yields `kfree_rcu()` on an attacker-chosen address (arbitrary free), an `rcu_assign_pointer(comment->c, NULL)` write, and an arithmetic write into the freed object, giving the write primitives needed for control-flow hijacking and privilege escalation; a stale `module_put()` can additionally leave module text freed under a pending callback.\nA:H - Even unweaponized, the guaranteed use-after-free on `struct ip_set` and the resulting wild `kfree()` cause slab corruption, oops, or kernel panic, and the trigger can be repeated in a loop by any local user."
                        }
                    ]
                }
            ],
            "affected": [
                {
                    "product": "Linux",
                    "vendor": "Linux",
                    "defaultStatus": "unaffected",
                    "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                    "programFiles": [
                        "net/netfilter/ipset/ip_set_core.c",
                        "net/netfilter/ipset/ip_set_list_set.c"
                    ],
                    "versions": [
                        {
                            "version": "c7f2733e5011bfd136f1ca93497394d43aa76225",
                            "lessThan": "c0761d1f1ce1d5b85b5e82bbb714df12de1aa8c3",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "a24d5f2ac8ef702a58e55ec276aad29b4bd97e05",
                            "lessThan": "93b53c202b51a69e42ca57f5a183f7e008e19f83",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "c2dc077d8f722a1c73a24e674f925602ee5ece49",
                            "lessThan": "0f1bb77c6d837c9513943bc7c08f04c5cc5c6568",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "653bc5e6d9995d7d5f497c665b321875a626161c",
                            "lessThan": "390b353d1a1da3e9c6c0fd14fe650d69063c95d6",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "b93a6756a01f4fd2f329a39216f9824c56a66397",
                            "lessThan": "2ba35b37f780c6410bb4bba9c3072596d8576702",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "97f7cf1cd80eeed3b7c808b7c12463295c751001",
                            "lessThan": "90ae20d47de602198eb69e6cd7a3db3420abfc08",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "97f7cf1cd80eeed3b7c808b7c12463295c751001",
                            "lessThan": "4e7aaa6b82d63e8ddcbfb56b4fd3d014ca586f10",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "970709a67696b100a57b33af1a3d75fc34b747eb",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "5.4.269",
                            "lessThan": "5.4.279",
                            "status": "affected",
                            "versionType": "semver"
                        },
                        {
                            "version": "5.10.210",
                            "lessThan": "5.10.221",
                            "status": "affected",
                            "versionType": "semver"
                        },
                        {
                            "version": "5.15.149",
                            "lessThan": "5.15.162",
                            "status": "affected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.1.79",
                            "lessThan": "6.1.95",
                            "status": "affected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.6.18",
                            "lessThan": "6.6.35",
                            "status": "affected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.7.6",
                            "lessThan": "6.8",
                            "status": "affected",
                            "versionType": "semver"
                        }
                    ]
                },
                {
                    "product": "Linux",
                    "vendor": "Linux",
                    "defaultStatus": "affected",
                    "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                    "programFiles": [
                        "net/netfilter/ipset/ip_set_core.c",
                        "net/netfilter/ipset/ip_set_list_set.c"
                    ],
                    "versions": [
                        {
                            "version": "6.8",
                            "status": "affected"
                        },
                        {
                            "version": "0",
                            "lessThan": "6.8",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "5.4.279",
                            "lessThanOrEqual": "5.4.*",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "5.10.221",
                            "lessThanOrEqual": "5.10.*",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "5.15.162",
                            "lessThanOrEqual": "5.15.*",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.1.95",
                            "lessThanOrEqual": "6.1.*",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.6.35",
                            "lessThanOrEqual": "6.6.*",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.9.6",
                            "lessThanOrEqual": "6.9.*",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.10",
                            "lessThanOrEqual": "*",
                            "status": "unaffected",
                            "versionType": "original_commit_for_fix"
                        }
                    ]
                }
            ],
            "cpeApplicability": [
                {
                    "nodes": [
                        {
                            "operator": "OR",
                            "negate": false,
                            "cpeMatch": [
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "5.4.269",
                                    "versionEndExcluding": "5.4.279"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "5.10.210",
                                    "versionEndExcluding": "5.10.221"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "5.15.149",
                                    "versionEndExcluding": "5.15.162"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "6.1.79",
                                    "versionEndExcluding": "6.1.95"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "6.6.18",
                                    "versionEndExcluding": "6.6.35"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "6.8",
                                    "versionEndExcluding": "6.9.6"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "6.8",
                                    "versionEndExcluding": "6.10"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "6.7.6"
                                }
                            ]
                        }
                    ]
                }
            ],
            "references": [
                {
                    "url": "https://git.kernel.org/stable/c/c0761d1f1ce1d5b85b5e82bbb714df12de1aa8c3"
                },
                {
                    "url": "https://git.kernel.org/stable/c/93b53c202b51a69e42ca57f5a183f7e008e19f83"
                },
                {
                    "url": "https://git.kernel.org/stable/c/0f1bb77c6d837c9513943bc7c08f04c5cc5c6568"
                },
                {
                    "url": "https://git.kernel.org/stable/c/390b353d1a1da3e9c6c0fd14fe650d69063c95d6"
                },
                {
                    "url": "https://git.kernel.org/stable/c/2ba35b37f780c6410bb4bba9c3072596d8576702"
                },
                {
                    "url": "https://git.kernel.org/stable/c/90ae20d47de602198eb69e6cd7a3db3420abfc08"
                },
                {
                    "url": "https://git.kernel.org/stable/c/4e7aaa6b82d63e8ddcbfb56b4fd3d014ca586f10"
                }
            ],
            "title": "netfilter: ipset: Fix race between namespace cleanup and gc in the list:set type",
            "x_generator": {
                "engine": "bippy-1.2.0"
            }
        },
        "adp": [
            {
                "title": "CVE Program Container",
                "references": [
                    {
                        "url": "https://git.kernel.org/stable/c/c0761d1f1ce1d5b85b5e82bbb714df12de1aa8c3",
                        "tags": [
                            "x_transferred"
                        ]
                    },
                    {
                        "url": "https://git.kernel.org/stable/c/93b53c202b51a69e42ca57f5a183f7e008e19f83",
                        "tags": [
                            "x_transferred"
                        ]
                    },
                    {
                        "url": "https://git.kernel.org/stable/c/0f1bb77c6d837c9513943bc7c08f04c5cc5c6568",
                        "tags": [
                            "x_transferred"
                        ]
                    },
                    {
                        "url": "https://git.kernel.org/stable/c/390b353d1a1da3e9c6c0fd14fe650d69063c95d6",
                        "tags": [
                            "x_transferred"
                        ]
                    },
                    {
                        "url": "https://git.kernel.org/stable/c/2ba35b37f780c6410bb4bba9c3072596d8576702",
                        "tags": [
                            "x_transferred"
                        ]
                    },
                    {
                        "url": "https://git.kernel.org/stable/c/90ae20d47de602198eb69e6cd7a3db3420abfc08",
                        "tags": [
                            "x_transferred"
                        ]
                    },
                    {
                        "url": "https://git.kernel.org/stable/c/4e7aaa6b82d63e8ddcbfb56b4fd3d014ca586f10",
                        "tags": [
                            "x_transferred"
                        ]
                    },
                    {
                        "url": "https://lists.debian.org/debian-lts-announce/2025/01/msg00001.html"
                    }
                ],
                "providerMetadata": {
                    "orgId": "af854a3a-2127-422b-91ae-364da2661108",
                    "shortName": "CVE",
                    "dateUpdated": "2025-11-03T21:56:23.434Z"
                }
            },
            {
                "metrics": [
                    {
                        "other": {
                            "type": "ssvc",
                            "content": {
                                "id": "CVE-2024-39503",
                                "role": "CISA Coordinator",
                                "options": [
                                    {
                                        "Exploitation": "none"
                                    },
                                    {
                                        "Automatable": "no"
                                    },
                                    {
                                        "Technical Impact": "partial"
                                    }
                                ],
                                "version": "2.0.3",
                                "timestamp": "2024-09-10T17:07:04.128981Z"
                            }
                        }
                    }
                ],
                "title": "CISA ADP Vulnrichment",
                "providerMetadata": {
                    "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
                    "shortName": "CISA-ADP",
                    "dateUpdated": "2024-09-11T17:34:40.232Z"
                }
            },
            {
                "x_adpType": "supplier",
                "providerMetadata": {
                    "orgId": "0b142b55-0307-4c5a-b3c9-f314f3fb7c5e",
                    "shortName": "siemens-SADP",
                    "dateUpdated": "2026-05-12T11:55:36.367Z"
                },
                "affected": [
                    {
                        "vendor": "Siemens",
                        "product": "RUGGEDCOM RST2428P",
                        "versions": [
                            {
                                "status": "affected",
                                "version": "0",
                                "lessThan": "V3.1",
                                "versionType": "custom"
                            }
                        ],
                        "defaultStatus": "unknown"
                    },
                    {
                        "vendor": "Siemens",
                        "product": "RUGGEDCOM RST2428P",
                        "versions": [
                            {
                                "status": "unaffected",
                                "version": "0",
                                "lessThan": "*",
                                "versionType": "custom"
                            }
                        ],
                        "defaultStatus": "unknown"
                    },
                    {
                        "vendor": "Siemens",
                        "product": "SCALANCE XC-300/XR-300/XC-400/XR-500WG/XR-500 family",
                        "versions": [
                            {
                                "status": "unaffected",
                                "version": "0",
                                "lessThan": "*",
                                "versionType": "custom"
                            }
                        ],
                        "defaultStatus": "unknown"
                    },
                    {
                        "vendor": "Siemens",
                        "product": "SCALANCE XC-300/XR-300/XC-400/XR-500WG/XR-500 family",
                        "versions": [
                            {
                                "status": "unaffected",
                                "version": "0",
                                "lessThan": "*",
                                "versionType": "custom"
                            }
                        ],
                        "defaultStatus": "unknown"
                    },
                    {
                        "vendor": "Siemens",
                        "product": "SCALANCE XCM-/XRM-/XCH-/XRH-300 family",
                        "versions": [
                            {
                                "status": "affected",
                                "version": "0",
                                "lessThan": "V3.1",
                                "versionType": "custom"
                            }
                        ],
                        "defaultStatus": "unknown"
                    },
                    {
                        "vendor": "Siemens",
                        "product": "SCALANCE XCM-/XRM-/XCH-/XRH-300 family",
                        "versions": [
                            {
                                "status": "unaffected",
                                "version": "0",
                                "lessThan": "*",
                                "versionType": "custom"
                            }
                        ],
                        "defaultStatus": "unknown"
                    },
                    {
                        "vendor": "Siemens",
                        "product": "SIMATIC S7-1500 TM MFP - GNU/Linux subsystem",
                        "versions": [
                            {
                                "status": "affected",
                                "version": "0",
                                "lessThan": "*",
                                "versionType": "custom"
                            }
                        ],
                        "defaultStatus": "unknown"
                    }
                ],
                "references": [
                    {
                        "url": "https://cert-portal.siemens.com/productcert/html/ssa-265688.html"
                    },
                    {
                        "url": "https://cert-portal.siemens.com/productcert/html/ssa-613116.html"
                    },
                    {
                        "url": "https://cert-portal.siemens.com/productcert/html/ssa-355557.html"
                    }
                ]
            }
        ]
    }
}