CVE-2026-23268 (GCVE-0-2026-23268)

Vulnerability from cvelistv5 – Published: 2026-03-18 17:54 – Updated: 2026-04-02 14:44
VLAI?
Title
apparmor: fix unprivileged local user can do privileged policy management
Summary
In the Linux kernel, the following vulnerability has been resolved: apparmor: fix unprivileged local user can do privileged policy management An unprivileged local user can load, replace, and remove profiles by opening the apparmorfs interfaces, via a confused deputy attack, by passing the opened fd to a privileged process, and getting the privileged process to write to the interface. This does require a privileged target that can be manipulated to do the write for the unprivileged process, but once such access is achieved full policy management is possible and all the possible implications that implies: removing confinement, DoS of system or target applications by denying all execution, by-passing the unprivileged user namespace restriction, to exploiting kernel bugs for a local privilege escalation. The policy management interface can not have its permissions simply changed from 0666 to 0600 because non-root processes need to be able to load policy to different policy namespaces. Instead ensure the task writing the interface has privileges that are a subset of the task that opened the interface. This is already done via policy for confined processes, but unconfined can delegate access to the opened fd, by-passing the usual policy check.
Assigner
Impacted products
Vendor Product Version
Linux Linux Affected: b7fd2c0340eacbee892425e9007647568b7f2a3c , < 17debf5586020790b5717f96e5e6a3ca5bb961ab (git)
Affected: b7fd2c0340eacbee892425e9007647568b7f2a3c , < 0fc63dd9170643d15c25681fca792539e23f4640 (git)
Affected: b7fd2c0340eacbee892425e9007647568b7f2a3c , < b60b3f7a35c46b2e0ca934f9c988b8fca06d76c6 (git)
Affected: b7fd2c0340eacbee892425e9007647568b7f2a3c , < b6a94eeca9c6c8f7c55ad44c62c98324f51ec596 (git)
Affected: b7fd2c0340eacbee892425e9007647568b7f2a3c , < 6601e13e82841879406bf9f369032656f441a425 (git)
Create a notification for this product.
    Linux Linux Affected: 4.11
