CVE-2026-23143: virtio_net: Fix misalignment bug in struct virtnet_info
In the Linux kernel, the following vulnerability has been resolved:
virtio_net: Fix misalignment bug in struct virtnet_info
Use the new TRAILING_OVERLAP() helper to fix a misalignment bug
along with the following warning:
drivers/net/virtio_net.c:429:46: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]
This helper creates a union between a flexible-array member (FAM)
and a set of members that would otherwise follow it (in this case
`u8 rss_hash_key_data[VIRTIO_NET_RSS_MAX_KEY_SIZE];`). This
overlays the trailing members (rss_hash_key_data) onto the FAM
(hash_key_data) while keeping the FAM and the start of MEMBERS aligned.
The static_assert() ensures this alignment remains.
Notice that due to tail padding in flexible `struct
virtio_net_rss_config_trailer`, `rss_trailer.hash_key_data`
(at offset 83 in struct virtnet_info) and `rss_hash_key_data` (at
offset 84 in struct virtnet_info) are misaligned by one byte. See
below:
struct virtio_net_rss_config_trailer {
__le16 max_tx_vq; /* 0 2 */
__u8 hash_key_length; /* 2 1 */
__u8 hash_key_data[]; /* 3 0 */
/* size: 4, cachelines: 1, members: 3 */
/* padding: 1 */
/* last cacheline: 4 bytes */
};
struct virtnet_info {
...
struct virtio_net_rss_config_trailer rss_trailer; /* 80 4 */
/* XXX last struct has 1 byte of padding */
u8 rss_hash_key_data[40]; /* 84 40 */
...
/* size: 832, cachelines: 13, members: 48 */
/* sum members: 801, holes: 8, sum holes: 31 */
/* paddings: 2, sum paddings: 5 */
};
After changes, those members are correctly aligned at offset 795:
struct virtnet_info {
...
union {
struct virtio_net_rss_config_trailer rss_trailer; /* 792 4 */
struct {
unsigned char __offset_to_hash_key_data[3]; /* 792 3 */
u8 rss_hash_key_data[40]; /* 795 40 */
}; /* 792 43 */
}; /* 792 44 */
...
/* size: 840, cachelines: 14, members: 47 */
/* sum members: 801, holes: 8, sum holes: 35 */
/* padding: 4 */
/* paddings: 1, sum paddings: 4 */
/* last cacheline: 8 bytes */
};
As a result, the RSS key passed to the device is shifted by 1
byte: the last byte is cut off, and instead a (possibly
uninitialized) byte is added at the beginning.
As a last note `struct virtio_net_rss_config_hdr *rss_hdr;` is also
moved to the end, since it seems those three members should stick
around together. :)
Security readout for executives and security teams
Plain-English summary
This Linux kernel issue affects the virtio network driver. A receive-side scaling key can be sent to a virtual network device shifted by one byte, potentially adding an uninitialized byte and dropping the last key byte. Business impact is unclear because the source provides no CVSS score, exploit report, or concrete attack outcome.
Executive priority
Track and remediate through normal kernel patch governance unless vendor guidance raises impact. No active exploitation is cited, but virtualized Linux fleets should be checked because virtio_net is common in cloud and hypervisor environments.
Technical view
The bug is a struct layout misalignment in virtio_net involving a flexible array member in virtio_net_rss_config_trailer and rss_hash_key_data in virtnet_info. The fix uses TRAILING_OVERLAP() to align the RSS trailer data and key storage so the device receives the intended key bytes.
Likely exposure
Exposure appears limited to Linux systems using the virtio_net driver, especially virtualized environments with virtio networking and RSS. The source lists Linux 6.15, 6.18.7, and 6.19 as affected, with specific stable commits and 6.12.91 listed as unaffected.
Exploitation context
The bundle does not identify active exploitation, and KEV is false. The available description indicates a correctness and possible uninitialized-data issue in kernel driver data passed to a device, but does not establish remote exploitability or privilege impact.
Researcher notes
Key unknowns are security impact, affected range interpretation, and distro backport status. The strongest source evidence is the kernel fix description: RSS key data was misaligned by one byte, causing key truncation and possible insertion of an uninitialized leading byte.
Mitigation direction
Check kernel vendor advisories for CVE-2026-23143 and distro-specific backports.
Update to a kernel containing the referenced stable fixes where applicable.
Prioritize virtualized systems using virtio_net and RSS for assessment.
If patching is delayed, review vendor guidance for supported workarounds.
Validation and detection
Inventory Linux kernel versions on hosts and guests using virtio networking.
Confirm whether virtio_net is loaded or built into deployed kernels.
Map installed kernels to vendor advisories or the referenced stable commits.
Document systems on listed affected versions pending vendor-confirmed fixes.
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-2026-23143 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
3Source 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.
Feb 14, 2026, 15:36 UTC (UTC+00:00)
CVE updatedCVE Program
The CVE record metadata indicates this as the latest update time.