-
Notifications
You must be signed in to change notification settings - Fork 57
[SECURITY] Kobalt pulls from insecure repositories by default #499
Description
CWE-829: Inclusion of Functionality from Untrusted Control Sphere
CWE-494: Download of Code Without Integrity Check
The source 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:
- https://max.computer/blog/how-to-take-over-the-computer-of-any-java-or-clojure-or-scala-developer/
- https://github.com/mveytsman/dilettante
MITM Attacks Increasingly Common
See:
- https://serverfault.com/a/153065
- https://security.stackexchange.com/a/12050
- Comcast continues to inject its own code into websites you visit (over HTTP)
Source Locations
kobalt/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/Constants.kt
Lines 14 to 23 in 7b902eb
internal val DEFAULT_REPOS = listOf<HostConfig>( // "https://maven-central.storage.googleapis.com/", HostConfig("http://repo1.maven.org/maven2/", "Maven"), HostConfig("https://jcenter.bintray.com/", "JCenter") // "http://repository.jetbrains.com/all/", // <-- contains snapshots // snapshots // "https://oss.sonatype.org/content/repositories/snapshots/" // , "https://repository.jboss.org/nexus/content/repositories/root_repository/" )
Public Disclosure
Since this is a shipped project, once this is fixed and a new release published, a CVE number will need to be assigned.
Potential for Trusting Trust Attack
Since Kobalt is used to build Kobalt, there is the potential that this vulnerability could have been used to establish a trusting trust attack.
https://www.archive.ece.cmu.edu/~ganger/712.fall02/papers/p761-thompson.pdf
A malicious compromise of one Kobalt build could mean that a vulnerability continues to live in the compiled bytecode of the project today.