Every CVE Search/ Get API key

CVE-2026-125113

XRootD: Path traversal in directory listing allows access to the parent directory via trailing ".." pattern

5.3 MediumFix available

The XRootD project provides a high-performance, fault-tolerant, and secure solution for handling large amounts of data distributed across multiple storage resources. Prior to version 5.9.2, XRootD's rpCheck() function in src/XrdXrootd/XrdXrootdXeq.cc rejects a parent-directory component only when two dots are followed by a slash and does not reject a terminal two-dot component. An unauthenticated attacker can append /.. to an exported path in xrdfs ls or an HTTP PROPFIND request, bypass the all.export directory scope, and cause directory and filename enumeration in the parent directory under oss.localroot. The demonstrated vector does not permit file download or disclose file contents. This issue is fixed in version 5.9.2.

Attack profile

How easy it is to exploit

Attack vector
Network
Complexity
Low
Privileges needed
None
User interaction
None

What an attacker can affect

Confidentiality
Low
Integrity
None
Availability
None

Exploit likelihood

0.34%Scored on 2026-11-10. The trend appears after a second daily score.

What each source reports

CVE List Score used 5.3

XRootD: Path traversal in directory listing allows access to the parent directory via trailing ".." pattern

The XRootD project provides a high-performance, fault-tolerant, and secure solution for handling large amounts of data distributed across multiple storage resources. Prior to version 5.9.2, XRootD's rpCheck() function in src/XrdXrootd/XrdXrootdXeq.cc rejects a parent-directory component only when two dots are followed by a slash and does not reject a terminal two-dot component. An unauthenticated attacker can append /.. to an exported path in xrdfs ls or an HTTP PROPFIND request, bypass the all.export directory scope, and cause directory and filename enumeration in the parent directory under oss.localroot. The demonstrated vector does not permit file download or disclose file contents. This issue is fixed in version 5.9.2.

Record
CVE-2026-125113
CVSS 3.1
5.3 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
Weakness
CWE-20, CWE-22
Updated
2026-11-10
EUVDEUVD-2026-120494 5.3

The XRootD project provides a high-performance, fault-tolerant, and secure solution for handling large amounts of data distributed across multiple storage resources. Prior to version 5.9.2, XRootD's rpCheck() function in src/XrdXrootd/XrdXrootdXeq.cc rejects a parent-directory component only when two dots are followed by a slash and does not reject a terminal two-dot component. An unauthenticated attacker can append /.. to an exported path in xrdfs ls or an HTTP PROPFIND request, bypass the all.export directory scope, and cause directory and filename enumeration in the parent directory under oss.localroot. The demonstrated vector does not permit file download or disclose file contents. This issue is fixed in version 5.9.2.

Record
EUVD-2026-120494
CVSS 3.1
5.3 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
Updated
2026-11-09
GitHub AdvisoriesGHSA-vj8v-p5vw-m6v5 5.3

xrootd has path traversal in directory listing that allows access to the parent directory via trailing ".." pattern

Summary

A path traversal vulnerability in XRootD allows users to escape the exported directory scope and enumerate the contents of the parent directory by appending /.. (specifically without trailing slash) to an exported path in xrdfs ls or HTTP PROPFIND requests.

This bypass ignores the all.export restriction.

Affected component

src/XrdXrootd/XrdXrootdXeq.cc, and more precisely the functions rpCheck() and Squash() used in do_Dirlist() (link), as they do not check if the path ends with ".." (without trailing slash). Then the path is passed directly to the filesystem layer.

PoC

Configuration

  • Configuration file:
xrd.port 1094

# Exposing only /alice/
oss.localroot /srv/xrootd/data/
all.export /alice/

# HTTP
xrd.protocol http:1094 libXrdHttp.so

# Logs / monitoring
all.adminpath /var/spool/xrootd
all.pidpath /var/run/xrootd
  • Filesystem layout on the server:
/srv/xrootd/data/
├── alice/       ← only exported directory
├── bob/         ← not exported
└── secret.txt   ← not exported
  • Starting the server: xrootd -c /etc/xrootd/xrootd.cfg

Steps to reproduce

Normal behavior (access outside export is denied):

$ xrdfs root://<xrootd-server> ls /
[ERROR] Server responded with an error: [3010] Stating path '/' is disallowed.

Bypass via trailing ..:

$ xrdfs root://<xrootd-server>ls /alice/..
/alice/../alice
/alice/../bob
/alice/../secret.txt

Also exploitable via HTTP PROPFIND:

curl -X PROPFIND 'http://<xrootd-server>:1094/alice/..' \
  --path-as-is \
  -H "Depth: 1"

