Repository navigation
osv-scanner: time-boxed ignores for the 2026-09-29 oauthlib/PyJWT advisories (unblocks the required check) - #517
Conversation
…ewed locks GHSA-hj66-6f7g-4r5v and GHSA-xpv3-w29h-x7cv (oauthlib 3.3.1, fixed in 4.0.0) and GHSA-w6j9-cwv2-h6wq (PyJWT 2.13.0, fixed in 2.14.0) were published on 2026-09-29. Since then every pull_request run of the required osv-scanner check has failed (runs 36613233591, 36617653508 and 36618373159) with five Medium findings: all three advisories in blueprints/runtime-workers/openhands/requirements.lock and the two oauthlib ones in the frozen Lumibot lock of the SPY one_zero engine trial. Neither lock is relocked here. The Lumibot lock is a frozen evaluation record, and the OpenHands lock is a live recipe whose owner relocks it. Each advisory gets an [[IgnoredVulns]] entry until 2026-10-13. IGNORE_SCOPES names the fixed versions, and IGNORE_ALLOWED_LOCKS allows the two locks at their reviewed sha256. The Lumibot entry now names the new record as its evidence, and that record carries forward the 2026-09-26 nltk and setuptools review. The non-reachability review (evidence/receipts/osv-oauthlib-pyjwt-reachability-20260929.json) searched every hash-verified artifact of both locks: - Nothing constructs an oauthlib RevocationEndpoint with enable_jsonp, and nothing imports oauthlib's grant types, endpoints or servers. - PyJWT's JWK Set API appears only in the LiteLLM proxy server and in google-auth's ID-token verification. The recipe runs neither, and no installed package calls them. The closure decision record lists each entry with its evidence and expiry plan. On 2026-10-13 the scan fails again on the Lumibot lock by design. Local runs of the CI scan command (pinned OSV-Scanner 2.6.0, sha256-checked): - before, exit 1: "Total 3 packages affected by 5 known vulnerabilities (0 Critical, 0 High, 5 Medium, 0 Low, 0 Unknown) from 1 ecosystem." - after, exit 0: "No issues found". Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Hot-file protocol (docs/lanes.md): re-registers the three changed registered files and adds the new evidence record: - .github/osv-scanner.toml - docs/decisions/2026-09-22-github-automation-closure.md - tests/test_osv_lockfile_coverage.py - evidence/receipts/osv-oauthlib-pyjwt-reachability-20260929.json (new) Registration used host_receipts.register_file. component_matrix.py --write and new_host_grand_list.py --write left their reports unchanged. validate.py passed with 8157 hashed files. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
|
Trading lane acknowledgement (
No objection. |
….0, < 4.0.0) and pair lines 49/61 with s256/plain (verifier D1, D2) Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
|
Head moved from |
Scope
This unblocks the required
osv-scannercheck, which has failed on every new PR head since three Medium advisories were published on 2026-09-29. CI runs 36613233591, 36617653508 and 36618373159 all failed on the same five findings.lane:shared. It widens the trading-owned Lumibot lock allowance intests/test_osv_lockfile_coverage.py, so the trading lane's acknowledgement is needed.[[IgnoredVulns]]entries to.github/osv-scanner.toml, each withignoreUntil = 2026-10-13(14 days, well under the 90-day cap) and a concrete non-reachability reason:IGNORE_ALLOWED_LOCKSchanges:blueprints/runtime-workers/openhands/requirements.lockis added, pinned at sha25602d0a7f0….…/spy-one-zero-20260926/lumibot/lockcheck/lumibot.lockentry gains the two oauthlib advisories. It pins PyJWT 2.15.0, which is already fixed.docs/decisions/2026-09-22-github-automation-closure.md, with the new receiptevidence/receipts/osv-oauthlib-pyjwt-reachability-20260929.json.Reachability evidence (a static search, recorded in the receipt):
enable_jsonpand oauthlib's server grant and endpoint modules have 0 hits in both.RevocationEndpointandAuthorizationCodeGranthits are Authlib's own code, which never imports oauthlib.PyJWKSetandPyJWKappear only underlitellm/proxy/, andPyJWKClientonly in google-authid_token.py:144, which none of the other artifacts calls.Expiry plan (the ignores apply repo-wide by id, so every PR fails again on 2026-10-13 unless one of these lands first):
token-save-practice-e2e-status) relocks onto oauthlib 4.0.0 and PyJWT 2.14.0, and in the same PR deletes the OpenHands allowlist entry and the PyJWT ignore.SOTA sources
osv-scanner_linux_amd64sha256ca69b3d3cd08f889a49dc0a383122f71cc528b83803671df5fd874d97485b108), the workflow's pinned release, run locally exactly as.github/workflows/security-scan.ymlruns it..github/osv-scanner.tomlheader,tests/test_osv_lockfile_coverage.pyanddocs/decisions/2026-09-22-github-automation-closure.md.Evidence-class table
Local commands run
python3 -m unittest tests.test_osv_lockfile_coverage: exit 0,Ran 30 tests,OK.python3 scripts/validate.py: exit 0,"status": "passed".scripts/git-hooks/pre-push: 3 OK.Decision record
docs/decisions/2026-09-22-github-automation-closure.md: one dated entry per ignore, with evidence and expiry plan.Host evidence
None.
Checklist
🤖 Generated with Claude Code