Pin com.squareup.wire:wire-runtime to 6.4.7 to remediate CVE-2026-45799 - #26243
Pin com.squareup.wire:wire-runtime to 6.4.7 to remediate CVE-2026-45799#26243jamesnetherton wants to merge 1 commit into
Conversation
amazon-kinesis-client pulls software.amazon.glue:schema-registry-serde, which pins Square Wire at 5.2.0. skipGroup() before Wire 6.3.0 does not reject a negative LENGTH_DELIMITED length, so a crafted payload makes ProtoAdapter.decode(byte[]) throw an unchecked ArrayIndexOutOfBoundsException instead of the documented IOException. schema-registry-serde 1.1.27 is the latest release and is still on Wire 5.2.0, so the version is managed here. Only wire-runtime is bumped. wire-schema, wire-compiler and the Wire code generators stay at 5.2.0 because the Glue serde binds to com.squareup.wire.schema.internal.parser.ProtoFileElement, whose constructor gained a parameter in Wire 5.3.0 - aligning every Wire artifact breaks FileDescriptorUtils with a NoSuchMethodError. No Wire release has both the 9-arg constructor and the CVE fix, so splitting the versions is the only combination that satisfies both. wire-runtime is an empty Kotlin-Multiplatform metadata artifact; wire-runtime-jvm carries all the classes and is the entry that applies the fix. Both are pinned because the advisory lists both coordinates. Camel itself never reaches the vulnerable code: the Glue serde uses Wire only as a .proto schema-text parser, and the KCL consumer never enables the Glue schema registry. This removes a recurring false positive for downstream consumers. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
🌟 Thank you for your contribution to the Apache Camel project! 🌟 🐫 Apache Camel Committers, please review the following items:
|
gnodet
left a comment
There was a problem hiding this comment.
Clean, well-scoped CVE remediation.
The split-version approach (pinning only wire-runtime/wire-runtime-jvm to 6.4.7 while leaving wire-schema at 5.2.0) is the right call — upgrading wire-schema would break the Glue serde's ProtoFileElement 9-arg constructor call, and no Wire release has both the old constructor and the CVE fix.
Using component-level <dependencyManagement> instead of a parent-level managed dependency correctly limits the blast radius to camel-aws2-kinesis.
Verified:
wire-runtime6.4.7 exists on Maven Central (released 2026-08-25)- CVE-2026-45799 fix landed in Wire 6.3.0
- Property placement in
parent/pom.xmlfollows alphabetical sort convention
Claude Code on behalf of Guillaume Nodet
|
🧪 CI tested the following changed modules:
✅ POM dependency changes: targeted tests included Changed properties: squareup-wire-version Modules affected by dependency changes (1)
🔬 Scalpel shadow comparison — Scalpel: 9 tested, 27 compile-only — current: 9 all testedMaveniverse Scalpel detected 36 affected modules (current approach: 9).
|
| Module | Duration | Status |
|---|---|---|
| Camel :: YAML DSL | 55.1s | SUCCESS |
| Camel :: Endpoint DSL | 54.1s | SUCCESS |
| Camel :: JBang :: Plugin :: TUI | 14.0s | FAILURE |
| Camel :: Component DSL | 13.7s | SUCCESS |
| Camel :: Catalog :: Camel Catalog | 11.0s | SUCCESS |
| Camel :: Docs | 9.3s | SUCCESS |
| Camel :: JBang :: Plugin :: Kubernetes | 9.3s | SUCCESS |
| Camel :: JBang :: Plugin :: Testing | 6.1s | SUCCESS |
| Camel :: Catalog :: Camel Report Maven Plugin | 5.9s | SUCCESS |
| Camel :: Catalog :: Camel Route Parser | 5.3s | SUCCESS |
| Camel :: Kamelet Main | 5.2s | SUCCESS |
| Camel :: YAML DSL :: Deserializers | 4.2s | SUCCESS |
| Camel :: All Components Sync point | 3.3s | SUCCESS |
| Camel :: YAML DSL :: Validator | 3.3s | SUCCESS |
| Camel :: YAML DSL :: Maven Plugins | 2.2s | SUCCESS |
| Camel :: Catalog :: Suggest | 2.0s | SUCCESS |
| Camel :: YAML DSL :: Validator Maven Plugin | 1.9s | SUCCESS |
| Camel :: Catalog :: Maven | 1.3s | SUCCESS |
| Camel :: Catalog :: Dummy Component | 1.1s | SUCCESS |
| Camel :: Assembly | 0.8s | SUCCESS |
| Camel :: JBang :: Plugin :: MCP | 0.7s | SUCCESS |
| Camel :: JBang :: Plugin :: Validate | 0.7s | SUCCESS |
| Camel :: Endpoint DSL :: Support | 0.5s | SUCCESS |
| Camel :: Catalog :: Console | 0.4s | SUCCESS |
| Camel :: AWS2 Kinesis | n/a | |
| Camel :: Coverage | n/a | |
| Camel :: Integration Tests | n/a | |
| Camel :: JBang :: Core | n/a | |
| Camel :: JBang :: Integration tests | n/a | |
| Camel :: JBang :: MCP | n/a | |
| Camel :: JBang :: Main | n/a | |
| Camel :: JBang :: Plugin :: Edit | n/a | |
| Camel :: JBang :: Plugin :: Generate | n/a | |
| Camel :: JBang :: Plugin :: Route Parser | n/a | |
| Camel :: Launcher | n/a | |
| Camel :: Launcher :: Container | n/a |
Top 20 slowest modules:
Camel :: YAML DSL(55.1s)Camel :: Endpoint DSL(54.1s)Camel :: JBang :: Plugin :: TUI(14.0s)Camel :: Component DSL(13.7s)Camel :: Catalog :: Camel Catalog(11.0s)Camel :: Docs(9.3s)Camel :: JBang :: Plugin :: Kubernetes(9.3s)Camel :: JBang :: Plugin :: Testing(6.1s)Camel :: Catalog :: Camel Report Maven Plugin(5.9s)Camel :: Catalog :: Camel Route Parser(5.3s)Camel :: Kamelet Main(5.2s)Camel :: YAML DSL :: Deserializers(4.2s)Camel :: All Components Sync point(3.3s)Camel :: YAML DSL :: Validator(3.3s)Camel :: YAML DSL :: Maven Plugins(2.2s)Camel :: Catalog :: Suggest(2.0s)Camel :: YAML DSL :: Validator Maven Plugin(1.9s)Camel :: Catalog :: Maven(1.3s)Camel :: Catalog :: Dummy Component(1.1s)Camel :: Assembly(0.8s)
amazon-kinesis-clientpulls insoftware.amazon.glue:schema-registry-serde, which pins Square Wireat 5.2.0.
ProtoReader.skipGroup()andByteArrayProtoReader32.skipGroup()before Wire 6.3.0 do notreject a negative
LENGTH_DELIMITEDlength, so a crafted 10-byte payload makesProtoAdapter.decode(byte[])throw an uncheckedArrayIndexOutOfBoundsExceptioninstead of thedocumented
IOException(CVE-2026-45799, CVSS 7.5).Upstream has not fixed this:
schema-registry-serde1.1.27 is the latest release and is still on Wire5.2.0, so
camel-aws2-kinesismanages the version itself.Only
wire-runtimeis bumped — please don't align the restwire-schema,wire-compilerand the Wire code generators deliberately stay at 5.2.0. The Glue serdebinds to
com.squareup.wire.schema.internal.parser.ProtoFileElement, whose constructor gained aparameter in Wire 5.3.0:
FileDescriptorUtilscalls the 9-arg form, so aligning every Wire artifact breaks the Glue protobufpath with a
NoSuchMethodError. No Wire release has both the 9-arg constructor and the CVE fix — theconstructor changed in 5.3.0, the fix landed in 6.3.0. Splitting the versions is the only combination
that satisfies both.
Both
wire-runtimeandwire-runtime-jvmare pinned.wire-runtimeis an empty Kotlin-Multiplatformmetadata artifact (0 classes);
wire-runtime-jvmcarries all 125 classes and is the entry thatactually applies the fix. The advisory lists both coordinates, so both are pinned to keep scanners
quiet.
Is Camel exposed?
No. This clears a false positive rather than fixing a reachable vulnerability:
reference
ProtoAdapter/ProtoReader.schema-registry-serde(73 classes),schema-registry-common(32),amazon-kinesis-client(457) andcamel-aws2-kinesis(39) have zeroreferences.
.protoschema-text parser (ProtoParser,SchemaLoader).Protobuf message decoding goes through
com.google.protobuf, not Wire.KclKinesis2ConsumerbuildsConfigsBuilderitself and never sets a Glue deserializer, soRetrievalConfig.glueSchemaRegistryDeserializerstays null and KCL branches over the decode stepentirely. There is no endpoint option or autowired bean to enable it.
ByteBufferand performs no deserialization.It is still worth pinning: it removes a recurring finding for every downstream consumer, and protects
users who put their own Wire-using code on the classpath.
Verification
okiostays 3.4.0 andkotlin-stdlibstays 1.9.25 —no other version churn.
mvn test -pl components/camel-aws/camel-aws2-kinesis— 41/41 green.wire-schema-jvm5.2.0 againstwire-runtime-jvm6.4.7: one unresolved reference,RuntimeMessageAdapter.<init>(MessageBinding), whose only caller isSchemaProtoAdapterFactory—reachable solely via
Schema.protoAdapter(), which the Glue serde never calls (it calls onlygetType,getTypesandprotoFile).wire-runtime6.4.7 resolves cleanly against the okio andkotlin-stdlib versions already on the classpath.
ProtoAdapter.decode(byte[]): 60/90 uncheckedArrayIndexOutOfBoundsExceptionbefore the change, 0/90 after (all documentedIOException).FileDescriptorUtils.protoFileToFileDescriptoron a real.protoproduces an identicalFileDescriptorbefore and after.Backports
wire-runtime6.xrequires Kotlin >= 1.9 (
kotlin.enums.EnumEntriesKt) while the branch is onkotlin-stdlib1.7.10,so the pin fails there with a
NoClassDefFoundError. Remediating that branch would also require aKotlin stdlib bump.
The underlying issue needs fixing in
aws-glue-schema-registry, which must move off Wire'sinternal.parserAPI before it can take a supported Wire version.Claude Code on behalf of James Netherton
🤖 Generated with Claude Code