Summary
Review and raise dependency floors in pyproject.toml where there is a known, reachable
security advisory, using the reproducible evidence base from #1949 as the source of truth. This is a
single tracking issue with a tiered checklist (one coordinated PR, or a few small ones).
Governing principles (per the #1949 discussion):
Depends on #1949 (evidence base first). Already landed: cryptography>=50 and the cbor2
runtime split (#1947).
Tier 1 — runtime deps on the reachable attack surface (raise)
autobahn processes untrusted WAMP input with these and/or uses them for TLS/crypto, so advisories are
reachable. (Provisional — confirm each against #1949.)
| Dep |
Current |
Proposed |
Advisory (to verify via #1949) |
msgpack |
>=1.0.2 |
>=1.2.1 |
CVE-2026-57585 / GHSA-6v7p-g79w-8964 — OOB read / UAF on Unpacker reuse after a caught decode error; directly relevant to WAMP MessagePack decoding |
ujson |
>=4.0.2 |
>=5.13.0 |
CVE-2026-54911 / GHSA-3j69-69wj-xqx2 — affects ≤5.12.1, fixed 5.13.0 |
brotli |
>=1.0.0 |
>=1.2.0 |
Decompression-bomb hardening (urllib3 guidance, CVE-2026-44432 scenario); complements autobahn's own compressed-payload fix (CVE-2026-77528, 26.7.1) |
brotlicffi |
>=1.0.0 |
>=1.2.0.0 |
Allocation/resource-exhaustion below 1.2.0.0 |
pyopenssl ([encryption]) |
>=20.0.1 |
>=26.0.0 |
CVE-2026-27459 (DTLS cookie buffer overflow) + CVE-2026-27448 (TLS callback fail-open), fixed 26.0.0 |
pynacl ([encryption]) |
>=1.4.0 |
>=1.6.2 |
CVE-2025-69277 — libsodium 1.0.20 update in 1.6.2 (cryptosign signing primitive) |
Already done (#1947): cryptography>=50, cbor2>=6.1.0(CPython)/==5.9.0(PyPy).
Tier 2 — dev/build tools (raise; zero downstream cost)
These execute locally in dev/CI, not in consumers' installs. (Provisional — confirm via #1949.)
Tier 3 — deliberate call, decision deferred until #1949 evidence exists
| Dep |
Current |
Candidate |
Notes |
twisted ([twisted],[dev]) |
>=22.10.0 |
>=26.4.0? |
CVE-2026-42304 (twisted.names DNS-compression DoS, fixed 26.4.0rc2/26.4.0). Biggest downstream impact — a hard floor forces all consumers up. Leaning to bump anyway: autobahn is a library but is also used to implement listening servers (WebSocket), and 22.10.0→26.4.0 almost certainly spans multiple CVEs. Decide once #1949 produces a real evidence base showing the exact advisories in that range and their reachability. |
Explicitly NOT changing (documented — no advisory / not reachable)
Keep the compatibility floor; do not bump on age alone: txaio, cffi, hyperlink,
importlib-resources, u-msgpack-python, zope.interface, attrs, service-identity
(its own cryptography>=47 need is already covered by our >=50), pytrie, qrcode, base58,
argon2-cffi, passlib (1.7.4 is latest upstream; maintenance concern, not a CVE), docs extras, etc.
Acceptance criteria
Notes / links
Summary
Review and raise dependency floors in
pyproject.tomlwhere there is a known, reachablesecurity advisory, using the reproducible evidence base from #1949 as the source of truth. This is a
single tracking issue with a tiered checklist (one coordinated PR, or a few small ones).
Governing principles (per the #1949 discussion):
only for a declared dependency where the advisory is reachable through autobahn's own use
(or where the dep is a dev/build tool, which costs consumers nothing).
driver — do not add direct pins for transitive/unused deps; push those upstream to the owning dep.
IDs below are the starting proposal from a manual audit and MUST be reconciled against the
autobahn-security-evidence-<tag>.zipartifact before the implementing PR merges. Exploitability /applicability stays a human call (recorded in the [CI/Security] Automated dependency-audit workflow (pip-audit + osv-scanner) publishing a reproducible security evidence base as a nightly-release artifact #1949 annotations/allowlist).
Depends on #1949 (evidence base first). Already landed:
cryptography>=50and the cbor2runtime split (#1947).
Tier 1 — runtime deps on the reachable attack surface (raise)
autobahn processes untrusted WAMP input with these and/or uses them for TLS/crypto, so advisories are
reachable. (Provisional — confirm each against #1949.)
msgpack>=1.0.2>=1.2.1Unpackerreuse after a caught decode error; directly relevant to WAMP MessagePack decodingujson>=4.0.2>=5.13.0brotli>=1.0.0>=1.2.0brotlicffi>=1.0.0>=1.2.0.0pyopenssl([encryption])>=20.0.1>=26.0.0pynacl([encryption])>=1.4.0>=1.6.2Already done (#1947):
cryptography>=50,cbor2>=6.1.0(CPython)/==5.9.0(PyPy).Tier 2 — dev/build tools (raise; zero downstream cost)
These execute locally in dev/CI, not in consumers' installs. (Provisional — confirm via #1949.)
wheel([build-tools],[dev])>=0.36.2>=0.38.1pytest([dev])>=3.4.2>=9.0.3pyyaml([dev])>=4.2b4>=6.0.2setuptools([dev])>=70.0.0>=83.0.0jinja2([benchmark])>=3.0.0>=3.1.6Tier 3 — deliberate call, decision deferred until #1949 evidence exists
twisted([twisted],[dev])>=22.10.0>=26.4.0?22.10.0→26.4.0almost certainly spans multiple CVEs. Decide once #1949 produces a real evidence base showing the exact advisories in that range and their reachability.Explicitly NOT changing (documented — no advisory / not reachable)
Keep the compatibility floor; do not bump on age alone:
txaio,cffi,hyperlink,importlib-resources,u-msgpack-python,zope.interface,attrs,service-identity(its own
cryptography>=47need is already covered by our>=50),pytrie,qrcode,base58,argon2-cffi,passlib(1.7.4 is latest upstream; maintenance concern, not a CVE), docs extras, etc.ecdsa/ Minerva (CVE-2024-23342): N/A. autobahn's onlyecdsause is secp256k1 BIP32derivation math (
mnemonic.py), never P-256 signing; signing is Ed25519 (nacl). No floor neededon Minerva grounds. (CVE-2026-33936 DER-parse DoS is also not reachable — derivation consumes raw
32-byte scalars, not DER keys.) Record as an allowlist entry in [CI/Security] Automated dependency-audit workflow (pip-audit + osv-scanner) publishing a reproducible security evidence base as a nightly-release artifact #1949.
autobahn + zlmdb pair of issues (a Python package scan cannot bump vendored C++, and the version
is locked to zlmdb via
check_zlmdb_flatbuffers_version_in_sync()).numpyviabjdata) are recorded informationally, not turnedinto direct floors.
Acceptance criteria
pyproject.toml; CHANGELOG26.9.1"Security"/"Dependencies" entries added.>=26.4.0, or documented deferral) based on the evidence base.just install-devresolves cleanly on CPython + PyPy; CI green.Notes / links
application's deployed environment (that is a separate boundary — see [CI/Security] Automated dependency-audit workflow (pip-audit + osv-scanner) publishing a reproducible security evidence base as a nightly-release artifact #1949).