{
    "dataType": "CVE_RECORD",
    "dataVersion": "5.2",
    "cveMetadata": {
        "cveId": "CVE-2024-43892",
        "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "state": "PUBLISHED",
        "assignerShortName": "Linux",
        "dateReserved": "2024-08-17T09:11:59.290Z",
        "datePublished": "2024-08-26T10:10:46.612Z",
        "dateUpdated": "2026-08-05T11:37:02.011Z"
    },
    "containers": {
        "cna": {
            "providerMetadata": {
                "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
                "shortName": "Linux",
                "dateUpdated": "2026-08-05T11:37:02.011Z"
            },
            "descriptions": [
                {
                    "lang": "en",
                    "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nmemcg: protect concurrent access to mem_cgroup_idr\n\nCommit 73f576c04b94 (\"mm: memcontrol: fix cgroup creation failure after\nmany small jobs\") decoupled the memcg IDs from the CSS ID space to fix the\ncgroup creation failures.  It introduced IDR to maintain the memcg ID\nspace.  The IDR depends on external synchronization mechanisms for\nmodifications.  For the mem_cgroup_idr, the idr_alloc() and idr_replace()\nhappen within css callback and thus are protected through cgroup_mutex\nfrom concurrent modifications.  However idr_remove() for mem_cgroup_idr\nwas not protected against concurrency and can be run concurrently for\ndifferent memcgs when they hit their refcnt to zero.  Fix that.\n\nWe have been seeing list_lru based kernel crashes at a low frequency in\nour fleet for a long time.  These crashes were in different part of\nlist_lru code including list_lru_add(), list_lru_del() and reparenting\ncode.  Upon further inspection, it looked like for a given object (dentry\nand inode), the super_block's list_lru didn't have list_lru_one for the\nmemcg of that object.  The initial suspicions were either the object is\nnot allocated through kmem_cache_alloc_lru() or somehow\nmemcg_list_lru_alloc() failed to allocate list_lru_one() for a memcg but\nreturned success.  No evidence were found for these cases.\n\nLooking more deeply, we started seeing situations where valid memcg's id\nis not present in mem_cgroup_idr and in some cases multiple valid memcgs\nhave same id and mem_cgroup_idr is pointing to one of them.  So, the most\nreasonable explanation is that these situations can happen due to race\nbetween multiple idr_remove() calls or race between\nidr_alloc()/idr_replace() and idr_remove().  These races are causing\nmultiple memcgs to acquire the same ID and then offlining of one of them\nwould cleanup list_lrus on the system for all of them.  Later access from\nother memcgs to the list_lru cause crashes due to missing list_lru_one."
                }
            ],
            "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 race is driven through local syscalls — cgroupfs mkdir/rmdir to force idr_alloc()/idr_replace(), plus memory allocation and swap-entry frees (munmap/exit/madvise) to force the unlocked idr_remove(). No network vector reaches mem_cgroup_idr.\nAC:L - The attacker controls both sides of the race and can repeat it arbitrarily: fan out swap-entry frees for many rmdir'd, swap-pinned memcgs across all CPUs while concurrently creating cgroups, so both racers are attacker-scheduled rather than depending on incidental system state.\nPR:L - Only an unprivileged local account is needed — cgroup creation/destruction is available via systemd-delegated user@$UID.service subtrees or unprivileged user namespaces (cgroup2 has FS_USERNS_MOUNT), and the swap-free side requires no privilege at all.\nUI:N - The attacker's own processes create the cgroups, generate the swap pressure, and free the swap entries; no victim action is involved.\nS:U - The corrupted IDR, radix-tree nodes, and list_lru structures all live in the kernel's own security authority; there is no VM, IOMMU, or hypervisor boundary crossed.\nC:H - Unsynchronized radix-tree mutation yields double-freed/reused radix_tree_node objects and stale IDR entries, so mem_cgroup_from_id() can hand out a freed or foreign struct mem_cgroup — a use-after-free read primitive, plus cross-cgroup leakage of workingset/swap accounting state.\nI:H - The race produces a double free and write-after-free on slab objects, and duplicate IDs cause a live memcg's list_lru_memcg to be freed while dentry/inode entries remain linked, giving list_add/list_del writes through freed memory — a heap-corruption write primitive suitable for privilege escalation.\nA:H - The commit documents recurring production kernel crashes in list_lru_add(), list_lru_del(), and the reparenting code; list_lru_from_memcg_idx() returning NULL is dereferenced unchecked while holding nlru->lock, causing an oops that can be triggered repeatedly."
                        }
                    ]
                }
            ],
            "affected": [
                {
                    "product": "Linux",
                    "vendor": "Linux",
                    "defaultStatus": "unaffected",
                    "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                    "programFiles": [
                        "mm/memcontrol.c"
                    ],
                    "versions": [
                        {
                            "version": "73f576c04b9410ed19660f74f97521bee6e1c546",
                            "lessThan": "912736a0435ef40e6a4ae78197ccb5553cb80b05",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "73f576c04b9410ed19660f74f97521bee6e1c546",
                            "lessThan": "e6cc9ff2ac0b5df9f25eb790934c3104f6710278",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "73f576c04b9410ed19660f74f97521bee6e1c546",
                            "lessThan": "56fd70f4aa8b82199dbe7e99366b1fd7a04d86fb",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "73f576c04b9410ed19660f74f97521bee6e1c546",
                            "lessThan": "37a060b64ae83b76600d187d76591ce488ab836b",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "73f576c04b9410ed19660f74f97521bee6e1c546",
                            "lessThan": "51c0b1bb7541f8893ec1accba59eb04361a70946",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "73f576c04b9410ed19660f74f97521bee6e1c546",
                            "lessThan": "9972605a238339b85bd16b084eed5f18414d22db",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "8627c7750a66a46d56d3564e1e881aa53764497c",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "db70cd18d3da727a3a59694de428a9e41c620de7",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "4.4.18",
                            "lessThan": "4.5",
                            "status": "affected",
                            "versionType": "semver"
                        },
                        {
                            "version": "4.6.6",
                            "lessThan": "4.7",
                            "status": "affected",
                            "versionType": "semver"
                        }
                    ]
                },
                {
                    "product": "Linux",
                    "vendor": "Linux",
                    "defaultStatus": "affected",
                    "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                    "programFiles": [
                        "mm/memcontrol.c"
                    ],
                    "versions": [
                        {
                            "version": "4.7",
                            "status": "affected"
                        },
                        {
                            "version": "0",
                            "lessThan": "4.7",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "5.10.226",
                            "lessThanOrEqual": "5.10.*",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "5.15.167",
                            "lessThanOrEqual": "5.15.*",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.1.110",
                            "lessThanOrEqual": "6.1.*",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.6.46",
                            "lessThanOrEqual": "6.6.*",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.10.5",
                            "lessThanOrEqual": "6.10.*",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.11",
                            "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": "4.7",
                                    "versionEndExcluding": "5.10.226"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "4.7",
                                    "versionEndExcluding": "5.15.167"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "4.7",
                                    "versionEndExcluding": "6.1.110"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "4.7",
                                    "versionEndExcluding": "6.6.46"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "4.7",
                                    "versionEndExcluding": "6.10.5"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "4.7",
                                    "versionEndExcluding": "6.11"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "4.4.18"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "4.6.6"
                                }
                            ]
                        }
                    ]
                }
            ],
            "references": [
                {
                    "url": "https://git.kernel.org/stable/c/912736a0435ef40e6a4ae78197ccb5553cb80b05"
                },
                {
                    "url": "https://git.kernel.org/stable/c/e6cc9ff2ac0b5df9f25eb790934c3104f6710278"
                },
                {
                    "url": "https://git.kernel.org/stable/c/56fd70f4aa8b82199dbe7e99366b1fd7a04d86fb"
                },
                {
                    "url": "https://git.kernel.org/stable/c/37a060b64ae83b76600d187d76591ce488ab836b"
                },
                {
                    "url": "https://git.kernel.org/stable/c/51c0b1bb7541f8893ec1accba59eb04361a70946"
                },
                {
                    "url": "https://git.kernel.org/stable/c/9972605a238339b85bd16b084eed5f18414d22db"
                }
            ],
            "title": "memcg: protect concurrent access to mem_cgroup_idr",
            "x_generator": {
                "engine": "bippy-1.2.0"
            }
        },
        "adp": [
            {
                "metrics": [
                    {
                        "other": {
                            "type": "ssvc",
                            "content": {
                                "id": "CVE-2024-43892",
                                "role": "CISA Coordinator",
                                "options": [
                                    {
                                        "Exploitation": "none"
                                    },
                                    {
                                        "Automatable": "no"
                                    },
                                    {
                                        "Technical Impact": "partial"
                                    }
                                ],
                                "version": "2.0.3",
                                "timestamp": "2024-09-10T15:29:18.942187Z"
                            }
                        }
                    }
                ],
                "title": "CISA ADP Vulnrichment",
                "providerMetadata": {
                    "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
                    "shortName": "CISA-ADP",
                    "dateUpdated": "2024-09-12T17:32:57.970Z"
                }
            },
            {
                "title": "CVE Program Container",
                "references": [
                    {
                        "url": "https://lists.debian.org/debian-lts-announce/2025/01/msg00001.html"
                    },
                    {
                        "url": "https://lists.debian.org/debian-lts-announce/2024/10/msg00003.html"
                    }
                ],
                "providerMetadata": {
                    "orgId": "af854a3a-2127-422b-91ae-364da2661108",
                    "shortName": "CVE",
                    "dateUpdated": "2025-11-03T22:06:51.189Z"
                }
            }
        ]
    }
}