A vm-admin in XAPI-based hypervisors (XenServer, XCP-ng) can disable NIC offload features on virtual network interfaces by setting ethtool-tso=off, ethtool-gso=off, and other ethtool-* keys in VIF.other_config. The VIF hotplug script (vif-real:85-97) reads these keys from xenstore and executes /sbin/ethtool -K <dev> <feature> <on|off> on the VIF backend device. Disabling offloads forces the host CPU to perform TCP/UDP segmentation in software for that VIF's traffic, increasing CPU utilization. When offloads are disabled on multiple VIFs, the cumulative effect degrades host performance for all co-located VMs. The VIF.other_config field has zero map_keys_roles entries.
VIF.other_config is a Map(String, String) field defined at datamodel.ml:3914-3917 with no ~writer_roles override and no ~map_keys_roles. It inherits _R_VM_ADMIN from the VIF class default.
For standard VIFs, xenopsd applies a whitelist filter at device.ml:827-829 that restricts the keys written to xenstore to 7 known values: promiscuous, ethtool-rx, ethtool-tx, ethtool-sg, ethtool-tso, ethtool-ufo, ethtool-gso. The ethtool keys pass through the whitelist.
The VIF hotplug script at vif-real:85-97:
handle_ethtool()
{
local opt=$1
local arg=$(xenstore-read "${PRIVATE}/other-config/ethtool-${opt}" 2>/dev/null)
if [ $? -eq 0 -a -n "${arg}" ] ; then
case "${arg}" in
true|on) /sbin/ethtool -K "${dev}" "${opt}" on ;;
false|off) /sbin/ethtool -K "${dev}" "${opt}" off ;;
*) logger -t scripts-vif "Unknown ethtool argument ..." ;;
esac
fi
}
The script validates values against true|on|false|off - this is adequate value validation. Invalid values are logged and ignored. The security concern is the missing RBAC: a vm-admin can disable offloads on any VIF they control, affecting host-level CPU utilization.
The offload features controllable from VIF.other_config:
ethtool-rx - receive checksum offloadethtool-tx - transmit checksum offloadethtool-sg - scatter-gatherethtool-tso - TCP segmentation offloadethtool-ufo - UDP fragmentation offloadethtool-gso - generic segmentation offloadMissing RBAC protection. VIF.other_config has zero map_keys_roles entries. All ethtool-* keys are writable by vm-admin, the lowest delegated management role.
Host-level impact from VM-level operation. Disabling offloads on a VIF backend device increases host CPU utilization, affecting all co-located VMs - not just the VIF's own VM.
No rate limiting or aggregate impact assessment. XAPI does not limit how many VIFs can have offloads disabled or assess the cumulative CPU impact.
set_other_config RBAC bypass. The set_other_config method replaces the entire map atomically and bypasses map_keys_roles per-key checks.
| Scenario | Impact | Pre-conditions | Status |
|---|---|---|---|
| VIF offload disablement | Host CPU increase for VIF's traffic processing | vm-admin, VIF on running VM | Source-traced |
| Multi-VIF CPU saturation | Cumulative offload disablement across many VIFs degrades host | vm-admin with multiple VMs/VIFs | Modeled |
| Co-located VM performance impact | Neighbor VMs experience CPU contention from software segmentation | vm-admin, shared host | Modeled |
| BOC-1 chain | vm-admin disables offloads on all VIFs pool-wide via root access | vm-admin, BOC-1 | Source-traced |
VIF.other_config for ethtool-* key changes=off or =false) on VIF backend devicesdisclosure/vendor-detection-guidance.mdVIF.other_config entries for unexpected ethtool-* settingsAdd map_keys_roles protection. Restrict ethtool-* keys to _R_POOL_ADMIN in datamodel.ml. NIC offload configuration on a VIF backend device is a host infrastructure operation, not a VM administration operation.
Move offload control to a dedicated field. Replace the ethtool-* other_config keys with a dedicated VIF field that has proper RBAC and validation.
Upstream patches exist. They are held privately pending coordinated disclosure.
Disclosure:
datamodel.ml:3914-3917 (VIF.other_config field definition, zero map_keys_roles), device.ml:112-115 (vif_udev_keys whitelist), device.ml:827-829 (whitelist filter in Vif.add), vif-real:85-97 (ethtool script with value validation)disclosure/advisories/vif-security-advisory.md (VIOC-4)research/investigations/vif-other-config.mdDiscovered and reported by Jakob Wolffhechel, Moksha.