Returns HTTP 200 with full listing of the parent directory, including unexported entries (bob/, secret.txt).

However, file download via this path traversal is blocked:

$ xrdcp root://<xrootd-server>/alice/../secret.txt .
[0B/0B][100%][==================================================][0B/s]  
Run: [ERROR] Server responded with an error: [3010] Opening relative path 'alice/../secret.txt' is disallowed. (source)

Impact

An attacker can enumerate directories and filenames outside the authorized export scope defined by all.export. In the example above, a server exporting only /alice/ leaks the existence of /bob/ and secret.txt located in the parent directory (oss.localroot).

File download is not possible through this vector, as xrdcp correctly rejects the path with error 3010. The impact seems therefore limited to information disclosure (directory and filename enumeration).

This vulnerability could affect all XRootD deployments regardless of authentication configuration, as it bypasses the export path restriction itself.

Suggested fix

In rpCheck() (src/XrdXrootd/XrdXrootdXeq.cc), change:

// Before
if (fn[0] == '.' && fn[1] == '.' && fn[2] == '/') return 1;

// After
if (fn[0] == '.' && fn[1] == '.' && (fn[2] == '/' || fn[2] == '\0')) return 1;
Record
GHSA-vj8v-p5vw-m6v5
CVSS 3.1
5.3 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
Weakness
CWE-20, CWE-22
Updated
2026-11-09
NVD 5.3

The XRootD project provides a high-performance, fault-tolerant, and secure solution for handling large amounts of data distributed across multiple storage resources. Prior to version 5.9.2, XRootD's rpCheck() function in src/XrdXrootd/XrdXrootdXeq.cc rejects a parent-directory component only when two dots are followed by a slash and does not reject a terminal two-dot component. An unauthenticated attacker can append /.. to an exported path in xrdfs ls or an HTTP PROPFIND request, bypass the all.export directory scope, and cause directory and filename enumeration in the parent directory under oss.localroot. The demonstrated vector does not permit file download or disclose file contents. This issue is fixed in version 5.9.2.

Record
CVE-2026-125113
CVSS 3.1
5.3 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
Weakness
CWE-20, CWE-22
Updated
2026-11-10
OSV 5.3

XRootD: Path traversal in directory listing allows access to the parent directory via trailing ".." pattern

The XRootD project provides a high-performance, fault-tolerant, and secure solution for handling large amounts of data distributed across multiple storage resources. Prior to version 5.9.2, XRootD's rpCheck() function in src/XrdXrootd/XrdXrootdXeq.cc rejects a parent-directory component only when two dots are followed by a slash and does not reject a terminal two-dot component. An unauthenticated attacker can append /.. to an exported path in xrdfs ls or an HTTP PROPFIND request, bypass the all.export directory scope, and cause directory and filename enumeration in the parent directory under oss.localroot. The demonstrated vector does not permit file download or disclose file contents. This issue is fixed in version 5.9.2.

Record
CVE-2026-125113
CVSS 3.1
5.3 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
Weakness
CWE-20, CWE-22
Updated
2026-11-11
OSVGHSA-vj8v-p5vw-m6v5 5.3

xrootd has path traversal in directory listing that allows access to the parent directory via trailing ".." pattern

Summary

A path traversal vulnerability in XRootD allows users to escape the exported directory scope and enumerate the contents of the parent directory by appending /.. (specifically without trailing slash) to an exported path in xrdfs ls or HTTP PROPFIND requests.

This bypass ignores the all.export restriction.

Affected component

src/XrdXrootd/XrdXrootdXeq.cc, and more precisely the functions rpCheck() and Squash() used in do_Dirlist() (link), as they do not check if the path ends with ".." (without trailing slash). Then the path is passed directly to the filesystem layer.

PoC

Configuration

  • Configuration file:
xrd.port 1094

# Exposing only /alice/
oss.localroot /srv/xrootd/data/
all.export /alice/

# HTTP
xrd.protocol http:1094 libXrdHttp.so

# Logs / monitoring
all.adminpath /var/spool/xrootd
all.pidpath /var/run/xrootd
  • Filesystem layout on the server:
/srv/xrootd/data/
├── alice/       ← only exported directory
├── bob/         ← not exported
└── secret.txt   ← not exported
  • Starting the server: xrootd -c /etc/xrootd/xrootd.cfg

Steps to reproduce

Normal behavior (access outside export is denied):

$ xrdfs root://<xrootd-server> ls /
[ERROR] Server responded with an error: [3010] Stating path '/' is disallowed.

Bypass via trailing ..:

