Medium, CVSS 5.3PyPIAmendedPublished
pydantic-settings: NestedSecretsSettingsSource follows symlinks outside secrets_dir, enabling local file read and bypassing secrets_dir_max_size
CVE-2026-58203 · GHSA-4xgf-cpjx-pc3j
- Affected
- PyPI pydantic-settings >= 2.12.0, < 2.14.2
- Fixed in
- 2.14.2· Vendor fix available
- Issue
- NestedSecretsSettingsSource reads secret values from files in a configured secretsdir. When secretsnestedsubdir=True, a directory entry inside secretsdir that is a symbolic link pointing outside secretsdir is followed, so files outside the configured directory are read into settings values. The same code path bypasses the documented secretsdirmaxsize protection. An attacker or lower-privileged component able to influence entries in the configured secrets directory (for example, a writable or shared secrets mount) can turn this into an unintended local file read into settings and can defeat the advertised loading-size cap. This report does not claim network reachability by itself. Details NestedSecretsSettingsSource performed two passes over secretsdir using two different, inconsistent directory-traversal implementations: The size check in validatesecretspath() used Path.glob('/'), which does not descend into a symbolically-linked directory. The loader in loadsecrets() used…
Recommended action: Upgrade to 2.14.2 or later, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.