HIGH
rxrpc Ticket Validation
CVE-2026-31696
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
KernelScan AI3.3LOW
01Description
In the Linux kernel, the following vulnerability has been resolved: rxrpc: Fix missing validation of ticket length in non-XDR key preparsing In rxrpc_preparse(), there are two paths for parsing key payloads: the XDR path (for large payloads) and the non-XDR path (for payloads <= 28 bytes). While the XDR path (rxrpc_preparse_xdr_rxkad()) correctly validates the ticket length against AFSTOKEN_RK_TIX_MAX, the non-XDR path fails to do so. This allows an unprivileged user to provide a very large ticket length. When this key is later read via rxrpc_read(), the total token size (toksize) calculation results in a value that exceeds AFSTOKEN_LENGTH_MAX, triggering a WARN_ON(). [ 2001.302904] WARNING: CPU: 2 PID: 2108 at net/rxrpc/key.c:778 rxrpc_read+0x109/0x5c0 [rxrpc] Fix this by adding a check in the non-XDR parsing path of rxrpc_preparse() to ensure the ticket length does not exceed AFSTOKEN_RK_TIX_MAX, bringing it into parity with the XDR parsing logic.
02KernelScan AI Analysis
Risk summary
An unprivileged local user can trigger a kernel warning by providing an oversized ticket length in RxRPC key payloads. This causes a WARN_ON() when the key is later read, potentially causing log spam but no memory corruption or privilege escalation.
Vulnerability analysis
The vulnerability exists in rxrpc_preparse() where the non-XDR parsing path fails to validate ticket length against AFSTOKEN_RK_TIX_MAX, unlike the XDR path which correctly performs this check. An attacker can provide a very large ticket length value, which later causes toksize calculation to exceed AFSTOKEN_LENGTH_MAX during rxrpc_read(), triggering a WARN_ON(). The fix adds the missing validation check in the non-XDR path to ensure ticket length does not exceed AFSTOKEN_RK_TIX_MAX. This is a local attack requiring low privileges to access the key subsystem, with impact limited to kernel warnings rather than memory corruption.
03Fix Versions
| Branch | Fixed in | Patch commit |
|---|---|---|
| 5.10 | 5.10.258 | 44714dfda386 |
| 5.15 | 5.15.209 | 41a117dd8037 |
| 6.1 | 6.1.175 | 9a397aa9b5e5 |
| 6.12 | 6.12.84 | 4458757c0205 |
| 6.18 | 6.18.25 | ce383ba61533 |
| 6.6 | 6.6.136 | 1fa36cf495b0 |
| 7.0 | 7.0.2 | a1be1c9ece26 |
| mainline | 7.1-rc1 | ac33733b10b4 |