Summary
autobahn vendors FlatBuffers as a Git submodule, currently
deps/flatbuffers at 7e163021e59cca4f8e1e35a7c828b5c6b7915953 (v25.12.19), and also ships a
built flatc. Since v25.12.19, upstream has landed a cluster of verifier-hardening and
out-of-bounds fixes that are directly relevant because autobahn may parse
attacker-controlled FlatBuffers (verifier / reflection / FlexBuffers paths) and the bundled
flatc may be run against untrusted schemas.
Bump the vendored submodule to the latest upstream revision (pinned commit SHA) available at 26.9.1
release time, regenerate any generated code, and rebuild the bundled flatc.
This MUST be coordinated with zlmdb (see the companion zlmdb issue): both vendor FlatBuffers and
autobahn.check_zlmdb_flatbuffers_version_in_sync() + test_zlmdb_flatbuffers_in_sync assert the two
versions are equal. zlmdb is currently at the same commit (7e163021, v25.12.19). Bumping one
without the other turns that test red. Land both to the same target commit.
Why (relevant upstream fixes since v25.12.19)
A Python package scanner will not flag vendored C++, so this is an engineering-review item. Upstream
has addressed, among others:
- FlexBuffers verifier /
ToString() heap-buffer-overflow — a malformed buffer passes
verification and then triggers an OOB read in ToString() (upstream issue #9041, reported CVSS 7.5 High).
- Reflection verifier hardening against malformed schemas.
- OOB checks in
memcpy_downward.
- FlexBuffers OOB protection in
Map::Keys().
- OOB protection in
GetBufferStartFromRootPointer().
- Text-generation OOB fixes.
- Additional verifier hardening for malformed schemas and field IDs.
That is a significant cluster for a serialization library exposed to untrusted input.
What to do
Acceptance criteria
Notes / links
Summary
autobahn vendors FlatBuffers as a Git submodule, currently
deps/flatbuffersat7e163021e59cca4f8e1e35a7c828b5c6b7915953(v25.12.19), and also ships abuilt
flatc. Since v25.12.19, upstream has landed a cluster of verifier-hardening andout-of-bounds fixes that are directly relevant because autobahn may parse
attacker-controlled FlatBuffers (verifier / reflection / FlexBuffers paths) and the bundled
flatcmay be run against untrusted schemas.Bump the vendored submodule to the latest upstream revision (pinned commit SHA) available at 26.9.1
release time, regenerate any generated code, and rebuild the bundled
flatc.This MUST be coordinated with zlmdb (see the companion zlmdb issue): both vendor FlatBuffers and
autobahn.check_zlmdb_flatbuffers_version_in_sync()+test_zlmdb_flatbuffers_in_syncassert the twoversions are equal. zlmdb is currently at the same commit (
7e163021, v25.12.19). Bumping onewithout the other turns that test red. Land both to the same target commit.
Why (relevant upstream fixes since v25.12.19)
A Python package scanner will not flag vendored C++, so this is an engineering-review item. Upstream
has addressed, among others:
ToString()heap-buffer-overflow — a malformed buffer passesverification and then triggers an OOB read in
ToString()(upstream issue #9041, reported CVSS 7.5 High).memcpy_downward.Map::Keys().GetBufferStartFromRootPointer().That is a significant cluster for a serialization library exposed to untrusted input.
What to do
deps/flatbufferssubmodule to that commit identical to zlmdb's.flatc.__version__accordingly.autobahn.check_zlmdb_flatbuffers_version_in_sync()passes against the coordinated zlmdb bump.test_zlmdb_flatbuffers_in_sync; CI green on CPython + PyPy.26.9.1"Security" entry.Acceptance criteria
deps/flatbuffersat the chosen post-25.12.19 commit, equal to zlmdb's vendored commit.flatcregenerated from the new revision.Notes / links
check_zlmdb_flatbuffers_version_in_sync()docstring(autobahn = data-in-transit, zlmdb = data-at-rest; both must share a compatible FlatBuffers runtime
for Crossbar.io interop).