{
    "dataType": "CVE_RECORD",
    "dataVersion": "5.2",
    "cveMetadata": {
        "cveId": "CVE-2026-99185",
        "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "state": "PUBLISHED",
        "assignerShortName": "Linux",
        "dateReserved": "2026-09-25T10:25:14.399Z",
        "datePublished": "2026-10-28T10:35:43.282Z",
        "dateUpdated": "2026-10-31T12:44:55.216Z"
    },
    "containers": {
        "cna": {
            "providerMetadata": {
                "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
                "shortName": "Linux",
                "dateUpdated": "2026-10-31T12:44:55.216Z"
            },
            "descriptions": [
                {
                    "lang": "en",
                    "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nfirewire: core: fix race condition in split transaction handling\n\nFor a split transaction, either fw_core_handle_response() or\nsplit_transaction_timeout_callback() may manipulate the same transaction\nentry in the pending transaction list. The return value of timer_delete()\nis used to determine which function handles the entry. If the transaction\nis a split transaction and timer_delete() returns zero, the timeout\ncallback may already be running. In this case, the response handler must\nleave the entry in the list for the timeout callback to remove.\n\nA previous code refactoring broke this behavior, introducing a race\ncondition in which both functions could process the same transaction.\nThis could lead to a use-after-free on the transaction initiator side.\n\nFix the regression by ensuring that the response handler does not process\nthe transaction when timer_delete() returns zero. The timeout callback is\nresponsible for removing the entry from the pending transaction list."
                }
            ],
            "metrics": [
                {
                    "cvssV3_1": {
                        "version": "3.1",
                        "vectorString": "CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
                        "baseScore": 8.8,
                        "baseSeverity": "HIGH"
                    },
                    "scenarios": [
                        {
                            "lang": "en",
                            "value": "AV:A - An IEEE-1394 peer supplies ACK_PENDING and a matching asynchronous response; OHCI irq_handler() queues handle_ar_packet(), which passes the attacker-chosen source/tlabel to the patched fw_core_handle_response(), requiring access to the shared FireWire bus.\nAC:L - ACK_PENDING makes transmit_complete_callback() arm split_timeout_timer, and the same peer can withhold then send the matching response at expiry, repeatedly racing timer_delete() against split_transaction_timeout_callback(); both competing events are attacker-driven.\nPR:N - fw_core_handle_response() accepts an OHCI-delivered response based only on source node ID and tlabel, while fw_device_init() automatically creates transactions for configuration-ROM reads; no credentials, capability, or authentication check gates the peer.\nUI:N - fw_node_event(FW_NODE_CREATED) schedules fw_device_init(), which calls read_config_rom() and fw_run_transaction() automatically; operating or attaching the malicious peer is the attacker's action, and no victim must open /dev/fw* or initiate I/O.\nS:U - The competing handlers corrupt fw_transaction and initiator objects inside the host kernel that owns them; no guest-host, IOMMU, sandbox, or other security-authority boundary is crossed.\nC:H - One SBP-2 completion can make complete_agent_reset_write_no_wait() free t while the competing path still reads t->packet, t->callback, and t->callback_data; reclaiming this dangling slab object gives the UAF leverage needed to read arbitrary kernel memory.\nI:H - complete_agent_reset_write_no_wait() calls kfree(t) on the first completion, while the second can double-free the object or invoke the stale t->callback after slab reuse, providing heap corruption and an indirect-call control-flow-hijack primitive.\nA:H - The duplicate completion can double-free the SBP-2 reset transaction or invoke a callback through reclaimed memory, causing SLUB corruption, an oops, or a kernel panic; the peer can retrigger the race with additional split transactions."
                        }
                    ]
                }
            ],
            "affected": [
                {
                    "product": "Linux",
                    "vendor": "Linux",
                    "defaultStatus": "unaffected",
                    "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                    "programFiles": [
                        "drivers/firewire/core-transaction.c"
                    ],
                    "versions": [
                        {
                            "version": "fa2dc27100768a8a994c377051fa17a47cc66c76",
                            "lessThan": "a8caee0e623ca5d56e829032f9ec073c09e4d224",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "fa2dc27100768a8a994c377051fa17a47cc66c76",
                            "lessThan": "7f9f2d6abc40f79e802b4063859eda343043b85c",
                            "status": "affected",
                            "versionType": "git"
                        }
                    ]
                },
                {
                    "product": "Linux",
                    "vendor": "Linux",
                    "defaultStatus": "affected",
                    "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                    "programFiles": [
                        "drivers/firewire/core-transaction.c"
                    ],
                    "versions": [
                        {
                            "version": "6.19",
                            "status": "affected"
                        },
                        {
                            "version": "0",
                            "lessThan": "6.19",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "7.2.13",
                            "lessThanOrEqual": "7.2.*",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "7.3",
                            "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": "6.19",
                                    "versionEndExcluding": "7.2.13"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "6.19",
                                    "versionEndExcluding": "7.3"
                                }
                            ]
                        }
                    ]
                }
            ],
            "references": [
                {
                    "url": "https://git.kernel.org/stable/c/a8caee0e623ca5d56e829032f9ec073c09e4d224"
                },
                {
                    "url": "https://git.kernel.org/stable/c/7f9f2d6abc40f79e802b4063859eda343043b85c"
                }
            ],
            "title": "firewire: core: fix race condition in split transaction handling",
            "x_generator": {
                "engine": "bippy-1.2.0"
            }
        }
    }
}