A pool-operator can hijack host-level network routing and DNS resolution by setting defaultroute=true and peerdns=true on an attacker-chosen PIF via PIF.other_config. The defaultroute key causes all host outbound traffic to route through the selected PIF's gateway (helpers.ml:219-234). The peerdns key redirects DNS queries to the selected PIF's DNS server. This enables man-in-the-middle attacks on management and storage traffic, and DNS poisoning at the host level affecting all VMs and host services. PIF.other_config has the highest merge precedence in the other_config merge chain, overriding both Network.other_config and Pool.other_config values.
PIF.other_config is a Map(String, String) field writable by pool-operator that directly controls physical network interface behavior. The field has zero per-key RBAC and has the highest merge precedence in the nm.ml:112-120 merge chain.
The code path:
pool-operator calls PIF.add_to_other_config(pif, "defaultroute", "true")helpers.ml:219-234 selects the first PIF with defaultroute=true as the gateway interfacehelpers.ml:254-267 selects the first PIF with peerdns=true as the DNS interfaceWith defaultroute control, the attacker can:
peerdns, poison DNS resolution to redirect connections to attacker infrastructureMissing RBAC protection. PIF.other_config has zero map_keys_roles entries. The defaultroute and peerdns keys are writable by pool-operator.
Missing validation. No check verifies that the PIF selected as default gateway is the intended management interface.
Highest merge precedence. PIF.other_config overrides Network.other_config and Pool.other_config in the merge chain, making PIF-level injection authoritative.
Insufficient logging. No security alert is generated when the default route or DNS interface is changed.
| Scenario | Impact | Pre-conditions | Status |
|---|---|---|---|
| Management traffic MITM | Intercept XAPI API calls between pool members | pool-operator, multiple PIFs | Source-traced |
| DNS poisoning | Redirect host DNS resolution to attacker-controlled server | pool-operator, peerdns=true | Source-traced |
| Storage traffic redirection | Route storage I/O through attacker-controlled gateway | pool-operator, routing affects storage network | Modeled |
| Via BOC-1 chain | vm-admin escalates to pool-operator, then hijacks routing | BOC-1 available | Modeled (chained) |
PIF.other_config for defaultroute and peerdns changes/etc/resolv.conf for unexpected DNS server changesdisclosure/vendor-detection-guidance.mdPIF.other_config for defaultroute and peerdns keysRestrict to pool-admin. Protect defaultroute and peerdns via map_keys_roles at _R_POOL_ADMIN.
Validation gate. Verify that only the designated management PIF can be set as the default route.
Upstream patches exist. They are held privately pending coordinated disclosure.
Disclosure:
helpers.ml:219-234 (defaultroute selection), helpers.ml:254-267 (peerdns selection), nm.ml:112-120 (merge precedence)disclosure/advisories/poc-security-advisory.md (POC-2)research/investigations/pif-other-config.mdDiscovered and reported by Jakob Wolffhechel, Moksha.