CVE-2023-53667: net: cdc_ncm: Deal with too low values of dwNtbOutMaxSize
In the Linux kernel, the following vulnerability has been resolved:
net: cdc_ncm: Deal with too low values of dwNtbOutMaxSize
Currently in cdc_ncm_check_tx_max(), if dwNtbOutMaxSize is lower than
the calculated "min" value, but greater than zero, the logic sets
tx_max to dwNtbOutMaxSize. This is then used to allocate a new SKB in
cdc_ncm_fill_tx_frame() where all the data is handled.
For small values of dwNtbOutMaxSize the memory allocated during
alloc_skb(dwNtbOutMaxSize, GFP_ATOMIC) will have the same size, due to
how size is aligned at alloc time:
size = SKB_DATA_ALIGN(size);
size += SKB_DATA_ALIGN(sizeof(struct skb_shared_info));
Thus we hit the same bug that we tried to squash with
commit 2be6d4d16a084 ("net: cdc_ncm: Allow for dwNtbOutMaxSize to be unset or zero")
Low values of dwNtbOutMaxSize do not cause an issue presently because at
alloc_skb() time more memory (512b) is allocated than required for the
SKB headers alone (320b), leaving some space (512b - 320b = 192b)
for CDC data (172b).
However, if more elements (for example 3 x u64 = [24b]) were added to
one of the SKB header structs, say 'struct skb_shared_info',
increasing its original size (320b [320b aligned]) to something larger
(344b [384b aligned]), then suddenly the CDC data (172b) no longer
fits in the spare SKB data area (512b - 384b = 128b).
Consequently the SKB bounds checking semantics fails and panics:
skbuff: skb_over_panic: text:ffffffff831f755b len:184 put:172 head:ffff88811f1c6c00 data:ffff88811f1c6c00 tail:0xb8 end:0x80 dev:<NULL>
------------[ cut here ]------------
kernel BUG at net/core/skbuff.c:113!
invalid opcode: 0000 [#1] PREEMPT SMP KASAN
CPU: 0 PID: 57 Comm: kworker/0:2 Not tainted 5.15.106-syzkaller-00249-g19c0ed55a470 #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 04/14/2023
Workqueue: mld mld_ifc_work
RIP: 0010:skb_panic net/core/skbuff.c:113 [inline]
RIP: 0010:skb_over_panic+0x14c/0x150 net/core/skbuff.c:118
[snip]
Call Trace:
<TASK>
skb_put+0x151/0x210 net/core/skbuff.c:2047
skb_put_zero include/linux/skbuff.h:2422 [inline]
cdc_ncm_ndp16 drivers/net/usb/cdc_ncm.c:1131 [inline]
cdc_ncm_fill_tx_frame+0x11ab/0x3da0 drivers/net/usb/cdc_ncm.c:1308
cdc_ncm_tx_fixup+0xa3/0x100
Deal with too low values of dwNtbOutMaxSize, clamp it in the range
[USB_CDC_NCM_NTB_MIN_OUT_SIZE, CDC_NCM_NTB_MAX_SIZE_TX]. We ensure
enough data space is allocated to handle CDC data by making sure
dwNtbOutMaxSize is not smaller than USB_CDC_NCM_NTB_MIN_OUT_SIZE.
Security readout for executives and security teams
Plain-English summary
CVE-2023-53667 is a Linux kernel networking driver flaw that can trigger a kernel panic when the CDC NCM USB networking code accepts an output size that is too small. The documented impact is system crash or denial of service, not data theft or remote code execution.
Executive priority
Treat this as a targeted stability risk for Linux systems using CDC NCM USB networking. Prioritize normal kernel patching, with faster action for workstations, appliances, labs, or servers exposed to untrusted USB devices.
Technical view
In cdc_ncm_check_tx_max(), a positive but undersized dwNtbOutMaxSize could become tx_max. Later cdc_ncm_fill_tx_frame() allocates an SKB using that size, leaving insufficient room for CDC data after SKB metadata alignment. The fix clamps dwNtbOutMaxSize between USB_CDC_NCM_NTB_MIN_OUT_SIZE and CDC_NCM_NTB_MAX_SIZE_TX.
Likely exposure
Exposure is most relevant to Linux systems running affected kernel versions with the cdc_ncm USB networking driver reachable through CDC NCM devices or equivalent test paths. The source lists affected Linux kernel version lines but does not define distribution package status.
Exploitation context
The bundle shows no KEV listing and provides no evidence of active exploitation. The crash trace appears from syzkaller-style kernel testing. The source does not prove practical exploitation in production environments or define a remote attack path.
Researcher notes
The key condition is accepting a too-low dwNtbOutMaxSize that still becomes tx_max. The patch direction is bounds clamping, not a broader driver redesign. Public scoring, CWE mapping, and real-world exploitability are not provided in the bundle.
Mitigation direction
Update to a vendor kernel containing the referenced stable cdc_ncm fix.
Confirm distribution backports rather than relying only on upstream version numbers.
Disable or avoid CDC NCM USB networking where it is not operationally required.
Monitor Linux vendor advisories for package-specific remediation guidance.
Validation and detection
Inventory Linux kernel versions across systems that can use USB networking.
Check whether the cdc_ncm driver is present, loaded, or required.
Verify vendor changelogs include the stable fix or equivalent backport.
Review kernel logs for skb_over_panic traces involving cdc_ncm.
Prioritize validation on hosts accepting untrusted USB or network-adapter hardware.
Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.
Potential ATT&CK relevance
Conservative CVE-to-ATT&CK context
These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.
ATT&CK lookup starting points
Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.
cve · low confidence lookup
CVE-2023-53667 mapping review
Open the CVE-to-ATT&CK bridge for reviewed, inferred, or future official mappings tied to this CVE.
These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.
0CVSS vectors
3Timeline events
0ADP providers
9Source links
Vulnerability timeline
Timeline events are normalized from CVE metadata, CNA source timelines, ADP timelines, and KEV metadata when present.
CVE reservedCVE Program
The CVE ID was reserved by the assigning CNA.
CVE publishedCVE Program
The CVE record was published.
Oct 7, 2025, 15:21 UTC (UTC+00:00)
CVE updatedCVE Program
The CVE record metadata indicates this as the latest update time.