---
id: "CVE-2026-99131"
kind: "vulnerability"
aliases: ["CVE-2026-99131"]
title: "Linux kernel XFS: capability check lets users bypass group quota limits"
severity: "unknown"
cvss: null
epss: null
exploited: false
status: "open"
category: "infrastructure"
products: []
ecosystems: []
tags: ["infrastructure", "kernel", "linux", "nfs", "self-hosted", "xfs"]
not_affected_if: ["no-nfs-client-access", "no-xfs-quotas"]
published_at: "2026-10-28T11:17:32+00:00"
first_seen_at: "2026-10-28T11:32:35+00:00"
updated_at: "2026-10-28T11:36:15+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-99131", "first_seen_at": "2026-10-28T11:32:35+00:00"}]
---

# Linux kernel XFS: capability check lets users bypass group quota limits

The Linux kernel XFS filesystem checked the wrong credential set for a capability, so a user could change a file's group ID to another group they belong to and skip quota accounting. The result is that a user can exceed a group's quota hard limit.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

- unknown

## Fix

- unknown

## Timeline

- 2026-10-28T11:32:35+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-99131

## From the sources

In the Linux kernel, the following vulnerability has been resolved:

xfs: fix capability check in xfs

An user reported a bug where he managed to evade group's quota
by changing a file's gid to a different group id the same user
belonged to, even though quotas were enforced on both gids and the
file's size was big enough to exceed the quota's hardlimit.

Commit eba0549bc7d1 replaced a capable() call by a
has_capability_noaudit() to prevent unnecessary selinux audit messages.
Turns out that both calls have slightly different semantics even though
their documentation seems similar. Where in a nutshell:

capable() - Tests the task's effective credentials
has_ns_capability_noaudit() - Tests the task's real credentials

This most of the time has no practical difference but in some cases like
changing attrs (specifically group id in this case) through a NFS client
this will allow the quota code to use XFS_QMOPT_FORCE_RES, effectively
bypassing quota accounting checks.

Using instead ns_capable_noaudit() should fix this issue and prevent
selinux audit messages.

This also fix the remaining calls to has_capability_noaudit()

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
