依赖 JCenter/Bintray 作为工件存储库¶
ID: java/maven/dependency-upon-bintray
Kind: problem
Security severity: 6.5
Severity: error
Precision: very-high
Tags:
- security
- external/cwe/cwe-1104
Query suites:
- java-code-scanning.qls
- java-security-extended.qls
- java-security-and-quality.qls
Bintray 和 JCenter 将于 2022 年 2 月 1 日关闭。依赖于已弃用或计划关闭的存储库可能会产生意想不到的后果;例如,从不同的工件服务器解析工件或 CI 构建完全失败。
如果工件存储库长时间无人维护,可能会出现漏洞。从理论上讲,这可能允许攻击者将恶意代码注入你正在解析的工件中,并感染正在生成的构建工件。攻击者可借此对项目的使用者执行供应链攻击。
建议¶
始终使用规范存储库来解析你的依赖项。
示例¶
以下示例显示了 Maven POM 文件中配置工件存储库上传/下载的位置。不建议在这些位置中的任何位置使用 Bintray。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.semmle</groupId>
<artifactId>parent</artifactId>
<version>1.0</version>
<packaging>pom</packaging>
<name>Bintray Usage</name>
<description>An example of using bintray to download and upload dependencies</description>
<distributionManagement>
<repository>
<id>jcenter</id>
<name>JCenter</name>
<!-- BAD! Don't use JCenter -->
<url>https://jcenter.bintray.com</url>
</repository>
<snapshotRepository>
<id>jcenter-snapshots</id>
<name>JCenter</name>
<!-- BAD! Don't use JCenter -->
<url>https://jcenter.bintray.com</url>
</snapshotRepository>
</distributionManagement>
<repositories>
<repository>
<id>jcenter</id>
<name>JCenter</name>
<!-- BAD! Don't use JCenter -->
<url>https://jcenter.bintray.com</url>
</repository>
</repositories>
<repositories>
<repository>
<id>jcenter</id>
<name>JCenter</name>
<!-- BAD! Don't use Bintray -->
<url>https://dl.bintray.com/groovy/maven</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>jcenter-plugins</id>
<name>JCenter</name>
<!-- BAD! Don't use JCenter -->
<url>https://jcenter.bintray.com</url>
</pluginRepository>
</pluginRepositories>
</project>
参考¶
常见弱点枚举:CWE-1104。