« Volver al listado

CVE-2023-53235

Estado: ModificadaAlta (7.8)—

In the Linux kernel, the following vulnerability has been resolved:

drm/tests: helpers: Avoid a driver uaf

when using __drm_kunit_helper_alloc_drm_device() the driver may be dereferenced by device-managed resources up until the device is freed, which is typically later than the kunit-managed resource code frees it. Fix this by simply make the driver device-managed as well.

In short, the sequence leading to the UAF is as follows:

INIT: Code allocates a struct device as a kunit-managed resource. Code allocates a drm driver as a kunit-managed resource. Code allocates a drm device as a device-managed resource.

Leer descripción completaMostrar menos

EXIT: Kunit resource cleanup frees the drm driver Kunit resource cleanup puts the struct device, which starts a device-managed resource cleanup device-managed cleanup calls drm_dev_put() drm_dev_put() dereferences the (now freed) drm driver -> Boom.

Detalles técnicos trazas, registros y código del informe original
Related KASAN message:
[55272.551542] ==================================================================
[55272.551551] BUG: KASAN: slab-use-after-free in drm_dev_put.part.0+0xd4/0xe0 [drm]
[55272.551603] Read of size 8 at addr ffff888127502828 by task kunit_try_catch/10353

[55272.551612] CPU: 4 PID: 10353 Comm: kunit_try_catch Tainted: G     U           N 6.5.0-rc7+ #155
[55272.551620] Hardware name: ASUS System Product Name/PRIME B560M-A AC, BIOS 0403 01/26/2021
[55272.551626] Call Trace:
[55272.551629]  <TASK>
[55272.551633]  dump_stack_lvl+0x57/0x90
[55272.551639]  print_report+0xcf/0x630
[55272.551645]  ? _raw_spin_lock_irqsave+0x5f/0x70
[55272.551652]  ? drm_dev_put.part.0+0xd4/0xe0 [drm]
[55272.551694]  kasan_report+0xd7/0x110
[55272.551699]  ? drm_dev_put.part.0+0xd4/0xe0 [drm]
[55272.551742]  drm_dev_put.part.0+0xd4/0xe0 [drm]
[55272.551783]  devres_release_all+0x15d/0x1f0
[55272.551790]  ? __pfx_devres_release_all+0x10/0x10
[55272.551797]  device_unbind_cleanup+0x16/0x1a0
[55272.551802]  device_release_driver_internal+0x3e5/0x540
[55272.551808]  ? kobject_put+0x5d/0x4b0
[55272.551814]  bus_remove_device+0x1f1/0x3f0
[55272.551819]  device_del+0x342/0x910
[55272.551826]  ? __pfx_device_del+0x10/0x10
[55272.551830]  ? lock_release+0x339/0x5e0
[55272.551836]  ? kunit_remove_resource+0x128/0x290 [kunit]
[55272.551845]  ? __pfx_lock_release+0x10/0x10
[55272.551851]  platform_device_del.part.0+0x1f/0x1e0
[55272.551856]  ? _raw_spin_unlock_irqrestore+0x30/0x60
[55272.551863]  kunit_remove_resource+0x195/0x290 [kunit]
[55272.551871]  ? _raw_spin_unlock_irqrestore+0x30/0x60
[55272.551877]  kunit_cleanup+0x78/0x120 [kunit]
[55272.551885]  ? __kthread_parkme+0xc1/0x1f0
[55272.551891]  ? __pfx_kunit_try_run_case_cleanup+0x10/0x10 [kunit]
[55272.551900]  ? __pfx_kunit_generic_run_threadfn_adapter+0x10/0x10 [kunit]
[55272.551909]  kunit_generic_run_threadfn_adapter+0x4a/0x90 [kunit]
[55272.551919]  kthread+0x2e7/0x3c0
[55272.551924]  ? __pfx_kthread+0x10/0x10
[55272.551929]  ret_from_fork+0x2d/0x70
[55272.551935]  ? __pfx_kthread+0x10/0x10
[55272.551940]  ret_from_fork_asm+0x1b/0x30
[55272.551948]  </TASK>

