Skip to content

[RUN-4678] Remove unused net.i2p.crypto:eddsa dependency (CVE-2020-36843)#138

Merged
fdevans merged 2 commits into
mainfrom
RUN-4678-remove-i2p-eddsa-cve-2020-36843
Jul 23, 2026
Merged

[RUN-4678] Remove unused net.i2p.crypto:eddsa dependency (CVE-2020-36843)#138
fdevans merged 2 commits into
mainfrom
RUN-4678-remove-i2p-eddsa-cve-2020-36843

Conversation

@fdevans

@fdevans fdevans commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Summary

Removes the net.i2p.crypto:eddsa:0.3.0 dependency, resolving RUN-4678 / CVE-2020-36843 (signature malleability in EdDSA-Java, unmaintained upstream project). Same fix as rundeck/rundeck#10394, applied here since this plugin declared the identical unused dependency.

Why this is safe

  • net.i2p.crypto:eddsa was a standalone dependency (build.gradle + gradle/libs.versions.toml) — confirmed via the resolved pluginLibs dependency tree that nothing (sshj, asn-one, BouncyCastle) requires it transitively.
  • sshj 0.40.0's Ed25519 support goes through the standard JCA "Ed25519" algorithm name, not through net.i2p.crypto.eddsa classes directly.
  • No source in this repo references net.i2p.crypto.eddsa/EdDSA/Ed25519 directly.
  • Ed25519 is natively supported by the JDK since Java 15 (JEP 339); this module targets Java 17. BouncyCastle (bcprov-jdk18on/bcpkix-jdk18on) is also already pulled in transitively by sshj itself.
  • The sibling rundeck-plugins/git-plugin repo independently arrived at the same conclusion — its GitManager.groovy explicitly strips the EdDSA security provider at runtime if present, with a comment noting it "causes ClassNotFoundException due to Rundeck's plugin classloader isolation" and that native JDK 15+ support should be used instead.

Test plan

  • ./gradlew dependencies --configuration pluginLibs — confirmed net.i2p.crypto:eddsa no longer appears in the resolved graph
  • ./gradlew clean build — passes (compile, tests, javadoc, jar)
  • Standalone smoke test exercising sshj's SignatureEdDSA class directly (Ed25519 keygen, sign, verify) against this plugin's actual runtime classpath with the eddsa jar absent — signing and verification succeed via the JDK's native JCA provider

)

net.i2p.crypto:eddsa is unmaintained and flagged for CVE-2020-36843
(signature malleability). It is a direct, standalone dependency here
and is not required transitively by sshj, asn-one, or BouncyCastle.
sshj 0.40.0's Ed25519 signing/verification goes through the standard
JCA "Ed25519" algorithm, which is natively supported by the JDK (17+)
and by BouncyCastle, already pulled in transitively by sshj itself.
Removing the dependency eliminates the CVE with no functional impact.

Same fix as rundeck/rundeck#10394, applied here since this plugin
declares the identical unused dependency.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Removes the unused net.i2p.crypto:eddsa dependency from this plugin’s Gradle version catalog and dependency configuration to address RUN-4678 / CVE-2020-36843, relying on Java 17’s native Ed25519 support and existing crypto dependencies already provided via sshj/BouncyCastle.

Changes:

  • Removed the eddsa version and library entry from the Gradle version catalog.
  • Removed libs.eddsa from the pluginLibs dependency set in build.gradle.

Reviewed changes

Copilot reviewed 1 out of 2 changed files in this pull request and generated no comments.

File Description
gradle/libs.versions.toml Drops the eddsa version and library definition from the version catalog.
build.gradle Removes the libs.eddsa dependency from the pluginLibs configuration.

@fdevans

fdevans commented Jul 22, 2026

Copy link
Copy Markdown
Contributor Author

@copilot resolve the merge conflicts in this pull request

Copilot AI commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

@copilot resolve the merge conflicts in this pull request

Resolved. The conflict in gradle/libs.versions.toml was between our removal of eddsa = "0.3.0" and main's bump of bouncycastle from 1.84 to 1.85. The merge keeps both — no eddsa, bouncycastle = "1.85". Merge commit: 04292a0.

@jtobard jtobard left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

@fdevans
fdevans merged commit 7e33e66 into main Jul 23, 2026
2 checks passed
@fdevans
fdevans deleted the RUN-4678-remove-i2p-eddsa-cve-2020-36843 branch July 23, 2026 15:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants