GHSA-j2pc-v64r-mv4f json
Protobuf Maven Plugin protocDigest is ignored when using protoc from PATH
published last yr. modified 11mo ago
- cvss
- —
- not scored
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- —
- no score, EPSS covers CVEs only
- public exploits
- 0
- none known
Summary
### Summary The expected `protocDigest` is ignored when protoc is taken from the `PATH`.
### Details The documentation for the `protocDigest` parameter says: > ... Users may wish to specify this if using a `PATH`-based binary ...
However, when specifying `<protoc>PATH</protoc>` the `protocDigest` is not actually checked because the code returns here already https://github.com/ascopes/protobuf-maven-plugin/blob/59097aae8062c461129a13dcda2f4116b90a8765/protobuf-maven-plugin/src/main/java/io/github/ascopes/protobufmavenplugin/protoc/ProtocResolver.java#L91-L93
before the digest check: https://github.com/ascopes/protobuf-maven-plugin/blob/59097aae8062c461129a13dcda2f4116b90a8765/protobuf-maven-plugin/src/main/java/io/github/ascopes/protobufmavenplugin/protoc/ProtocResolver.java#L106
### PoC Specify: ```xml <protoc>PATH</protoc> <protocDigest>sha256:0000000000000000000000000000000000000000000000000000000000000000</protocDigest> ```
And notice how the `protoc` on the `PATH` is not rejected, despite a digest mismatch.
### Impact Users who have an untrusted `protoc` executable on their `PATH` and rely `<protocDigest>` as protection are affected.
Patch / fix
- maven io.github.ascopes:protobuf-maven-plugin 3.10.2, 4.0.2
Is GHSA-j2pc-v64r-mv4f in your dependencies? Fencer shows which of your repositories are affected as soon as an advisory lands, and opens the fix as a pull request.
Check with FencerAffected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| maven | io.github.ascopes:protobuf-maven-plugin | >=4.0.0, <4.0.2 <3.10.2 |
4.0.2 3.10.2 |
Classification
References
Sources
- GitHub Advisory GHSA-j2pc-v64r-mv4f
Fencer Intel keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.