[SECURITY] Releases are built/executed/released in the context of insecure/untrusted code

Description

CWE-829: Inclusion of Functionality from Untrusted Control Sphere
CWE-494: Download of Code Without Integrity Check

The build files indicate that this project is resolving dependencies over HTTP instead of HTTPS. Any of these artifacts could have been MITM to maliciously compromise them and infect the build artifacts that were produced. Additionally, if any of these JARs or other dependencies were compromised, any developers using these could continue to be infected past updating to fix this.

This vulnerability has a CVSS v3.0 Base Score of 8.1/10
https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator?vector=AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H

This isn't just theoretical

POC code has existed since 2014 to maliciously compromise a JAR file inflight.
See:

MITM Attacks Increasingly Common

See:

Source Locations

https://github.com/hibernate/hibernate-orm/blob/819f92c42588abe3c61a92abd89e56db464cba66/build.gradle#L14-L17

https://github.com/hibernate/hibernate-orm/blob/819f92c42588abe3c61a92abd89e56db464cba66/build.gradle#L39-L42

https://github.com/hibernate/hibernate-orm/blob/819f92c42588abe3c61a92abd89e56db464cba66/buildSrc/build.gradle#L10-L17

See this revert:
https://github.com/hibernate/hibernate-orm/commit/e67f3dfa8215f9ed2e7ec0f510891dcb08dc8fab

Public Disclosure

File for a CVE

A project maintainer for this project should probably file for a CVE number to inform the public about this vulnerability in the build for this project. The goal is to inform the public that there was a potential for published build artifacts to have been maliciously compromised in earlier releases.

Option 2: Manually validate the release artifacts

If this project's build is fully reproducible. An alternative to filing for a CVE is to go back and build the earlier releases (with the HTTPS patch applied) to confirm the artifacts were not tampered when they were built. This can be done by comparing the hashes of the artifacts built locally with the ones published. If the hashes of all previous artifacts match those that are published, you can safely assume that the releases were not tampered with.

Again, this assumes that the build if fully reproducible and will require significantly more work.

Related:

Environment

None

Status

Assignee

Unassigned

Reporter

Jonathan Leitschuh

Fix versions

None

Labels

backPortable

None

Suitable for new contributors

None

Requires Release Note

None

Pull Request

None

backportDecision

None

Components

Affects versions

Priority

Major
Configure