Skip to content

chore(security): ignore CVE-2026-49265 in oauthlib, which UKIP neither ships nor runs - #419

Merged
keilynrp merged 1 commit into
mainfrom
chore/pip-audit-oauthlib-cve-2026-49265
Sep 29, 2026
Merged

keilynrp merged 1 commit into
mainfrom
chore/pip-audit-oauthlib-cve-2026-49265

Conversation

@keilynrp

Copy link
Copy Markdown
Collaborator

CVE-2026-49265 / GHSA-xpv3-w29h-x7cv was published on 2026-09-29, and pip-audit has failed on every PR since (#418 included). It is a timing side channel in oauthlib's PKCE code_verifier comparison, fixed in 4.0.0.

Why it's ignored

  1. Not shipped. oauthlib is lock-only, reached through chromadb → kubernetes → requests-oauthlib. A pip install --dry-run --report -r requirements.txt -c requirements.lock resolved 97 packages without any of them. The dry-run ran on Python 3.12; the image uses 3.13.
  2. Not reachable. The flaw is in the authorization server's PKCE verification. UKIP issues no OAuth codes: its SSO is an Authlib client, and nothing in backend/ imports oauthlib.

The fix is a major version under a dependency the image doesn't install. It waits for requests-oauthlib/kubernetes to accept 4.x; review by 2026-10-31.

Changes

  • security.yml: --ignore-vuln CVE-2026-49265, with the reason inline.
  • SECURITY_GATES.md §7e: a row plus a dated review note, per the ratchet convention. The count goes from 5 to 6.

Verified

  • pip-audit 2.10.1 with the six flags: No known vulnerabilities found, 8 ignored.
  • The same run shows drift for the review due 2026-09-30: the chromadb findings are now emitted as PYSEC-2026-3813/3814/3815, not the CVE IDs the flags use. They are still held through aliases. This is recorded, not changed here.

🤖 Generated with Claude Code

…r ships nor runs

Published 2026-09-29 and failing every PR since: a timing side channel in
oauthlib's PKCE code_verifier comparison, fixed in 4.0.0.

It is ignored with a disposition in SECURITY_GATES.md §7e, for two
independent reasons. oauthlib is lock-only, reached through chromadb ->
kubernetes -> requests-oauthlib, and a dry-run install of requirements.txt
with the lock resolved 97 packages without any of them. And the flaw is in
the authorization server's PKCE check; UKIP issues no OAuth codes, its SSO is
an Authlib client, and nothing in backend/ imports oauthlib. Forcing a major
oauthlib into the lock under a package the image does not install would buy
nothing, so it waits for requests-oauthlib/kubernetes to accept 4.x; review
by 2026-10-31.

pip-audit 2.10.1 with the six flags: No known vulnerabilities found, 8
ignored. The same run shows the chromadb findings now emitted as
PYSEC-2026-3813/3814/3815 rather than the CVE IDs the flags use, still held
through aliases; recorded for the baseline review due 2026-09-30.

Co-Authored-By: Claude Opus 5.5 <[email protected]>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 6a05aef33c

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +372 to +375
Re-verified with pip-audit 2.10.1: without ignores it reports the rows above;
with all six flags, `No known vulnerabilities found, 8 ignored`. It also shows
drift for the next review (2026-09-30): pip-audit now emits the three chromadb
findings as `PYSEC-2026-3813/3814/3815`, not the CVE IDs the flags use. The

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Reconcile the baseline with the new audit result

This new verification makes §7e internally contradictory: lines 327–341 still say that the no-ignore run reports exactly five rows, that five vulnerabilities are ignored, and that every entry uses pip-audit's canonical ID, while this paragraph reports six flags/eight ignored findings and confirms that three configured IDs are now aliases. During the next exception review, operators cannot determine which output is the authoritative baseline; update or remove the stale five-entry verification and canonical-ID claim as part of this change.

Useful? React with 👍 / 👎.

@keilynrp
keilynrp merged commit 442c396 into main Sep 29, 2026
53 checks passed
@keilynrp
keilynrp deleted the chore/pip-audit-oauthlib-cve-2026-49265 branch September 29, 2026 23:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant