Ggshield: tuf has platform-dependent delegation path matching
A platform-dependent path pattern matching issue exists in python-tuf's delegation implementation used by ggshield. On Windows, path matching is case-insensitive due to the use of fnmatch.fnmatch, which applies os.path.normcase that lowercases input on Windows but not on POSIX systems. This causes authorization decisions to differ by OS, violating the TUF specification. An attacker controlling a delegation role with a path pattern differing only by case can exploit this on Windows clients to override legitimate delegations. The vulnerability affects ggshield versions >=1.50.3 and <1.51.0_1 and has a medium severity rating with a CVSS score of 4. A fix is available by replacing fnmatch.fnmatch with fnmatch.fnmatchcase to ensure consistent case-sensitive matching across platforms.
AI Analysis
Technical Summary
The vulnerability arises from python-tuf's use of fnmatch.fnmatch for delegation path pattern matching, which internally normalizes case differently on Windows (case-insensitive) versus POSIX systems (case-sensitive). This discrepancy leads to inconsistent authorization of target paths depending on the client's OS. Specifically, on Windows, an attacker controlling a delegation role with a path pattern differing only in case from a legitimate delegation can have their targets authorized first due to delegation ordering, violating TUF's security guarantees. The vulnerable code is in tuf/api/_payload.py in the _is_target_in_pathpattern method. The recommended fix is to replace fnmatch.fnmatch with fnmatch.fnmatchcase, which does not perform case normalization and thus behaves consistently across platforms.
Potential Impact
The impact is a violation of the TUF specification's security guarantees on Windows clients, allowing an attacker controlling a delegation role with a case-colliding path pattern to override legitimate delegations and potentially serve unauthorized targets. This could lead to integrity violations in software update processes on affected Windows clients. The vulnerability does not affect Linux or macOS clients due to their case-sensitive path matching.
Mitigation Recommendations
A patch is available that replaces the use of fnmatch.fnmatch with fnmatch.fnmatchcase in the python-tuf code used by ggshield. Users should upgrade to a fixed version beyond 1.51.0_1 where this change is applied. No additional mitigation is required if the patch is applied.
Ggshield: tuf has platform-dependent delegation path matching
Description
A platform-dependent path pattern matching issue exists in python-tuf's delegation implementation used by ggshield. On Windows, path matching is case-insensitive due to the use of fnmatch.fnmatch, which applies os.path.normcase that lowercases input on Windows but not on POSIX systems. This causes authorization decisions to differ by OS, violating the TUF specification. An attacker controlling a delegation role with a path pattern differing only by case can exploit this on Windows clients to override legitimate delegations. The vulnerability affects ggshield versions >=1.50.3 and <1.51.0_1 and has a medium severity rating with a CVSS score of 4. A fix is available by replacing fnmatch.fnmatch with fnmatch.fnmatchcase to ensure consistent case-sensitive matching across platforms.
CVSS v3.1
Score 4.0medium
Affected software
Run on your own infrastructure? Check whether these packages are installed with threat-finder — our free open-source scanner.
AI-Powered Analysis
Machine-generated threat intelligence
Technical Analysis
The vulnerability arises from python-tuf's use of fnmatch.fnmatch for delegation path pattern matching, which internally normalizes case differently on Windows (case-insensitive) versus POSIX systems (case-sensitive). This discrepancy leads to inconsistent authorization of target paths depending on the client's OS. Specifically, on Windows, an attacker controlling a delegation role with a path pattern differing only in case from a legitimate delegation can have their targets authorized first due to delegation ordering, violating TUF's security guarantees. The vulnerable code is in tuf/api/_payload.py in the _is_target_in_pathpattern method. The recommended fix is to replace fnmatch.fnmatch with fnmatch.fnmatchcase, which does not perform case normalization and thus behaves consistently across platforms.
Potential Impact
The impact is a violation of the TUF specification's security guarantees on Windows clients, allowing an attacker controlling a delegation role with a case-colliding path pattern to override legitimate delegations and potentially serve unauthorized targets. This could lead to integrity violations in software update processes on affected Windows clients. The vulnerability does not affect Linux or macOS clients due to their case-sensitive path matching.
Mitigation Recommendations
A patch is available that replaces the use of fnmatch.fnmatch with fnmatch.fnmatchcase in the python-tuf code used by ggshield. Users should upgrade to a fixed version beyond 1.51.0_1 where this change is applied. No additional mitigation is required if the patch is applied.
Technical Details
- Gcve Source
- db.gcve.eu
- Osv Id
- BREW-ggshield-GHSA-qp9x-wp8f-qgjj
- Osv Schema Version
- 1.7.3
- Ecosystems
- ["Homebrew"]
- Cvss Version
- 3.1
Threat ID: 6aac8e2955bf5e2cf5490b3b
Added to database: 09/18/2026, 01:04:41 UTC
Last enriched: 09/18/2026, 01:40:11 UTC
Last updated: 09/18/2026, 02:08:00 UTC
Views: 4
Community Reviews
0 reviewsCrowdsource mitigation strategies, share intel context, and vote on the most helpful responses. Sign in to add your voice and help keep defenders ahead.
Want to contribute mitigation steps or threat intel context? Sign in or create an account to join the community discussion.
Actions
Updates to AI analysis require Pro Console access. Upgrade inside Console → Billing.
External Links
Need more coverage?
Upgrade to Pro Console for AI refresh and higher limits.
For incident response and remediation, OffSeq services can help resolve threats faster.
Latest Threats
Check if your credentials are on the dark web
Instant breach scanning across billions of leaked records. Free tier available.