CVE-2022-50095 (GCVE-0-2022-50095)
Vulnerability from cvelistv5
Published
2025-06-18 11:02
Modified
2026-08-05 08:57
Summary
In the Linux kernel, the following vulnerability has been resolved: posix-cpu-timers: Cleanup CPU timers before freeing them during exec Commit 55e8c8eb2c7b ("posix-cpu-timers: Store a reference to a pid not a task") started looking up tasks by PID when deleting a CPU timer. When a non-leader thread calls execve, it will switch PIDs with the leader process. Then, as it calls exit_itimers, posix_cpu_timer_del cannot find the task because the timer still points out to the old PID. That means that armed timers won't be disarmed, that is, they won't be removed from the timerqueue_list. exit_itimers will still release their memory, and when that list is later processed, it leads to a use-after-free. Clean up the timers from the de-threaded task before freeing them. This prevents a reported use-after-free.
Impacted products
Vendor Product Version
Linux Linux Version: 55e8c8eb2c7b6bf30e99423ccfe7ca032f498f59
Version: 55e8c8eb2c7b6bf30e99423ccfe7ca032f498f59
Version: 55e8c8eb2c7b6bf30e99423ccfe7ca032f498f59
Version: 55e8c8eb2c7b6bf30e99423ccfe7ca032f498f59
Version: 55e8c8eb2c7b6bf30e99423ccfe7ca032f498f59
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "fs/exec.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "541840859ace9c2ccebc32fa9e376c7bd3def490",
              "status": "affected",
              "version": "55e8c8eb2c7b6bf30e99423ccfe7ca032f498f59",
              "versionType": "git"
            },
            {
              "lessThan": "9e255ed238fc67058df87b0388ad6d4b2ef3a2bd",
              "status": "affected",
              "version": "55e8c8eb2c7b6bf30e99423ccfe7ca032f498f59",
              "versionType": "git"
            },
            {
              "lessThan": "e8cb6e8fd9890780f1bfcf5592889e1b879e779c",
              "status": "affected",
              "version": "55e8c8eb2c7b6bf30e99423ccfe7ca032f498f59",
              "versionType": "git"
            },
            {
              "lessThan": "b2fc1723eb65abb83e00d5f011de670296af0b28",
              "status": "affected",
              "version": "55e8c8eb2c7b6bf30e99423ccfe7ca032f498f59",
              "versionType": "git"
            },
            {
              "lessThan": "e362359ace6f87c201531872486ff295df306d13",
              "status": "affected",
              "version": "55e8c8eb2c7b6bf30e99423ccfe7ca032f498f59",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "fs/exec.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "5.7"
            },
            {
              "lessThan": "5.7",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.10.*",
              "status": "unaffected",
              "version": "5.10.137",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.15.*",
              "status": "unaffected",
              "version": "5.15.61",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.18.*",
              "status": "unaffected",
              "version": "5.18.18",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.19.*",
              "status": "unaffected",
              "version": "5.19.2",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.0",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.10.137",
                  "versionStartIncluding": "5.7",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.15.61",
                  "versionStartIncluding": "5.7",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.18.18",
                  "versionStartIncluding": "5.7",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.19.2",
                  "versionStartIncluding": "5.7",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.0",
                  "versionStartIncluding": "5.7",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nposix-cpu-timers: Cleanup CPU timers before freeing them during exec\n\nCommit 55e8c8eb2c7b (\"posix-cpu-timers: Store a reference to a pid not a\ntask\") started looking up tasks by PID when deleting a CPU timer.\n\nWhen a non-leader thread calls execve, it will switch PIDs with the leader\nprocess. Then, as it calls exit_itimers, posix_cpu_timer_del cannot find\nthe task because the timer still points out to the old PID.\n\nThat means that armed timers won\u0027t be disarmed, that is, they won\u0027t be\nremoved from the timerqueue_list. exit_itimers will still release their\nmemory, and when that list is later processed, it leads to a\nuse-after-free.\n\nClean up the timers from the de-threaded task before freeing them. This\nprevents a reported use-after-free."
        }
      ],
      "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 - Exploitation requires local syscalls (clone/pthread_create, timer_create/timer_settime with CLOCK_THREAD_CPUTIME_ID, and execve from a non-leader thread); there is no network or adjacent-vector path into this code.\nAC:L - The bug is a deterministic logic error on the non-leader exec path after PID exchange, not a race against conditions the attacker cannot control; the attacker reliably creates, arms, and triggers the dangling timerqueue entry.\nPR:L - An unprivileged local user can create threads, create and arm self-targeted POSIX CPU timers, and call execve; no capabilities or init-namespace root are required.\nUI:N - The attacker performs all steps themselves; no separate victim action is needed to reach or trigger the use-after-free.\nS:U - Impact is confined to the local kernel/OS authority (standard kernel memory corruption / privilege escalation); it does not cross a VM, IOMMU, or other security boundary.\nC:H - The freed k_itimer remains linked in the per-thread CPU timerqueue and is later processed by run_posix_cpu_timers, yielding a kernel UAF that can be leveraged for arbitrary memory disclosure.\nI:H - The same UAF of a slab-allocated k_itimer enables heap reuse and write/control-flow primitives consistent with kernel timer-object corruption.\nA:H - Processing the dangling timerqueue entry after free causes kernel oops/panic or otherwise crashes the system even when not fully exploited for code execution."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T08:57:22.791Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/541840859ace9c2ccebc32fa9e376c7bd3def490"
        },
        {
          "url": "https://git.kernel.org/stable/c/9e255ed238fc67058df87b0388ad6d4b2ef3a2bd"
        },
        {
          "url": "https://git.kernel.org/stable/c/e8cb6e8fd9890780f1bfcf5592889e1b879e779c"
        },
        {
          "url": "https://git.kernel.org/stable/c/b2fc1723eb65abb83e00d5f011de670296af0b28"
        },
        {
          "url": "https://git.kernel.org/stable/c/e362359ace6f87c201531872486ff295df306d13"
        }
      ],
      "title": "posix-cpu-timers: Cleanup CPU timers before freeing them during exec",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2022-50095",
    "datePublished": "2025-06-18T11:02:33.221Z",
    "dateReserved": "2025-06-18T10:57:27.411Z",
    "dateUpdated": "2026-08-05T08:57:22.791Z",
    "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…