What should happen
Read-only HTTP query recipes in tools/osv/tool.md and tools/cve-org/tool.md should execute via a closed catalogue through tools/vetted-ops (or a dedicated safe HTTP read dispatcher) rather than bare curl commands in Bash.
Why
As raised by @potiuk in #1297, the framework's recommended security posture (docs/setup/secure-agent-setup.md) explicitly denies Bash(curl *) to ensure network egress does not bypass sandbox proxies, enforced by tools/sandbox-lint. Consequently, adopters running under this recommended baseline encounter refused commands when executing the bare curl ... | jq recipes currently documented in tools/osv/ and tools/cve-org/.
Because both adapters perform exclusively read-only, unauthenticated lookups with a strictly closed parameter set (advisory IDs, package names + ecosystems + versions, commit SHAs), they possess the exact properties vetted-ops was designed to exploit: "a closed catalogue whose parameters can never become commands or flags".
Unifying both adapters under this dispatcher eliminates the deny-versus-adapter-recipes inconsistency across the entire security cross-referencing surface and allows adopters to run them safely with a single allow-entry rather than wildcard network rules.
Which layer
Tool / bridge (tools/<system>/)
Boundary conditions (optional)
- Dual Adapter Scope: As recommended during review,
tools/osv/ and tools/cve-org/ should be addressed together in the same change to keep the cross-reference surface coherent.
- Dispatcher Backend:
tools/vetted-ops currently delegates exclusively to gh. This requires either teaching the dispatcher a lightweight, non-gh HTTP read backend or providing a stdlib-only dispatcher helper under the tools.
- Downstream Compatibility: Output JSON structures should remain identical so existing downstream
jq consumers and triage pipelines continue functioning without churn.
Out of scope (optional)
- Writing, allocating, or publishing CVE records (mutating CNA actions remain strictly governed under
tools/cve-tool-vulnogram).
- Introducing new external network dependencies or third-party Python libraries.
References (optional)
What should happen
Read-only HTTP query recipes in
tools/osv/tool.mdandtools/cve-org/tool.mdshould execute via a closed catalogue throughtools/vetted-ops(or a dedicated safe HTTP read dispatcher) rather than barecurlcommands in Bash.Why
As raised by @potiuk in #1297, the framework's recommended security posture (
docs/setup/secure-agent-setup.md) explicitly deniesBash(curl *)to ensure network egress does not bypass sandbox proxies, enforced bytools/sandbox-lint. Consequently, adopters running under this recommended baseline encounter refused commands when executing the barecurl ... | jqrecipes currently documented intools/osv/andtools/cve-org/.Because both adapters perform exclusively read-only, unauthenticated lookups with a strictly closed parameter set (advisory IDs, package names + ecosystems + versions, commit SHAs), they possess the exact properties
vetted-opswas designed to exploit: "a closed catalogue whose parameters can never become commands or flags".Unifying both adapters under this dispatcher eliminates the deny-versus-adapter-recipes inconsistency across the entire security cross-referencing surface and allows adopters to run them safely with a single allow-entry rather than wildcard network rules.
Which layer
Tool / bridge (
tools/<system>/)Boundary conditions (optional)
tools/osv/andtools/cve-org/should be addressed together in the same change to keep the cross-reference surface coherent.tools/vetted-opscurrently delegates exclusively togh. This requires either teaching the dispatcher a lightweight, non-gh HTTP read backend or providing a stdlib-only dispatcher helper under the tools.jqconsumers and triage pipelines continue functioning without churn.Out of scope (optional)
tools/cve-tool-vulnogram).References (optional)
tools/cve-org/tool.mddocs/setup/secure-agent-setup.md