Skip to content
Fencer Intel
low —

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 Fencer

Affected 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

Weakness
  • CWE-354 Improper Validation of Integrity Check Value
  • CWE-693 Protection Mechanism Failure

References

Sources

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.