In the Linux kernel, the following vulnerability has been resolved:
nfc: nci: free rxdatareassembly skb on NCI device cleanup
rxdatareassembly skb is stored during NCI data exchange for processing fragmented packets. It is dropped only when the last fragment is processed or when an NTF packet with NCIOPRFDEACTIVATENTF opcode is received. However, the NCI device may be deallocated before that which leads to skb leak.
As by design the rxdatareassembly skb is bound to the NCI device and nothing prevents the device to be freed before the skb is processed in some way and cleaned, free it on the NCI device cleanup.
Found by Linux Verification Center (linuxtesting.org) with Syzkaller.
{ "vanir_signatures": [ { "signature_version": "v1", "target": { "function": "nci_free_device", "file": "net/nfc/nci/core.c" }, "signature_type": "Function", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@2f6d16f0520d6505241629ee2f5c131b547d5f9d", "deprecated": false, "digest": { "length": 110.0, "function_hash": "248548980328726694603737487727115709378" }, "id": "CVE-2024-26825-32a0aa82" }, { "signature_version": "v1", "target": { "file": "net/nfc/nci/core.c" }, "signature_type": "Line", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@bfb007aebe6bff451f7f3a4be19f4f286d0d5d9c", "deprecated": false, "digest": { "line_hashes": [ "256607332076521486042725817543161492673", "179559933577734780527191614797833584744", "162767234232973161756967510811666069104", "23899941098157938850329197840796635244" ], "threshold": 0.9 }, "id": "CVE-2024-26825-40800f51" }, { "signature_version": "v1", "target": { "file": "net/nfc/nci/core.c" }, "signature_type": "Line", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@2f6d16f0520d6505241629ee2f5c131b547d5f9d", "deprecated": false, "digest": { "line_hashes": [ "256607332076521486042725817543161492673", "179559933577734780527191614797833584744", "162767234232973161756967510811666069104", "23899941098157938850329197840796635244" ], "threshold": 0.9 }, "id": "CVE-2024-26825-43083659" }, { "signature_version": "v1", "target": { "file": "net/nfc/nci/core.c" }, "signature_type": "Line", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@7e9a8498658b398bf11b8e388005fa54e40aed81", "deprecated": false, "digest": { "line_hashes": [ "256607332076521486042725817543161492673", "179559933577734780527191614797833584744", "162767234232973161756967510811666069104", "23899941098157938850329197840796635244" ], "threshold": 0.9 }, "id": "CVE-2024-26825-5134fb24" }, { "signature_version": "v1", "target": { "function": "nci_free_device", "file": "net/nfc/nci/core.c" }, "signature_type": "Function", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@a3d90fb5c23f29ba59c04005ae76c5228cef2be9", "deprecated": false, "digest": { "length": 110.0, "function_hash": "248548980328726694603737487727115709378" }, "id": "CVE-2024-26825-71c535a6" }, { "signature_version": "v1", "target": { "file": "net/nfc/nci/core.c" }, "signature_type": "Line", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@16d3f507b0fa70453dc54550df093d6e9ac630c1", "deprecated": false, "digest": { "line_hashes": [ "256607332076521486042725817543161492673", "179559933577734780527191614797833584744", "162767234232973161756967510811666069104", "23899941098157938850329197840796635244" ], "threshold": 0.9 }, "id": "CVE-2024-26825-8658de43" }, { "signature_version": "v1", "target": { "file": "net/nfc/nci/core.c" }, "signature_type": "Line", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@71349abe3aba7fedcab5b3fcd7aa82371fb5ccbf", "deprecated": false, "digest": { "line_hashes": [ "256607332076521486042725817543161492673", "179559933577734780527191614797833584744", "162767234232973161756967510811666069104", "23899941098157938850329197840796635244" ], "threshold": 0.9 }, "id": "CVE-2024-26825-94cf3e45" }, { "signature_version": "v1", "target": { "function": "nci_free_device", "file": "net/nfc/nci/core.c" }, "signature_type": "Function", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@bfb007aebe6bff451f7f3a4be19f4f286d0d5d9c", "deprecated": false, "digest": { "length": 110.0, "function_hash": "248548980328726694603737487727115709378" }, "id": "CVE-2024-26825-96b3624b" }, { "signature_version": "v1", "target": { "function": "nci_free_device", "file": "net/nfc/nci/core.c" }, "signature_type": "Function", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@471c9ede8061357b43a116fa692e70d91941ac23", "deprecated": false, "digest": { "length": 110.0, "function_hash": "248548980328726694603737487727115709378" }, "id": "CVE-2024-26825-96e98ad1" }, { "signature_version": "v1", "target": { "file": "net/nfc/nci/core.c" }, "signature_type": "Line", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@5c0c5ffaed73cbae6c317374dc32ba6cacc60895", "deprecated": false, "digest": { "line_hashes": [ "256607332076521486042725817543161492673", "179559933577734780527191614797833584744", "162767234232973161756967510811666069104", "23899941098157938850329197840796635244" ], "threshold": 0.9 }, "id": "CVE-2024-26825-9c28c3f7" }, { "signature_version": "v1", "target": { "function": "nci_free_device", "file": "net/nfc/nci/core.c" }, "signature_type": "Function", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@5c0c5ffaed73cbae6c317374dc32ba6cacc60895", "deprecated": false, "digest": { "length": 110.0, "function_hash": "248548980328726694603737487727115709378" }, "id": "CVE-2024-26825-a46fceec" }, { "signature_version": "v1", "target": { "file": "net/nfc/nci/core.c" }, "signature_type": "Line", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@471c9ede8061357b43a116fa692e70d91941ac23", "deprecated": false, "digest": { "line_hashes": [ "256607332076521486042725817543161492673", "179559933577734780527191614797833584744", "162767234232973161756967510811666069104", "23899941098157938850329197840796635244" ], "threshold": 0.9 }, "id": "CVE-2024-26825-b1f85a93" }, { "signature_version": "v1", "target": { "function": "nci_free_device", "file": "net/nfc/nci/core.c" }, "signature_type": "Function", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@71349abe3aba7fedcab5b3fcd7aa82371fb5ccbf", "deprecated": false, "digest": { "length": 110.0, "function_hash": "248548980328726694603737487727115709378" }, "id": "CVE-2024-26825-c481e440" }, { "signature_version": "v1", "target": { "file": "net/nfc/nci/core.c" }, "signature_type": "Line", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@a3d90fb5c23f29ba59c04005ae76c5228cef2be9", "deprecated": false, "digest": { "line_hashes": [ "256607332076521486042725817543161492673", "179559933577734780527191614797833584744", "162767234232973161756967510811666069104", "23899941098157938850329197840796635244" ], "threshold": 0.9 }, "id": "CVE-2024-26825-d1d03b70" }, { "signature_version": "v1", "target": { "function": "nci_free_device", "file": "net/nfc/nci/core.c" }, "signature_type": "Function", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@16d3f507b0fa70453dc54550df093d6e9ac630c1", "deprecated": false, "digest": { "length": 110.0, "function_hash": "248548980328726694603737487727115709378" }, "id": "CVE-2024-26825-e75bb646" }, { "signature_version": "v1", "target": { "function": "nci_free_device", "file": "net/nfc/nci/core.c" }, "signature_type": "Function", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@7e9a8498658b398bf11b8e388005fa54e40aed81", "deprecated": false, "digest": { "length": 110.0, "function_hash": "248548980328726694603737487727115709378" }, "id": "CVE-2024-26825-f65a0ccd" } ] }