CVE-2026-23411 (GCVE-0-2026-23411)
Vulnerability from cvelistv5
Published
2026-04-01 08:36
Modified
2026-08-05 12:21
Summary
In the Linux kernel, the following vulnerability has been resolved: apparmor: fix race between freeing data and fs accessing it AppArmor was putting the reference to i_private data on its end after removing the original entry from the file system. However the inode can aand does live beyond that point and it is possible that some of the fs call back functions will be invoked after the reference has been put, which results in a race between freeing the data and accessing it through the fs. While the rawdata/loaddata is the most likely candidate to fail the race, as it has the fewest references. If properly crafted it might be possible to trigger a race for the other types stored in i_private. Fix this by moving the put of i_private referenced data to the correct place which is during inode eviction.
Impacted products
Vendor Product Version
Linux Linux Version: c961ee5f21b202dea60b63eeef945730d92e46a6
Version: c961ee5f21b202dea60b63eeef945730d92e46a6
Version: c961ee5f21b202dea60b63eeef945730d92e46a6
Version: c961ee5f21b202dea60b63eeef945730d92e46a6
Version: c961ee5f21b202dea60b63eeef945730d92e46a6
Version: c961ee5f21b202dea60b63eeef945730d92e46a6
Version: c961ee5f21b202dea60b63eeef945730d92e46a6
Version: c961ee5f21b202dea60b63eeef945730d92e46a6
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "security/apparmor/apparmorfs.c",
            "security/apparmor/include/label.h",
            "security/apparmor/include/lib.h",
            "security/apparmor/include/policy.h",
            "security/apparmor/include/policy_unpack.h",
            "security/apparmor/label.c",
            "security/apparmor/policy_unpack.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "a92c5e5086a87d082696245a8607666da3d80554",
              "status": "affected",
              "version": "c961ee5f21b202dea60b63eeef945730d92e46a6",
              "versionType": "git"
            },
            {
              "lessThan": "667df93769c02ff581c77d2d8f162147e719c557",
              "status": "affected",
              "version": "c961ee5f21b202dea60b63eeef945730d92e46a6",
              "versionType": "git"
            },
            {
              "lessThan": "3ddb961d2929bbb3204a2bba21b5d8153cd3f7cc",
              "status": "affected",
              "version": "c961ee5f21b202dea60b63eeef945730d92e46a6",
              "versionType": "git"
            },
            {
              "lessThan": "ae10787d955fb255d381e0d5589451dd72c614b1",
              "status": "affected",
              "version": "c961ee5f21b202dea60b63eeef945730d92e46a6",
              "versionType": "git"
            },
            {
              "lessThan": "eecce026399917f6efa532c56bc7a3e9dd6ee68b",
              "status": "affected",
              "version": "c961ee5f21b202dea60b63eeef945730d92e46a6",
              "versionType": "git"
            },
            {
              "lessThan": "13bc2772414d68e94e273dea013181a986948ddf",
              "status": "affected",
              "version": "c961ee5f21b202dea60b63eeef945730d92e46a6",
              "versionType": "git"
            },
            {
              "lessThan": "2a732ed26fbd048e7925d227af8cf9ea43fb5cc9",
              "status": "affected",
              "version": "c961ee5f21b202dea60b63eeef945730d92e46a6",
              "versionType": "git"
            },
            {
              "lessThan": "8e135b8aee5a06c52a4347a5a6d51223c6f36ba3",
              "status": "affected",
              "version": "c961ee5f21b202dea60b63eeef945730d92e46a6",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "security/apparmor/apparmorfs.c",
            "security/apparmor/include/label.h",
            "security/apparmor/include/lib.h",
            "security/apparmor/include/policy.h",
            "security/apparmor/include/policy_unpack.h",
            "security/apparmor/label.c",
            "security/apparmor/policy_unpack.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "4.13"
            },
            {
              "lessThan": "4.13",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.10.*",
              "status": "unaffected",
              "version": "5.10.253",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.15.*",
              "status": "unaffected",
              "version": "5.15.203",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.1.*",
              "status": "unaffected",
              "version": "6.1.169",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.130",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.77",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.18",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.19.*",
              "status": "unaffected",
              "version": "6.19.8",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.0",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.10.253",
                  "versionStartIncluding": "4.13",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.15.203",
                  "versionStartIncluding": "4.13",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.1.169",
                  "versionStartIncluding": "4.13",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.130",
                  "versionStartIncluding": "4.13",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.77",
                  "versionStartIncluding": "4.13",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.18",
                  "versionStartIncluding": "4.13",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.19.8",
                  "versionStartIncluding": "4.13",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.0",
                  "versionStartIncluding": "4.13",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\napparmor: fix race between freeing data and fs accessing it\n\nAppArmor was putting the reference to i_private data on its end after\nremoving the original entry from the file system. However the inode\ncan aand does live beyond that point and it is possible that some of\nthe fs call back functions will be invoked after the reference has\nbeen put, which results in a race between freeing the data and\naccessing it through the fs.\n\nWhile the rawdata/loaddata is the most likely candidate to fail the\nrace, as it has the fewest references. If properly crafted it might be\npossible to trigger a race for the other types stored in i_private.\n\nFix this by moving the put of i_private referenced data to the correct\nplace which is during inode eviction."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7.8,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:L - The vulnerability is in apparmorfs, a local filesystem interface at /sys/kernel/security/apparmor/. Exploitation requires local system access to perform filesystem operations (open, read, mkdir, rmdir).\nAC:L - The attacker controls both sides of the race \u2014 they can concurrently open/read apparmorfs files and remove profiles/namespaces. Per kernel guidance, race conditions where the attacker controls both sides are AC:L.\nPR:L - In container environments with AppArmor namespaces (LXD, some Kubernetes), container root (effectively low-privileged from host perspective) has matching AA namespace levels and can manage AppArmor policy within its namespace with default unprivileged_userns_apparmor_policy=1.\nUI:N - No user interaction is needed. The attacker triggers both the file access and the profile/namespace removal concurrently without requiring any victim action.\nS:U - This is a standard kernel privilege escalation via use-after-free in the AppArmor subsystem. The vulnerability and impact are within the same security authority (kernel space).\nC:H - The use-after-free gives the attacker control over freed object contents through heap spraying, enabling arbitrary kernel memory reads.\nI:H - The use-after-free enables heap spraying to control freed objects, providing arbitrary write primitives and potential control flow hijacking for kernel code execution.\nA:H - The use-after-free causes kernel crashes (accessing freed/corrupted memory leads to oops or panic) even without full exploitation."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T12:21:31.465Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/a92c5e5086a87d082696245a8607666da3d80554"
        },
        {
          "url": "https://git.kernel.org/stable/c/667df93769c02ff581c77d2d8f162147e719c557"
        },
        {
          "url": "https://git.kernel.org/stable/c/3ddb961d2929bbb3204a2bba21b5d8153cd3f7cc"
        },
        {
          "url": "https://git.kernel.org/stable/c/ae10787d955fb255d381e0d5589451dd72c614b1"
        },
        {
          "url": "https://git.kernel.org/stable/c/eecce026399917f6efa532c56bc7a3e9dd6ee68b"
        },
        {
          "url": "https://git.kernel.org/stable/c/13bc2772414d68e94e273dea013181a986948ddf"
        },
        {
          "url": "https://git.kernel.org/stable/c/2a732ed26fbd048e7925d227af8cf9ea43fb5cc9"
        },
        {
          "url": "https://git.kernel.org/stable/c/8e135b8aee5a06c52a4347a5a6d51223c6f36ba3"
        }
      ],
      "title": "apparmor: fix race between freeing data and fs accessing it",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-23411",
    "datePublished": "2026-04-01T08:36:39.819Z",
    "dateReserved": "2026-01-13T15:37:46.013Z",
    "dateUpdated": "2026-08-05T12:21:31.465Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2"
}


Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Sightings

Author Source Type Date

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
  • Confirmed: The vulnerability is confirmed from an analyst perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
  • Patched: This vulnerability was successfully patched by the user reporting the sighting.
  • Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
  • Not confirmed: The user expresses doubt about the veracity of the vulnerability.
  • Not patched: This vulnerability was not successfully patched by the user reporting the sighting.


Loading…

Loading…