Security Vulnerability Report
中文
CVE-2026-32726 CVSS 8.1 HIGH

CVE-2026-32726

Published: 2026-03-31 18:16:51
Last Modified: 2026-04-13 17:03:29

Description

SciTokens C++ is a minimal library for creating and using SciTokens from C or C++. Prior to version 1.4.1, scitokens-cpp is vulnerable to an authorization bypass in path-based scope validation. The enforcer used a simple string-prefix comparison when checking whether a requested resource path was covered by a token's authorized scope path. Because the check did not require a path-segment boundary, a token scoped to one path could incorrectly authorize access to sibling paths that merely started with the same prefix. This issue has been patched in version 1.4.1.

CVSS Details

CVSS Score
8.1
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N

Configurations (Affected Products)

cpe:2.3:a:scitokens:scitokens_cpp_library:*:*:*:*:*:*:*:* - VULNERABLE
SciTokens C++ < 1.4.1

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
# Conceptual PoC demonstrating the vulnerable logic import sys def check_scope_vulnerable(token_scope, request_path): """ Vulnerable implementation: Simple prefix check. This logic is present in versions < 1.4.1 """ return request_path.startswith(token_scope) def check_scope_secure(token_scope, request_path): """ Secure implementation: Checks for path segment boundary. """ if request_path == token_scope: return True # Ensure the scope is followed by a separator to match full segments only if request_path.startswith(token_scope + "/"): return True return False # Simulation Scenario # Attacker has a token scoped to '/project' token_scope = '/project' # Attacker attempts to access a sibling path '/project_secret' # which starts with '/project' but is a different resource. attack_path = '/project_secret' print(f"[*] Token Scope: {token_scope}") print(f"[*] Requested Path: {attack_path}") if check_scope_vulnerable(token_scope, attack_path): print(f"[+] Vulnerable Logic: Access GRANTED to {attack_path}") else: print(f"[-] Vulnerable Logic: Access DENIED") if check_scope_secure(token_scope, attack_path): print(f"[+] Secure Logic: Access GRANTED to {attack_path}") else: print(f"[-] Secure Logic: Access DENIED")

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-32726", "sourceIdentifier": "[email protected]", "published": "2026-03-31T18:16:50.997", "lastModified": "2026-04-13T17:03:28.610", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "SciTokens C++ is a minimal library for creating and using SciTokens from C or C++. Prior to version 1.4.1, scitokens-cpp is vulnerable to an authorization bypass in path-based scope validation. The enforcer used a simple string-prefix comparison when checking whether a requested resource path was covered by a token's authorized scope path. Because the check did not require a path-segment boundary, a token scoped to one path could incorrectly authorize access to sibling paths that merely started with the same prefix. This issue has been patched in version 1.4.1."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N", "baseScore": 8.1, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.8, "impactScore": 5.2}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-863"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:scitokens:scitokens_cpp_library:*:*:*:*:*:*:*:*", "versionEndExcluding": "1.4.1", "matchCriteriaId": "CC9F84FE-5692-462D-BA2B-D9703D8AFAD1"}]}]}], "references": [{"url": "https://github.com/scitokens/scitokens-cpp/commit/decfe2f00cb9cabbf1e17a3bb2cd4ea1bbbd8a73", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/scitokens/scitokens-cpp/security/advisories/GHSA-q5fm-fgvx-32jq", "source": "[email protected]", "tags": ["Exploit", "Vendor Advisory"]}, {"url": "https://github.com/scitokens/scitokens-cpp/security/advisories/GHSA-q5fm-fgvx-32jq", "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "tags": ["Exploit", "Vendor Advisory"]}]}}