Unaffected: 0 , < 4.11 (semver)
Unaffected: 6.6.130 , ≤ 6.6.* (semver)
Unaffected: 6.12.77 , ≤ 6.12.* (semver)
Unaffected: 6.18.18 , ≤ 6.18.* (semver)
Unaffected: 6.19.8 , ≤ 6.19.* (semver)
Unaffected: 7.0-rc4 , ≤ * (original_commit_for_fix)
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/policy.h",
            "security/apparmor/policy.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "17debf5586020790b5717f96e5e6a3ca5bb961ab",
              "status": "affected",
              "version": "b7fd2c0340eacbee892425e9007647568b7f2a3c",
              "versionType": "git"
            },
            {
              "lessThan": "0fc63dd9170643d15c25681fca792539e23f4640",
              "status": "affected",
              "version": "b7fd2c0340eacbee892425e9007647568b7f2a3c",
              "versionType": "git"
            },
            {
              "lessThan": "b60b3f7a35c46b2e0ca934f9c988b8fca06d76c6",
              "status": "affected",
              "version": "b7fd2c0340eacbee892425e9007647568b7f2a3c",
              "versionType": "git"
            },
            {
              "lessThan": "b6a94eeca9c6c8f7c55ad44c62c98324f51ec596",
              "status": "affected",
              "version": "b7fd2c0340eacbee892425e9007647568b7f2a3c",
              "versionType": "git"
            },
            {
              "lessThan": "6601e13e82841879406bf9f369032656f441a425",
              "status": "affected",
              "version": "b7fd2c0340eacbee892425e9007647568b7f2a3c",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "security/apparmor/apparmorfs.c",
            "security/apparmor/include/policy.h",
            "security/apparmor/policy.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "4.11"
            },
            {
              "lessThan": "4.11",
              "status": "unaffected",
              "version": "0",
              "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-rc4",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.130",
                  "versionStartIncluding": "4.11",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.77",
                  "versionStartIncluding": "4.11",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.18",
                  "versionStartIncluding": "4.11",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.19.8",
                  "versionStartIncluding": "4.11",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.0-rc4",
                  "versionStartIncluding": "4.11",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\napparmor: fix unprivileged local user can do privileged policy management\n\nAn unprivileged local user can load, replace, and remove profiles by\nopening the apparmorfs interfaces, via a confused deputy attack, by\npassing the opened fd to a privileged process, and getting the\nprivileged process to write to the interface.\n\nThis does require a privileged target that can be manipulated to do\nthe write for the unprivileged process, but once such access is\nachieved full policy management is possible and all the possible\nimplications that implies: removing confinement, DoS of system or\ntarget applications by denying all execution, by-passing the\nunprivileged user namespace restriction, to exploiting kernel bugs for\na local privilege escalation.\n\nThe policy management interface can not have its permissions simply\nchanged from 0666 to 0600 because non-root processes need to be able\nto load policy to different policy namespaces.\n\nInstead ensure the task writing the interface has privileges that\nare a subset of the task that opened the interface. This is already\ndone via policy for confined processes, but unconfined can delegate\naccess to the opened fd, by-passing the usual policy check."
        }
      ],
      "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"
          }
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-04-02T14:44:03.025Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/17debf5586020790b5717f96e5e6a3ca5bb961ab"
        },
        {
          "url": "https://git.kernel.org/stable/c/0fc63dd9170643d15c25681fca792539e23f4640"
        },
        {
          "url": "https://git.kernel.org/stable/c/b60b3f7a35c46b2e0ca934f9c988b8fca06d76c6"
        },
        {
          "url": "https://git.kernel.org/stable/c/b6a94eeca9c6c8f7c55ad44c62c98324f51ec596"
        },
        {
          "url": "https://git.kernel.org/stable/c/6601e13e82841879406bf9f369032656f441a425"
        },
        {
          "url": "https://www.qualys.com/2026/03/10/crack-armor.txt"
        }
      ],
      "title": "apparmor: fix unprivileged local user can do privileged policy management",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-23268",
    "datePublished": "2026-03-18T17:54:41.974Z",
    "dateReserved": "2026-01-13T15:37:45.991Z",
    "dateUpdated": "2026-04-02T14:44:03.025Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "nvd": "{\"cve\":{\"id\":\"CVE-2026-23268\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2026-03-18T18:16:25.753\",\"lastModified\":\"2026-04-02T15:16:27.533\",\"vulnStatus\":\"Awaiting Analysis\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\napparmor: fix unprivileged local user can do privileged policy management\\n\\nAn unprivileged local user can load, replace, and remove profiles by\\nopening the apparmorfs interfaces, via a confused deputy attack, by\\npassing the opened fd to a privileged process, and getting the\\nprivileged process to write to the interface.\\n\\nThis does require a privileged target that can be manipulated to do\\nthe write for the unprivileged process, but once such access is\\nachieved full policy management is possible and all the possible\\nimplications that implies: removing confinement, DoS of system or\\ntarget applications by denying all execution, by-passing the\\nunprivileged user namespace restriction, to exploiting kernel bugs for\\na local privilege escalation.\\n\\nThe policy management interface can not have its permissions simply\\nchanged from 0666 to 0600 because non-root processes need to be able\\nto load policy to different policy namespaces.\\n\\nInstead ensure the task writing the interface has privileges that\\nare a subset of the task that opened the interface. This is already\\ndone via policy for confined processes, but unconfined can delegate\\naccess to the opened fd, by-passing the usual policy check.\"},{\"lang\":\"es\",\"value\":\"En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta:\\n\\napparmor: correcci\u00f3n de que un usuario local sin privilegios puede realizar gesti\u00f3n de pol\u00edticas privilegiada\\n\\nUn usuario local sin privilegios puede cargar, reemplazar y eliminar perfiles abriendo las interfaces de apparmorfs, a trav\u00e9s de un ataque de adjunto confundido, pasando el descriptor de archivo (fd) abierto a un proceso privilegiado y haciendo que el proceso privilegiado escriba en la interfaz.\\n\\nEsto requiere un objetivo privilegiado que pueda ser manipulado para realizar la escritura en nombre del proceso sin privilegios, pero una vez que se logra dicho acceso, es posible una gesti\u00f3n completa de pol\u00edticas y todas las posibles implicaciones que esto conlleva: eliminaci\u00f3n del confinamiento, DoS del sistema o de las aplicaciones objetivo denegando toda ejecuci\u00f3n, eludiendo la restricci\u00f3n del espacio de nombres de usuario sin privilegios, hasta la explotaci\u00f3n de errores del kernel para una escalada de privilegios local.\\n\\nLa interfaz de gesti\u00f3n de pol\u00edticas no puede tener sus permisos simplemente cambiados de 0666 a 0600 porque los procesos que no son root necesitan poder cargar pol\u00edticas en diferentes espacios de nombres de pol\u00edticas.\\n\\nEn su lugar, aseg\u00farese de que la tarea que escribe en la interfaz tenga privilegios que sean un subconjunto de la tarea que abri\u00f3 la interfaz. Esto ya se hace a trav\u00e9s de pol\u00edticas para procesos confinados, pero los no confinados pueden delegar acceso al descriptor de archivo (fd) abierto, eludiendo la verificaci\u00f3n de pol\u00edtica habitual.\"}],\"metrics\":{\"cvssMetricV31\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"type\":\"Secondary\",\"cvssData\":{\"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\",\"attackVector\":\"LOCAL\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"LOW\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"HIGH\",\"integrityImpact\":\"HIGH\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":1.8,\"impactScore\":5.9}]},\"references\":[{\"url\":\"https://git.kernel.org/stable/c/0fc63dd9170643d15c25681fca792539e23f4640\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/17debf5586020790b5717f96e5e6a3ca5bb961ab\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/6601e13e82841879406bf9f369032656f441a425\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/b60b3f7a35c46b2e0ca934f9c988b8fca06d76c6\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/b6a94eeca9c6c8f7c55ad44c62c98324f51ec596\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://www.qualys.com/2026/03/10/crack-armor.txt\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}]}}"
  }
}


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 observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.


Loading…

Detection rules are retrieved from Rulezet.

Loading…

Loading…