CVE-2022-0669 Overview
A resource exhaustion vulnerability was discovered in DPDK (Data Plane Development Kit) that affects the vhost-user library. This flaw allows a malicious vhost-user master to attach an unexpected number of file descriptors as ancillary data to VHOST_USER_GET_INFLIGHT_FD and VHOST_USER_SET_INFLIGHT_FD messages that are not properly closed by the vhost-user slave. By continuously sending such malformed messages, an attacker can exhaust all available file descriptors in the vhost-user slave process, leading to a denial of service condition.
Critical Impact
Local attackers with low privileges can cause service disruption in virtualized network environments by exhausting file descriptors, potentially affecting containerized workloads and virtual machine networking.
Affected Products
- DPDK Data Plane Development Kit (versions 19.11 through 22.03 RC releases)
- Open vSwitch (versions 2.13.0 and 2.15.0)
- Red Hat OpenShift Container Platform 4.0
Discovery Timeline
- 2022-08-29 - CVE-2022-0669 published to NVD
- 2024-11-21 - Last updated in NVD database
Technical Details for CVE-2022-0669
Vulnerability Analysis
This vulnerability exists in the vhost-user protocol implementation within DPDK's lib/vhost/vhost_user.c file. The vhost-user protocol enables efficient communication between a virtual machine's virtio devices and the host's vhost backend. When processing inflight messages (VHOST_USER_GET_INFLIGHT_FD and VHOST_USER_SET_INFLIGHT_FD), the vhost-user slave component failed to properly validate the number of file descriptors attached to incoming messages before processing them.
The vulnerability is classified under CWE-400 (Uncontrolled Resource Consumption), indicating a fundamental issue with resource management where the system does not adequately limit the consumption of file descriptors.
Root Cause
The root cause stems from missing input validation in the message handling functions within the vhost-user library. Prior to the security fix, the code did not verify that the number of attached file descriptors matched the expected count for inflight messages. This oversight allowed malicious actors to attach arbitrary file descriptors that would remain open and unclosed, gradually depleting the available file descriptor pool in the vhost-user slave process.
Attack Vector
The attack requires local access to the system with low privileges. An attacker operating as a malicious vhost-user master can craft specially formed messages containing excessive file descriptors and send them to the vhost-user slave. Since the vulnerability does not require user interaction and can impact resources beyond the vulnerable component (changed scope), it poses a significant risk to availability in multi-tenant virtualization environments.
The attack flow involves:
- Establishing a vhost-user connection as a master
- Sending continuous VHOST_USER_GET_INFLIGHT_FD or VHOST_USER_SET_INFLIGHT_FD messages with unexpected file descriptors attached
- The slave process accumulates unclosed file descriptors until exhaustion
- Service denial occurs when the process can no longer open new file descriptors
int numa_node = SOCKET_ID_ANY;
void *addr;
+ if (validate_msg_fds(dev, ctx, 0) != 0)
+ return RTE_VHOST_MSG_RESULT_ERR;
+
if (ctx->msg.size != sizeof(ctx->msg.payload.inflight)) {
VHOST_LOG_CONFIG(ERR, "(%s) invalid get_inflight_fd message size is %d\n",
dev->ifname, ctx->msg.size);
Source: GitHub DPDK Commit
The patch introduces a call to validate_msg_fds() to verify that the expected number of file descriptors (zero in this case) matches what was received, returning an error before processing if validation fails.
Detection Methods for CVE-2022-0669
Indicators of Compromise
- Abnormally high number of open file descriptors in vhost-user slave processes
- Repeated "too many open files" errors in system logs from DPDK-based applications
- Unusual patterns of VHOST_USER_GET_INFLIGHT_FD or VHOST_USER_SET_INFLIGHT_FD messages in vhost communication logs
- Service failures in Open vSwitch or other DPDK-dependent networking components
Detection Strategies
- Monitor file descriptor usage for DPDK processes using /proc/<pid>/fd counts and alert on anomalous growth patterns
- Implement logging for vhost-user message types and frequencies to detect message flooding attempts
- Deploy system-level monitoring for file descriptor exhaustion conditions using tools like lsof or custom metrics collection
- Use SentinelOne Singularity platform to monitor process behavior and detect resource exhaustion attack patterns
Monitoring Recommendations
- Set up alerts for processes approaching system file descriptor limits (ulimit -n)
- Monitor vhost-user socket activity for unusual connection patterns or message volumes
- Track DPDK application availability and restart events that may indicate DoS conditions
- Implement baseline metrics for normal file descriptor usage in virtualization infrastructure
How to Mitigate CVE-2022-0669
Immediate Actions Required
- Update DPDK to a patched version that includes commit af74f7db384ed149fe42b21dbd7975f8a54ef227
- Review and update Open vSwitch installations to versions with backported fixes
- For Red Hat OpenShift Container Platform 4.0 environments, apply the latest security updates from Red Hat
- Implement network segmentation to limit access to vhost-user sockets from untrusted sources
Patch Information
The vulnerability has been addressed in DPDK through commit af74f7db384ed149fe42b21dbd7975f8a54ef227. This fix adds proper file descriptor validation for inflight messages, ensuring that unexpected file descriptors are rejected before they can cause resource exhaustion.
Affected vendors have released security advisories:
Workarounds
- Increase the file descriptor limit for DPDK processes as a temporary measure to extend time before exhaustion occurs
- Restrict access to vhost-user sockets using file permissions and SELinux/AppArmor policies
- Implement process-level resource limits and monitoring to automatically restart affected services
- Consider isolating vhost-user communication paths in high-security environments
# Configuration example
# Increase file descriptor limits for DPDK processes (temporary mitigation)
# Add to /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
# Restrict vhost-user socket permissions
chmod 700 /var/run/openvswitch/
chown root:root /var/run/openvswitch/
# Monitor file descriptor usage for DPDK processes
watch -n 5 'ls -la /proc/$(pgrep -f dpdk)/fd | wc -l'
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.


