CVE-2026-23229 Overview
A race condition vulnerability has been identified in the Linux kernel's virtio-crypto driver. The vulnerability exists in the data virtqueue notification handling mechanism, where concurrent access from multiple processes can lead to queue corruption. When a virtual machine boots with a virtio-crypto PCI device and builtin backend, running cryptographic operations with multiple processes (such as OpenSSL benchmarks) can trigger the race condition, causing process hangs and data corruption errors.
The vulnerability manifests when the virtcrypto_done_task() function handles virtio done notifications without proper spinlock protection. This allows multiple processes to simultaneously access and modify shared queue data structures, leading to corrupted queue state and system instability.
Critical Impact
System instability and denial of service in virtualized environments using virtio-crypto for cryptographic operations. Multiple concurrent cryptographic processes can trigger queue corruption, causing process hangs and potential data integrity issues.
Affected Products
- Linux kernel with virtio-crypto driver enabled
- Virtual machines using virtio-crypto PCI devices
- Systems running OpenSSL with afalg engine on virtualized infrastructure
Discovery Timeline
- 2026-02-18 - CVE CVE-2026-23229 published to NVD
- 2026-02-19 - Last updated in NVD database
Technical Details for CVE-2026-23229
Vulnerability Analysis
This vulnerability is a race condition in the Linux kernel's virtio-crypto subsystem. The core issue stems from missing synchronization primitives in the virtqueue notification handling code. When multiple processes simultaneously perform cryptographic operations through the virtio-crypto driver, the data virtqueue can be accessed concurrently without proper mutual exclusion.
The error message dataq.0:id 3 is not a head! indicates that the virtqueue's internal data structures have become corrupted due to unsynchronized concurrent access. This corruption occurs because multiple execution contexts can interleave their operations on the shared virtqueue, leading to inconsistent state where queue descriptors are processed out of order or multiple times.
The vulnerability primarily affects virtualized environments where the virtio-crypto driver provides hardware-accelerated cryptographic operations to guest VMs. Systems running workloads that spawn multiple processes performing concurrent cryptographic operations (such as multi-process OpenSSL benchmarks) are particularly susceptible.
Root Cause
The root cause is the absence of spinlock protection in the virtcrypto_done_task() function when handling virtio done notifications. The data virtqueue requires serialized access to maintain consistency of its internal descriptor ring buffer and available/used ring structures. Without proper locking, concurrent invocations of the notification handler can corrupt these data structures.
The fix involves adding spinlock protection around the critical section in virtcrypto_done_task() to ensure atomic access to the shared virtqueue resources during notification processing.
Attack Vector
The vulnerability is triggered locally within a virtualized environment. An attacker or legitimate user running multiple concurrent cryptographic operations through the virtio-crypto driver can inadvertently trigger the race condition. While this is primarily a stability issue rather than a direct security exploit, it can be leveraged for denial of service attacks against systems relying on virtio-crypto for cryptographic operations.
The triggering condition can be reproduced using the following command pattern:
# This command pattern triggers the race condition
openssl speed -evp aes-128-cbc -engine afalg -seconds 10 -multi 32
This spawns 32 concurrent OpenSSL processes performing AES encryption operations through the afalg engine, which uses the virtio-crypto driver in virtualized environments. The concurrent access to the virtqueue without proper synchronization leads to the corruption.
Detection Methods for CVE-2026-23229
Indicators of Compromise
- Kernel log messages containing virtio_crypto virtio0: dataq.0:id X is not a head! error patterns
- Unexplained process hangs during cryptographic operations in virtualized environments
- System instability when running multi-process OpenSSL or similar crypto workloads with afalg engine
Detection Strategies
- Monitor kernel logs for virtio_crypto error messages indicating queue corruption
- Implement alerting on process hangs associated with cryptographic subsystem operations
- Track system stability metrics for VMs using virtio-crypto PCI devices
Monitoring Recommendations
- Configure syslog monitoring to capture and alert on virtio_crypto driver errors
- Deploy host-based monitoring to detect unusual patterns of process hangs in virtualized environments
- Implement kernel-level tracing on virtqueue operations for systems running critical cryptographic workloads
How to Mitigate CVE-2026-23229
Immediate Actions Required
- Update the Linux kernel to a patched version that includes spinlock protection for virtqueue notification handling
- Limit concurrent cryptographic process counts on affected systems until patches are applied
- Consider temporarily disabling virtio-crypto and using software-based cryptographic implementations as a workaround
Patch Information
The Linux kernel maintainers have released patches that add spinlock protection to the virtcrypto_done_task() function. Multiple patch commits are available across different kernel stable branches:
- Kernel commit 49c57c6c1089
- Kernel commit 552475d0b6ce
- Kernel commit 8ee8ccfd60bf
- Kernel commit c0a0ded3bb7f
- Kernel commit c9e594194795
- Kernel commit d6f0d5868086
- Kernel commit e69a7b0a71b6
Organizations should apply the appropriate patch for their kernel version from the upstream stable kernel repositories.
Workarounds
- Reduce the number of concurrent processes performing cryptographic operations through virtio-crypto
- Use software-based cryptographic engines instead of the afalg hardware-accelerated engine
- Implement process-level rate limiting for cryptographic workloads in affected VM environments
- Consider migrating critical cryptographic workloads to non-virtualized infrastructure until patches are deployed
# Verify current kernel version and check for virtio-crypto module
uname -r
lsmod | grep virtio_crypto
# If vulnerable, unload virtio-crypto module as temporary workaround
# (requires appropriate permissions and may impact dependent services)
modprobe -r virtio_crypto
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.


