Repository navigation
Conversation
anyio before 4.14.2 can validate internationalized host names after they were converted with IDNA 2003 instead of IDNA 2008 in connect_tcp() and TLSStream.wrap() (CVE-2026-63374). httpx reaches both through its anyio backend. Update the lockfile only: anyio 4.10.0 -> 4.15.1. Poetry also refreshes the updated package's own dependency, typing-extensions 4.14.1 -> 4.16.0. Co-Authored-By: Claude Code <noreply@anthropic.com>
The lockfile bump only fixes this repository's resolved environment. Add a direct floor so installs of the published splunk-ao wheel also require anyio >= 4.14.2 (CVE-2026-63374), matching the existing security-floor entries for cryptography, pyjwt, idna and requests. poetry.lock only changes its content-hash; resolved versions are unchanged. Co-Authored-By: Claude Code <noreply@anthropic.com>
etserend
marked this pull request as ready for review
October 21, 2026 00:44
etserend
commented
Oct 21, 2026
etserend
left a comment
Contributor
Author
There was a problem hiding this comment.
🤖 This review was generated by the Astra agent (claude-opus-5-5). It may contain mistakes.
Verdict: approve — The lock upgrade and the direct floor fix CVE-2026-63374 for the root package, and I found no conflicting constraints or broken dependencies.
Follow-ups
Suggested follow-up work that could be tracked as Jira tickets:
examples/agent/startup-simulator-3000/requirements.txt:2-2: Three example apps still pin vulnerable anyio versions:examples/agent/startup-simulator-3000/requirements.txt:2pinsanyio==4.9.0.examples/rag/elastic-chatbot-rag-app/requirements.txt:15pinsanyio==4.9.0.examples/logging-samples/openai-responses/requirements.txt:5pinsanyio==4.12.1.
All three are below the 4.14.2 fix. FOSSA can raise new tickets for them. Users who copy these examples also get the vulnerable version. Bump the pins to>=4.14.2in a separate change.
7 of 8 tasks
Bump anyio in the example requirements files to 4.14.2 (4.15.1 would force typing-extensions>=4.16.0, which conflicts with their existing pins) and refresh the langgraph-fsi-agent "before" poetry.lock (anyio 4.15.1, typing-extensions 4.16.0). Co-Authored-By: Claude Code <noreply@anthropic.com>
etserend
commented
Oct 21, 2026
etserend
left a comment
Contributor
Author
There was a problem hiding this comment.
🤖 This review was generated by the Astra agent (claude-opus-5-5). It may contain mistakes.
Verdict: approve — The lock upgrade, the direct anyio floor and the example pins all move anyio past 4.14.2, and I found no conflicting constraints.
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fixes CVE-2026-63374 in anyio (fixed in 4.14.2): upgrades the locked version from 4.10.0 to 4.15.1 and adds a direct
anyio >=4.14.2floor so installs of the published package also get the fix.Before 4.14.2,
connect_tcp()andTLSStream.wrap()can validate internationalized host names after they were converted with IDNA 2003 instead of IDNA 2008. If a connection to a non-ASCII domain is hijacked or redirected, an attacker can obtain a legitimate certificate for the different ASCII hostname that IDNA 2003 produces, and the client accepts it.splunk-aodoes not call these functions directly, but httpx's async path reaches both through its anyio backend (httpcore/_backends/anyio.py).Changes
pyproject.toml: addanyio = ">=4.14.2"under[tool.poetry.dependencies], as a security-floor-only entry with the same comment style as the existingcryptographyfloor. The published wheel will listRequires-Dist: anyio (>=4.14.2), the same way the existingpyjwt,idnaandrequestsfloors appear today.poetry.lock: anyio4.10.0->4.15.1, and the content-hash for thepyproject.tomlchange.typing-extensions4.14.1->4.16.0in the lock. anyio 4.15.1 itself requirestyping_extensions >=4.16.0, andtyping-extensionsis a direct dependency ofsplunk-ao(>=4.5.0), so the new version is within its existing constraint. This is a forced side effect of the anyio upgrade, not a separate change.Test plan
poetry check --lock: passestests/test_deployment.py: 32 passedmaintoday.invoke type-check: no issues in 118 source filesNot verified: a built wheel from this branch (the
Requires-Distclaim above is based on how the released 0.5.0 wheel treats the other floors in the same block).ruff check src testsreports existing findings in files this PR does not touch.Example apps
Example manifests that pinned vulnerable anyio versions are updated in the same PR:
examples/agent/startup-simulator-3000/requirements.txt(4.9.0),examples/rag/elastic-chatbot-rag-app/requirements.txt(4.9.0) andexamples/logging-samples/openai-responses/requirements.txt(4.12.1) now pinanyio==4.14.2. This is the fixed release that still works with the oldertyping-extensionspins in those files (4.15.1 would requiretyping-extensions>=4.16.0).examples/agent/langgraph-fsi-agent/before/poetry.lock: anyio4.9.0->4.15.1and the forcedtyping-extensions4.14.1->4.16.0, generated withpoetry update anyio --lock(content-hash unchanged).Checked with
pip install --dry-runbefore and after:startup-simulator-3000resolves both times.elastic-chatbot-rag-app(nohalo==0.0.31on PyPI) andopenai-responses(galileo-core==3.84.0conflicts withsplunk-ao) fail identically before and after, so those failures are not caused by this change and are left alone.🤖 Generated with Claude Code