$ xrdfs root://<xrootd-server>ls /alice/..
/alice/../alice
/alice/../bob
/alice/../secret.txt

Also exploitable via HTTP PROPFIND:

curl -X PROPFIND 'http://<xrootd-server>:1094/alice/..' \
  --path-as-is \
  -H "Depth: 1"

Returns HTTP 200 with full listing of the parent directory, including unexported entries (bob/, secret.txt).

However, file download via this path traversal is blocked:

$ xrdcp root://<xrootd-server>/alice/../secret.txt .
[0B/0B][100%][==================================================][0B/s]  
Run: [ERROR] Server responded with an error: [3010] Opening relative path 'alice/../secret.txt' is disallowed. (source)

Impact

An attacker can enumerate directories and filenames outside the authorized export scope defined by all.export. In the example above, a server exporting only /alice/ leaks the existence of /bob/ and secret.txt located in the parent directory (oss.localroot).

File download is not possible through this vector, as xrdcp correctly rejects the path with error 3010. The impact seems therefore limited to information disclosure (directory and filename enumeration).

This vulnerability could affect all XRootD deployments regardless of authentication configuration, as it bypasses the export path restriction itself.

Suggested fix

In rpCheck() (src/XrdXrootd/XrdXrootdXeq.cc), change:

// Before
if (fn[0] == '.' && fn[1] == '.' && fn[2] == '/') return 1;

// After
if (fn[0] == '.' && fn[1] == '.' && (fn[2] == '/' || fn[2] == '\0')) return 1;
Record
GHSA-vj8v-p5vw-m6v5
CVSS 3.1
5.3 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
Weakness
CWE-20, CWE-22
Updated
2026-11-09
OSVUBUNTU-CVE-2026-125113 5.3

The XRootD project provides a high-performance, fault-tolerant, and secure solution for handling large amounts of data distributed across multiple storage resources. Prior to version 5.9.2, XRootD's rpCheck() function in src/XrdXrootd/XrdXrootdXeq.cc rejects a parent-directory component only when two dots are followed by a slash and does not reject a terminal two-dot component. An unauthenticated attacker can append /.. to an exported path in xrdfs ls or an HTTP PROPFIND request, bypass the all.export directory scope, and cause directory and filename enumeration in the parent directory under oss.localroot. The demonstrated vector does not permit file download or disclose file contents. This issue is fixed in version 5.9.2.

Record
UBUNTU-CVE-2026-125113
CVSS 3.1
5.3 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
Updated
2026-11-11

Affected products

Affected packages

Affected packages
PackageAffectedFixed
xrootd
PyPI
before 5.9.2
5.9.2
xrootd
PyPI
before 5.9.2, plus listed versions
4.10.04.11.04.11.14.11.24.11.3
Show 45 moreShow less
4.12.04.12.24.12.34.12.44.12.54.12.64.12.74.8.44.8.54.9.04.9.15.0.05.0.15.0.25.0.35.1.15.2.05.3.05.3.15.3.25.3.35.3.45.4.05.4.15.4.25.4.35.5.05.5.15.5.25.5.35.5.45.5.55.6.05.6.15.6.25.6.35.6.45.6.55.6.65.6.75.6.85.6.95.7.05.7.15.7.2
5.9.2
xrootd
Ubuntu:22.04:LTS
All versions, plus listed versions
5.0.3-45.3.2-15.3.3-15.3.4-15.4.0-15.4.0-25.4.1-1
None known
xrootd
Ubuntu:24.04:LTS
All versions, plus listed versions
5.6.1-15.6.3-25.6.3-45.6.3-55.6.3-7
Show 6 moreShow less
5.6.3-85.6.4-15.6.7-15.6.9-15.6.9-1build15.6.9-2
None known
xrootd
Ubuntu:26.10
All versions, plus listed versions
5.9.1-3build16.0.0-46.0.3-16.1.0-16.1.0-1build1
None known
xrootd
Ubuntu:26.04:LTS
All versions, plus listed versions
5.8.4-25.9.0-15.9.1-15.9.1-25.9.1-35.9.1-3build1
None known

History

History
RecordedChangedSources
affected, aliases, referencesNVD, OSV
referencesCVE List
referencesNVD, OSV
description, references, severity, titleCVE List
aliases, products, referencesEUVD, OSV
aliases, facts, idGitHub Advisories
first indexedGitHub Advisories, OSV

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2026-125113 is a medium vulnerability (CVSS 5.3) in Xrootd, published April 10, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.34%, the 27th percentile. Fixed in xrootd 5.9.2.

References

Show 4 moreShow less
This page doesn't list everything

Left out here: 8 versions. The JSON record has them.

MoveEnter Open