[55272.551953] Allocated by task 10351:
[55272.551956]  kasan_save_stack+0x1c/0x40
[55272.551962]  kasan_set_track+0x21/0x30
[55272.551966]  __kasan_kmalloc+0x8b/0x90
[55272.551970]  __kmalloc+0x5e/0x160
[55272.551976]  kunit_kmalloc_array+0x1c/0x50 [kunit]
[55272.551984]  drm_exec_test_init+0xfa/0x2c0 [drm_exec_test]
[55272.551991]  kunit_try_run_case+0xdd/0x250 [kunit]
[55272.551999]  kunit_generic_run_threadfn_adapter+0x4a/0x90 [kunit]
[55272.552008]  kthread+0x2e7/0x3c0
[55272.552012]  ret_from_fork+0x2d/0x70
[55272.552017]  ret_from_fork_asm+0x1b/0x30

[55272.552024] Freed by task 10353:
[55272.552027]  kasan_save_stack+0x1c/0x40
[55272.552032]  kasan_set_track+0x21/0x30
[55272.552036]  kasan_save_free_info+0x27/0x40
[55272.552041]  __kasan_slab_free+0x106/0x180
[55272.552046]  slab_free_freelist_hook+0xb3/0x160
[55272.552051]  __kmem_cache_free+0xb2/0x290
[55272.552056]  kunit_remove_resource+0x195/0x290 [kunit]
[55272.552064]  kunit_cleanup+0x7
---truncated---

CVSS

Probabilidad de explotación (EPSS)

EPSS (Exploit Prediction Scoring System, de FIRST) estima la probabilidad de que una vulnerabilidad sea explotada en 30 días. Complementa a CVSS (impacto) y a CISA KEV (explotación confirmada).

🎯 Técnicas ATT&CK

Cómo se explota esta vulnerabilidad y qué consigue el atacante, en el lenguaje de MITRE ATT&CK.

CWE-416 (Use-After-Free) en kernel Linux con privilegios locales (PR:L, AV:L). Aunque es un defecto de código en pruebas DRM, la UAF podría permitir escalada. El impacto potencial es ejecución de código, pero es indirecto en contexto de testing.

Inferido por nuestro agente de análisis a partir de la descripción oficial, el vector CVSS y la CWE, y comprobado por un supervisor. Puede contener errores.

🛡️ Mitigaciones ATT&CK que cubren estas técnicas

Tecnologías afectadas (1)

CWE

Referencias

JSON original (NVD)

