{"answers":{"affected":"It affects 1 product.","exploited":"There is no known exploitation of CVE-2026-10647 in the wild and no public exploit code.","fix":"No fix has been published for CVE-2026-10647 yet. Limit exposure of the affected software until one is available.","what":"CVE-2026-10647 is a medium-severity denial of service vulnerability in Zephyrproject Zephyr, published on 29 Jun 2026. It can only be exploited from the same machine or local network, with no action from the victim."},"fix_prompt":"Check this codebase for CVE-2026-10647 and fix it if it is affected.\n\nWhat it is: CVE-2026-10647 is a medium-severity denial of service vulnerability in Zephyrproject Zephyr, published on 29 Jun 2026. It can only be exploited from the same machine or local network, with no action from the victim.\nExploitation: There is no known exploitation of CVE-2026-10647 in the wild and no public exploit code.\n\nAffected product: Zephyrproject Zephyr. No package-level version data is available, so check the vendor advisory linked from the reference page.\n\nTask:\n1. Search the dependency manifests and lockfiles (for example package.json, package-lock.json, requirements.txt, poetry.lock, uv.lock, pom.xml, build.gradle, go.mod, Cargo.lock, Gemfile.lock) and any Dockerfiles for the affected packages, including transitive dependencies.\n2. If an affected version is in use, upgrade it to the fixed version for its release line with the project's package manager, so the lockfile is regenerated. Prefer the smallest upgrade that fixes it.\n3. If there is no fix, or the upgrade would break the build, do not guess: explain the risk and the safest workaround instead.\n4. Run the tests and summarise what changed and why.\n5. If nothing in the project is affected, say so and change nothing.\n\nReference: https://insights.sbomify.com/CVE-2026-10647/ (Markdown: https://insights.sbomify.com/CVE-2026-10647/index.md)","id":"CVE-2026-10647","markdown":"https://insights.sbomify.com/CVE-2026-10647/index.md","name":"CVE-2026-10647","record":{"aliases":["GHSA-xcf7-r86m-5q9f"],"analysis":{"component_type":"operating_system","fix_type":"patch","impacts":["denial_of_service"],"network_reachable":"adjacent_or_local","non_default_config":false,"product_category":"Zephyr RTOS","requires_auth":"none","summary":"A deadlock in the USB CDC-NCM driver causes permanent denial of service when a host suspends the bus during transmission, requiring a reboot to recover.","user_interaction":"not_required","vuln_class":"denial_of_service"},"analysis_generated_by":"qwen3.8-flash-next","assigner":"zephyr","cpe":[{"product":"zephyr","vendor":"zephyrproject"}],"cvss":{"score":5.3,"severity":"medium","source":"cna","vector":"CVSS:3.1/AV:A/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H","version":"3.1"},"cwes":[{"id":"CWE-667","name":"Improper Locking"},{"id":"CWE-833","name":"Deadlock"}],"description":"The USB CDC-NCM device class (subsys/usb/device_next/class/usbd_cdc_ncm.c) ignores the return value of usbd_ep_enqueue() in its ethernet transmit callback cdc_ncm_send(). When the enqueue fails, the function still calls k_sem_take(\u0026data-\u003esync_sem, K_FOREVER), blocking on a completion semaphore that is only ever signaled from the bulk-IN transfer-completion callback. Because nothing was enqueued, that callback never fires and the calling thread — a shared network traffic-class TX thread — deadlocks permanently while holding the interface TX lock, halting transmission until reboot (and leaking the transmit buffer).\n\nThe enqueue fails under conditions controlled by the attached USB host: usbd_ep_enqueue() returns -EPERM whenever the bus is suspended (a standard, persistent host operation), and the underlying udc_ep_enqueue() returns -EPERM/-ENODEV on disconnect, bus reset, or endpoint disable. The cdc_ncm_send() guard only checks the DATA_IFACE_ENABLED and IFACE_UP flags, not the suspended state, so a packet transmitted while the host holds the bus suspended reaches the failing enqueue and deadlocks the TX path.\n\nThe realistic trigger is a bus suspend that occurs while the exported network interface is active and has traffic to send — host sleep, USB selective/auto-suspend, or hub power management — after which any device-originated packet deadlocks the path, recoverable only by reboot. The impact is a persistent loss of the virtual network connection between the host's NCM interface and the Zephyr device; because the deadlocked thread is a shared traffic-class TX thread, egress on other network interfaces can stall as well. There is no memory corruption or information disclosure.\n\nThe defect was introduced with the CDC-NCM driver and shipped in releases through v4.4.0; it is fixed by checking the usbd_ep_enqueue() return value and freeing the buffer before the blocking wait.","ecosystems":[],"exploits":{"exploitdb":0,"first_seen":null,"github_poc":0,"max_poc_stars":null,"metasploit":0,"nuclei":0,"refs":[],"tier":"none_known"},"has_fix":false,"headline":"Deadlock denial of service in USB CDC-NCM device class on TX enqueue failure","id":"CVE-2026-10647","indexable":true,"kev":null,"kind":"cve","links":{"ecosystem":null,"product":"zephyrproject:zephyr","products":["zephyrproject:zephyr"],"type":"denial_of_service","year":"2026"},"n_packages":0,"n_references":2,"next":{"headline":"NULL-pointer dereference in MCUmgr serial/console SMP transport on buffer-pool exhaustion","id":"CVE-2026-10648"},"packages":[],"prev":{"headline":"Use-after-return in `zsock_getaddrinfo()` when a timed-out DNS query is retried without cancellation","id":"CVE-2026-10646"},"products":["zephyr"],"published":"2026-06-29","related":[{"cvss_score":9.8,"headline":"Out-of-bounds read/write in HTTP WebSocket upgrade via non-null-terminated Sec-WebSocket-Key","id":"CVE-2026-5067","kev_date_added":null,"published":"2026-06-09"},{"cvss_score":9.8,"headline":"Bluetooth HCI Error Handling Double Free","id":"CVE-2022-3806","kev_date_added":null,"published":"2023-01-19"},{"cvss_score":9.8,"headline":"Memory corruption in getaddrinfo","id":"CVE-2017-14199","kev_date_added":null,"published":"2019-04-12"},{"cvss_score":9.8,"headline":"Null dereference in n/a","id":"CVE-2018-1000800","kev_date_added":null,"published":"2018-09-06"},{"cvss_score":9.6,"headline":"DOS: Incorrect handling of the initial HCI ACL_MTU handshake packet leads to crash of bluetooth host layer","id":"CVE-2021-3329","kev_date_added":null,"published":"2023-02-26"},{"cvss_score":9.6,"headline":"DoS: Invalid Initialization in le_read_buffer_size_complete","id":"CVE-2023-0397","kev_date_added":null,"published":"2023-01-19"},{"cvss_score":9.6,"headline":"Usb bluetooth device ACL read cb buffer overflow","id":"CVE-2021-3966","kev_date_added":null,"published":"2023-01-11"}],"sources":[{"class":"attribution","licence":"CVE Terms of Use (MITRE)","name":"CVE List","prefix":"CVE"},{"class":"attribution","licence":"US public information, NVD API terms","name":"NVD"},{"class":"attribution","licence":"CWE Terms of Use","name":"CWE (MITRE)"},{"class":"attribution","licence":"FIRST CVSS licence","name":"CVSS (FIRST)"}],"ssvc":{"automatable":"no","exploitation":"none","technical_impact":"partial"},"state":"PUBLISHED","updated":"2026-10-15","vendors":["zephyrproject"]},"summary":"A deadlock in the USB CDC-NCM driver causes permanent denial of service when a host suspends the bus during transmission, requiring a reboot to recover.","url":"https://insights.sbomify.com/CVE-2026-10647/"}