MOKSHA-2026-0024: NFS Mount Option Injection via PBD.device_config

Advisory IDMOKSHA-2026-0024
Semantic IDPDC-3
Published2026-04-24
CVSS 3.17.2 High
CVSS 3.1 VectorAV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:N
CVSS 4.07.3 High
CVSS 4.0 VectorAV:N/AC:L/AT:N/PR:H/UI:N/VC:H/VI:H/VA:N/SC:H/SI:L/SA:N
XAPI ObjectPBD
XAPI Fielddevice_config:options
Entry Rolepool-operator
ResearcherJakob Wolffhechel, Moksha

Affected Products

VendorProductVersions
Citrix / Cloud Software GroupXenServer / Citrix Hypervisorall versions (shared XAPI codebase)
VatesXCP-ng8.3.0

Summary

A pool-operator can inject arbitrary NFS mount options via PBD.device_config:options when creating or reconfiguring an NFS storage repository. The NFSSR driver appends these options directly to the mount.nfs command without sanitization. An attacker can inject sec=none (disable NFS authentication), noac (disable attribute caching - performance denial of service), or ro (force read-only) to weaken storage security or degrade performance. The attack was confirmed via live testing with all checks passing.

Vulnerability Description

PBD.device_config is the storage connection string for all SM drivers in XAPI-based hypervisors. The options key is consumed by the NFSSR driver during mount operations.

The data flow:

  1. pool-operator calls SR.create() with device_config = {server: "nfs-server", serverpath: "/export", options: "noac"}
  2. XAPI stores the PBD record with the unchecked options value
  3. On PBD.plug(), NFSSR reads device_config["options"]
  4. nfs.soft_mount() appends the options directly to the mount.nfs command: mount.nfs server:/export /mountpoint -o soft,noac
  5. The attacker-controlled mount options take effect

No validation occurs on the options value. Any string accepted by mount.nfs is applied.

Dangerous Options

Option Impact
sec=none Disables NFS security mechanism - unauthenticated access
noac Disables attribute caching - severe performance degradation, forces every metadata operation to round-trip to the server
ro Forces read-only mount - VMs cannot write to storage
noacl Disables POSIX ACL support
nosuid / noexec Alters execution policy on mounted filesystem

Root Causes

  1. Missing value validation. The options key accepts arbitrary strings and forwards them directly to mount.nfs.

  2. No mount option allowlist. The NFSSR driver does not maintain an allowlist of acceptable NFS mount options.

  3. Architectural trust assumption. The SM driver assumes device_config contains legitimate configuration from a trusted administrator. No mechanism distinguishes malicious options from legitimate ones.

Affected Systems

Directly Affected

Indirectly Affected

Exploitation Scenarios

Scenario Impact Pre-conditions Status
NFS security downgrade sec=none disables NFS authentication pool-operator, NFS SR Confirmed (live-tested)
Performance DoS noac disables attribute caching, causing severe I/O performance degradation pool-operator, NFS SR Confirmed (live-tested)
Read-only lockout ro prevents all writes to storage pool-operator, NFS SR Confirmed (live-tested)
Via BOC-1 chain vm-admin escalates to pool-operator via BOC-1, then injects mount options BOC-1 available Modeled (chained)

Detection

Remediation

Short-Term Mitigations

Long-Term Fix

Mount option allowlist. NFSSR should only accept known-safe NFS mount options. Reject sec=none, noac, and other dangerous options.

Write-time validation. Validate the options field against an allowlist at SR.create time, before the value is stored in the PBD.

Upstream patches exist. They are held privately pending coordinated disclosure.

Disclosure

Disclosure:

References

Credits

Discovered and reported by Jakob Wolffhechel, Moksha.

Jakob Wolffhechel · Moksha · Copenhagen
jakob@wolffhechel.dk · +45 3170 7337
Published 2026-04-24 08:00 CEST · cna.moksha.dk · shittrix.moksha.dk