Mostrar
{
  "id": "CVE-2023-53235",
  "cveTags": [],
  "metrics": {
    "ssvcV203": [
      {
        "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
        "ssvcData": {
          "id": "CVE-2023-53235",
          "role": "CISA Coordinator",
          "options": [
            {
              "exploitation": "none"
            },
            {
              "automatable": "no"
            },
            {
              "technicalImpact": "total"
            }
          ],
          "version": "2.0.3",
          "timestamp": "2026-01-14T17:56:14.212932Z"
        }
      }
    ],
    "cvssMetricV31": [
      {
        "type": "Primary",
        "source": "nvd@nist.gov",
        "cvssData": {
          "scope": "UNCHANGED",
          "version": "3.1",
          "baseScore": 7.8,
          "attackVector": "LOCAL",
          "baseSeverity": "HIGH",
          "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
          "integrityImpact": "HIGH",
          "userInteraction": "NONE",
          "attackComplexity": "LOW",
          "availabilityImpact": "HIGH",
          "privilegesRequired": "LOW",
          "confidentialityImpact": "HIGH"
        },
        "impactScore": 5.9,
        "exploitabilityScore": 1.8
      },
      {
        "type": "Secondary",
        "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
        "cvssData": {
          "scope": "UNCHANGED",
          "version": "3.1",
          "baseScore": 7.8,
          "attackVector": "LOCAL",
          "baseSeverity": "HIGH",
          "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
          "integrityImpact": "HIGH",
          "userInteraction": "NONE",
          "attackComplexity": "LOW",
          "availabilityImpact": "HIGH",
          "privilegesRequired": "LOW",
          "confidentialityImpact": "HIGH"
        },
        "impactScore": 5.9,
        "exploitabilityScore": 1.8
      }
    ]
  },
  "affected": [
    {
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
      "affectedData": [
        {
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "product": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "d98780310719bf4076d975c2ff65c44c7c0d929e",
              "lessThan": "c9d8be0e533738b744abb669263c4750d4830009",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "d98780310719bf4076d975c2ff65c44c7c0d929e",
              "lessThan": "139a27854bf5ce93ff9805f9f7683b88c13074dc",
              "versionType": "git"
            }
          ],
          "programFiles": [
            "include/drm/drm_kunit_helpers.h"
          ],
          "defaultStatus": "unaffected"
        },
        {
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "product": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.3"
            },
            {
              "status": "unaffected",
              "version": "0",
              "lessThan": "6.3",
              "versionType": "semver"
            },
            {
              "status": "unaffected",
              "version": "6.5.5",
              "versionType": "semver",
              "lessThanOrEqual": "6.5.*"
            },
            {
              "status": "unaffected",
              "version": "6.6",
              "versionType": "original_commit_for_fix",
              "lessThanOrEqual": "*"
            }
          ],
          "programFiles": [
            "include/drm/drm_kunit_helpers.h"
          ],
          "defaultStatus": "affected"
        }
      ]
    }
  ],
  "published": "2025-09-15T15:15:50.550",
  "references": [
    {
      "url": "https://git.kernel.org/stable/c/139a27854bf5ce93ff9805f9f7683b88c13074dc",
      "tags": [
        "Patch"
      ],
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/c9d8be0e533738b744abb669263c4750d4830009",
      "tags": [
        "Patch"
      ],
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    }
  ],
  "vulnStatus": "Modified",
  "weaknesses": [
    {
      "type": "Primary",
      "source": "nvd@nist.gov",
      "description": [
        {
          "lang": "en",
          "value": "CWE-416"
        }
      ]
    },
    {
      "type": "Secondary",
      "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
      "description": [
        {
          "lang": "en",
          "value": "CWE-416"
        }
      ]
    }
  ],
  "descriptions": [
    {
      "lang": "en",
      "value": "In the Linux kernel, the following vulnerability has been resolved:\n\ndrm/tests: helpers: Avoid a driver uaf\n\nwhen using __drm_kunit_helper_alloc_drm_device() the driver may be\ndereferenced by device-managed resources up until the device is\nfreed, which is typically later than the kunit-managed resource code\nfrees it. Fix this by simply make the driver device-managed as well.\n\nIn short, the sequence leading to the UAF is as follows:\n\nINIT:\nCode allocates a struct device as a kunit-managed resource.\nCode allocates a drm driver as a kunit-managed resource.\nCode allocates a drm device as a device-managed resource.\n\nEXIT:\nKunit resource cleanup frees the drm driver\nKunit resource cleanup puts the struct device, which starts a\n      device-managed resource cleanup\ndevice-managed cleanup calls drm_dev_put()\ndrm_dev_put() dereferences the (now freed) drm driver -> Boom.\n\nRelated KASAN message:\n[55272.551542] ==================================================================\n[55272.551551] BUG: KASAN: slab-use-after-free in drm_dev_put.part.0+0xd4/0xe0 [drm]\n[55272.551603] Read of size 8 at addr ffff888127502828 by task kunit_try_catch/10353\n\n[55272.551612] CPU: 4 PID: 10353 Comm: kunit_try_catch Tainted: G     U           N 6.5.0-rc7+ #155\n[55272.551620] Hardware name: ASUS System Product Name/PRIME B560M-A AC, BIOS 0403 01/26/2021\n[55272.551626] Call Trace:\n[55272.551629]  <TASK>\n[55272.551633]  dump_stack_lvl+0x57/0x90\n[55272.551639]  print_report+0xcf/0x630\n[55272.551645]  ? _raw_spin_lock_irqsave+0x5f/0x70\n[55272.551652]  ? drm_dev_put.part.0+0xd4/0xe0 [drm]\n[55272.551694]  kasan_report+0xd7/0x110\n[55272.551699]  ? drm_dev_put.part.0+0xd4/0xe0 [drm]\n[55272.551742]  drm_dev_put.part.0+0xd4/0xe0 [drm]\n[55272.551783]  devres_release_all+0x15d/0x1f0\n[55272.551790]  ? __pfx_devres_release_all+0x10/0x10\n[55272.551797]  device_unbind_cleanup+0x16/0x1a0\n[55272.551802]  device_release_driver_internal+0x3e5/0x540\n[55272.551808]  ? kobject_put+0x5d/0x4b0\n[55272.551814]  bus_remove_device+0x1f1/0x3f0\n[55272.551819]  device_del+0x342/0x910\n[55272.551826]  ? __pfx_device_del+0x10/0x10\n[55272.551830]  ? lock_release+0x339/0x5e0\n[55272.551836]  ? kunit_remove_resource+0x128/0x290 [kunit]\n[55272.551845]  ? __pfx_lock_release+0x10/0x10\n[55272.551851]  platform_device_del.part.0+0x1f/0x1e0\n[55272.551856]  ? _raw_spin_unlock_irqrestore+0x30/0x60\n[55272.551863]  kunit_remove_resource+0x195/0x290 [kunit]\n[55272.551871]  ? _raw_spin_unlock_irqrestore+0x30/0x60\n[55272.551877]  kunit_cleanup+0x78/0x120 [kunit]\n[55272.551885]  ? __kthread_parkme+0xc1/0x1f0\n[55272.551891]  ? __pfx_kunit_try_run_case_cleanup+0x10/0x10 [kunit]\n[55272.551900]  ? __pfx_kunit_generic_run_threadfn_adapter+0x10/0x10 [kunit]\n[55272.551909]  kunit_generic_run_threadfn_adapter+0x4a/0x90 [kunit]\n[55272.551919]  kthread+0x2e7/0x3c0\n[55272.551924]  ? __pfx_kthread+0x10/0x10\n[55272.551929]  ret_from_fork+0x2d/0x70\n[55272.551935]  ? __pfx_kthread+0x10/0x10\n[55272.551940]  ret_from_fork_asm+0x1b/0x30\n[55272.551948]  </TASK>\n\n[55272.551953] Allocated by task 10351:\n[55272.551956]  kasan_save_stack+0x1c/0x40\n[55272.551962]  kasan_set_track+0x21/0x30\n[55272.551966]  __kasan_kmalloc+0x8b/0x90\n[55272.551970]  __kmalloc+0x5e/0x160\n[55272.551976]  kunit_kmalloc_array+0x1c/0x50 [kunit]\n[55272.551984]  drm_exec_test_init+0xfa/0x2c0 [drm_exec_test]\n[55272.551991]  kunit_try_run_case+0xdd/0x250 [kunit]\n[55272.551999]  kunit_generic_run_threadfn_adapter+0x4a/0x90 [kunit]\n[55272.552008]  kthread+0x2e7/0x3c0\n[55272.552012]  ret_from_fork+0x2d/0x70\n[55272.552017]  ret_from_fork_asm+0x1b/0x30\n\n[55272.552024] Freed by task 10353:\n[55272.552027]  kasan_save_stack+0x1c/0x40\n[55272.552032]  kasan_set_track+0x21/0x30\n[55272.552036]  kasan_save_free_info+0x27/0x40\n[55272.552041]  __kasan_slab_free+0x106/0x180\n[55272.552046]  slab_free_freelist_hook+0xb3/0x160\n[55272.552051]  __kmem_cache_free+0xb2/0x290\n[55272.552056]  kunit_remove_resource+0x195/0x290 [kunit]\n[55272.552064]  kunit_cleanup+0x7\n---truncated---"
    }
  ],
  "lastModified": "2026-06-17T06:44:35.293",
  "configurations": [
    {
      "nodes": [
        {
          "negate": false,
          "cpeMatch": [
            {
              "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
              "vulnerable": true,
              "matchCriteriaId": "F961E4E2-B3B0-4061-AA7B-6262FE78F9D0",
              "versionEndExcluding": "6.5.5",
              "versionStartIncluding": "6.3"
            },
            {
              "criteria": "cpe:2.3:o:linux:linux_kernel:6.6:rc1:*:*:*:*:*:*",
              "vulnerable": true,
              "matchCriteriaId": "84267A4F-DBC2-444F-B41D-69E15E1BEC97"
            }
          ],
          "operator": "OR"
        }
      ]
    }
  ],
  "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
}