我们很自豪地宣布新的Gradle Wrapper验证GitHub Actions的发布。
开放源代码中的Gradle Wrapper
该 gradle-wrapper.jar 是一个可执行代码的二进制圆球,它被检查到近280万个GitHub仓库。
在GitHub上搜索,你可以找到许多标题为 "更新到Gradle xxx "的拉动请求(PR)。其中许多PR是由维护项目的组织以外的个人贡献的。
维护者们对这些贡献表示感谢,因为这可以从他们的积压项目中移除一个项目。但是,接受外部贡献者对Gradle Wrapper二进制的修改会带来一些可能不明显的安全问题。攻击者可以利用开源社区的信任,在Gradle Wrapper中隐藏恶意代码。一个恶意的gradle-wrapper.jar ,可以下载、安装和执行任意代码,而其他方面表现得像一个完全正常的gradle-wrapper.jar 。
这样的攻击很容易被忽略,因为gradle-wrapper.jar 的差异看起来像这样。
验证Gradle封装器
我们创建了一个简单的GitHub动作,可以应用于任何GitHub仓库。这个动作将验证仓库中的任何和所有gradle-wrapper.jar 文件是否符合官方的SHA-256校验。 如果任何文件不匹配,该动作将失败。
此外,该动作将检测名为gradle-wrapper.jar 的文件的任何同形变体。其目的是防止难以发现的同形攻击,如将gradle-wrapper.jar 文件重命名为gradlе-wrapper.jar (使用西里尔文е 而不是e )。
保护你的项目安全
GitHub 动作是免费用于开源的,几乎所有的仓库都是默认自动启用的。你可以在这里找到更多关于如何将这个动作添加到你的 GitHub 仓库的信息。
现有的用户
这个动作已经被贡献给GitHub上一些最受欢迎的基于Gradle的项目,包括但不限于。
- ReactiveX/RxJava
- ReactiveX/RxAndroid
- junit-team/junit5
- JakeWharton/butterknife
- google/flexbox-layout
- ktorio/ktor
- facebook/fresco
- Facebook/flipper
- mockito/mockito
- jhipster/generator-jhipster
- apache/groovy
- apache/Lucene-solr
还有更多!
报告失败情况
如果这个GitHub操作因为gradle-wrapper.jar 与我们公布的SHA-256校验和不匹配而失败,我们强烈建议你与我们联系,security@gradle.com。
如果你很好奇,想探索你手中的gradle-wrapper.jar 和我们的一个有效版本之间有什么不同,你可以用这个在线工具来比较它们。DiffScope。
资源
要了解更多关于在本地验证Gradle Wrapper JAR的信息(即不使用GitHub Actions),请看我们关于这个主题的文档。