{ "dataType": "CVE_RECORD", "dataVersion": "5.2", "cveMetadata": { "cveId": "CVE-2024-42271", "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "state": "PUBLISHED", "assignerShortName": "Linux", "dateReserved": "2024-07-30T07:40:12.260Z", "datePublished": "2024-08-17T08:54:26.048Z", "dateUpdated": "2026-08-05T11:36:12.103Z" }, "containers": { "cna": { "providerMetadata": { "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "shortName": "Linux", "dateUpdated": "2026-08-05T11:36:12.103Z" }, "descriptions": [ { "lang": "en", "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nnet/iucv: fix use after free in iucv_sock_close()\n\niucv_sever_path() is called from process context and from bh context.\niucv->path is used as indicator whether somebody else is taking care of\nsevering the path (or it is already removed / never existed).\nThis needs to be done with atomic compare and swap, otherwise there is a\nsmall window where iucv_sock_close() will try to work with a path that has\nalready been severed and freed by iucv_callback_connrej() called by\niucv_tasklet_fn().\n\nExample:\n[452744.123844] Call Trace:\n[452744.123845] ([<0000001e87f03880>] 0x1e87f03880)\n[452744.123966] [<00000000d593001e>] iucv_path_sever+0x96/0x138\n[452744.124330] [<000003ff801ddbca>] iucv_sever_path+0xc2/0xd0 [af_iucv]\n[452744.124336] [<000003ff801e01b6>] iucv_sock_close+0xa6/0x310 [af_iucv]\n[452744.124341] [<000003ff801e08cc>] iucv_sock_release+0x3c/0xd0 [af_iucv]\n[452744.124345] [<00000000d574794e>] __sock_release+0x5e/0xe8\n[452744.124815] [<00000000d5747a0c>] sock_close+0x34/0x48\n[452744.124820] [<00000000d5421642>] __fput+0xba/0x268\n[452744.124826] [<00000000d51b382c>] task_work_run+0xbc/0xf0\n[452744.124832] [<00000000d5145710>] do_notify_resume+0x88/0x90\n[452744.124841] [<00000000d5978096>] system_call+0xe2/0x2c8\n[452744.125319] Last Breaking-Event-Address:\n[452744.125321] [<00000000d5930018>] iucv_path_sever+0x90/0x138\n[452744.125324]\n[452744.125325] Kernel panic - not syncing: Fatal exception in interrupt\n\nNote that bh_lock_sock() is not serializing the tasklet context against\nprocess context, because the check for sock_owned_by_user() and\ncorresponding handling is missing.\n\nIdeas for a future clean-up patch:\nA) Correct usage of bh_lock_sock() in tasklet context, as described in\nRe-enqueue, if needed. This may require adding return values to the\ntasklet functions and thus changes to all users of iucv.\n\nB) Change iucv tasklet into worker and use only lock_sock() in af_iucv." } ], "metrics": [ { "cvssV3_1": { "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" }, "scenarios": [ { "lang": "en", "value": "AV:L - The vulnerability is reached through AF_IUCV socket syscalls (socket/connect/accept/close) on an s390 z/VM guest; the racing tasklet side is driven by IUCV path-sever events the attacker generates from a peer socket on the same system. Although the IUCV peer can be another z/VM guest, the fully attacker-controlled path is local.\nAC:L - The attacker controls both sides of the race — one thread calls close() on the socket while a second socket's close (or a cooperating peer) causes CP to deliver the path-severed interrupt into iucv_tasklet_fn — and the attempt can be repeated in a tight loop until the small window is hit.\nPR:L - AF_IUCV socket creation and all socket operations in af_iucv.c contain no capability or privilege checks, and the module is auto-loadable via the net-pf-32 alias, so any unprivileged local user can reach the code.\nUI:N - The attacker drives the entire sequence from its own processes and sockets; no victim action is required.\nS:U - The corruption stays within the kernel's own security authority; no hypervisor, IOMMU, or VM boundary is crossed.\nC:H - The double-free/UAF of struct iucv_path in the generic kmalloc-64 cache lets an attacker reclaim the object and have the kernel dereference attacker-controlled fields (path->pathid, path->private as a struct sock *), which can be leveraged for kernel memory disclosure.\nI:H - Freed-object reuse yields write primitives: unbounded `iucv_path_table[path->pathid] = NULL` indexed by a reclaimed u16, list_del_init() unlinking on attacker-controlled list pointers, and freelist corruption from the double free — all exploitable toward arbitrary write and privilege escalation.\nA:H - The reported failure is \"Kernel panic - not syncing: Fatal exception in interrupt\" from iucv_path_sever(), so triggering the race reliably crashes the whole system." } ] } ], "affected": [ { "product": "Linux", "vendor": "Linux", "defaultStatus": "unaffected", "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git", "programFiles": [ "net/iucv/af_iucv.c" ], "versions": [ { "version": "7d316b9453523498246e9e19a659c423d4c5081e", "lessThan": "84f40b46787ecb67c7ad08a5bb1376141fa10c01", "status": "affected", "versionType": "git" }, { "version": "7d316b9453523498246e9e19a659c423d4c5081e", "lessThan": "37652fbef9809411cea55ea5fa1a170e299efcd0", "status": "affected", "versionType": "git" }, { "version": "7d316b9453523498246e9e19a659c423d4c5081e", "lessThan": "c65f72eec60a34ace031426e04e9aff8e5f04895", "status": "affected", "versionType": "git" }, { "version": "7d316b9453523498246e9e19a659c423d4c5081e", "lessThan": "ac758e1f663fe9bc64f6b47212a2aa18697524f5", "status": "affected", "versionType": "git" }, { "version": "7d316b9453523498246e9e19a659c423d4c5081e", "lessThan": "8b424c9e44111c5a76f41c6b741f8d4c4179d876", "status": "affected", "versionType": "git" }, { "version": "7d316b9453523498246e9e19a659c423d4c5081e", "lessThan": "01437282fd3904810603f3dc98d2cac6b8b6fc84", "status": "affected", "versionType": "git" }, { "version": "7d316b9453523498246e9e19a659c423d4c5081e", "lessThan": "69620522c48ce8215e5eb55ffbab8cafee8f407d", "status": "affected", "versionType": "git" }, { "version": "7d316b9453523498246e9e19a659c423d4c5081e", "lessThan": "f558120cd709682b739207b48cf7479fd9568431", "status": "affected", "versionType": "git" } ] }, { "product": "Linux", "vendor": "Linux", "defaultStatus": "affected", "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git", "programFiles": [ "net/iucv/af_iucv.c" ], "versions": [ { "version": "3.4", "status": "affected" }, { "version": "0", "lessThan": "3.4", "status": "unaffected", "versionType": "semver" }, { "version": "4.19.320", "lessThanOrEqual": "4.19.*", "status": "unaffected", "versionType": "semver" }, { "version": "5.4.282", "lessThanOrEqual": "5.4.*", "status": "unaffected", "versionType": "semver" }, { "version": "5.10.224", "lessThanOrEqual": "5.10.*", "status": "unaffected", "versionType": "semver" }, { "version": "5.15.165", "lessThanOrEqual": "5.15.*", "status": "unaffected", "versionType": "semver" }, { "version": "6.1.104", "lessThanOrEqual": "6.1.*", "status": "unaffected", "versionType": "semver" }, { "version": "6.6.45", "lessThanOrEqual": "6.6.*", "status": "unaffected", "versionType": "semver" }, { "version": "6.10.4", "lessThanOrEqual": "6.10.*", "status": "unaffected", "versionType": "semver" }, { "version": "6.11", "lessThanOrEqual": "*", "status": "unaffected", "versionType": "original_commit_for_fix" } ] } ], "cpeApplicability": [ { "nodes": [ { "operator": "OR", "negate": false, "cpeMatch": [ { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "3.4", "versionEndExcluding": "4.19.320" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "3.4", "versionEndExcluding": "5.4.282" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "3.4", "versionEndExcluding": "5.10.224" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "3.4", "versionEndExcluding": "5.15.165" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "3.4", "versionEndExcluding": "6.1.104" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "3.4", "versionEndExcluding": "6.6.45" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "3.4", "versionEndExcluding": "6.10.4" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "3.4", "versionEndExcluding": "6.11" } ] } ] } ], "references": [ { "url": "https://git.kernel.org/stable/c/84f40b46787ecb67c7ad08a5bb1376141fa10c01" }, { "url": "https://git.kernel.org/stable/c/37652fbef9809411cea55ea5fa1a170e299efcd0" }, { "url": "https://git.kernel.org/stable/c/c65f72eec60a34ace031426e04e9aff8e5f04895" }, { "url": "https://git.kernel.org/stable/c/ac758e1f663fe9bc64f6b47212a2aa18697524f5" }, { "url": "https://git.kernel.org/stable/c/8b424c9e44111c5a76f41c6b741f8d4c4179d876" }, { "url": "https://git.kernel.org/stable/c/01437282fd3904810603f3dc98d2cac6b8b6fc84" }, { "url": "https://git.kernel.org/stable/c/69620522c48ce8215e5eb55ffbab8cafee8f407d" }, { "url": "https://git.kernel.org/stable/c/f558120cd709682b739207b48cf7479fd9568431" } ], "title": "net/iucv: fix use after free in iucv_sock_close()", "x_generator": { "engine": "bippy-1.2.0" } }, "adp": [ { "metrics": [ { "other": { "type": "ssvc", "content": { "id": "CVE-2024-42271", "role": "CISA Coordinator", "options": [ { "Exploitation": "none" }, { "Automatable": "no" }, { "Technical Impact": "partial" } ], "version": "2.0.3", "timestamp": "2024-09-10T16:12:11.442193Z" } } } ], "title": "CISA ADP Vulnrichment", "providerMetadata": { "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "shortName": "CISA-ADP", "dateUpdated": "2024-09-12T17:33:32.331Z" } }, { "title": "CVE Program Container", "references": [ { "url": "https://lists.debian.org/debian-lts-announce/2025/01/msg00001.html" } ], "providerMetadata": { "orgId": "af854a3a-2127-422b-91ae-364da2661108", "shortName": "CVE", "dateUpdated": "2025-11-03T22:03:07.104Z" } } ] } }