This is a path traversal vulnerability in the profile import mechanism of compliance-trestle, a tool for managing OSCAL compliance profiles. The flaw lives in the URI resolution logic that handles imports[].href references within OSCAL profiles. When importing a profile, the code joins the trestle workspace root with the imported href value and calls .resolve() — a natural, intuitive implementation that was never subjected to adversarial review.
The vulnerability exists because the import mechanism was designed under an implicit trust assumption: that OSCAL profiles originate from legitimate internal sources. This assumption was never interrogated during threat modeling, despite the fact that profile chaining and cross-referencing is the core value proposition of the OSCAL ecosystem. The feature works correctly for authorized users, which is why it went undetected.
The patch in versions 3.12.3 and 4.0.3 adds a boundary check to prevent traversal beyond trestle_root. However, the critical question is whether this check exists on every other URI resolution path in the codebase, or whether this fix is narrowly scoped to just this vector. Given the low EPSS score (0.00371), current exploitability appears constrained by deployment context — this is typically a server-side tool processing internal profiles. But if compliance-trestle shifts toward community registries or multi-tenant profile sharing, the attack surface expands significantly.
The irony is stark: a governance tool that enables security compliance workflows contains a vulnerability that would only matter in scenarios the tool's design actively encourages. Organizations should audit all import and resolution paths in their compliance-trestle deployments, not just apply the patch, to ensure no similar patterns exist elsewhere.