如何解决Snyk检测到的io.netty拒绝服务高危漏洞?
解决Android Gradle Plugin引入的Netty HTTP2 DoS高危漏洞方案
针对你遇到的由AGP依赖链引入的io.netty:netty-codec-http2@4.1.93.Final拒绝服务漏洞,以下是可行的解决方法:
1. 强制升级Netty依赖版本
利用Gradle的依赖强制解析能力,直接覆盖AGP间接引入的旧版本Netty组件。在你的App模块的build.gradle(或build.gradle.kts)中添加如下配置:
Groovy 语法
configurations.all { resolutionStrategy { // 强制使用修复漏洞的版本 force 'io.netty:netty-codec-http2:4.1.100.Final' // 同步升级同系列依赖,避免版本冲突 force 'io.netty:netty-common:4.1.100.Final' force 'io.netty:netty-buffer:4.1.100.Final' force 'io.netty:netty-transport:4.1.100.Final' } }
Kotlin DSL 语法
configurations.all { resolutionStrategy.force( "io.netty:netty-codec-http2:4.1.100.Final", "io.netty:netty-common:4.1.100.Final", "io.netty:netty-buffer:4.1.100.Final", "io.netty:netty-transport:4.1.100.Final" ) }
2. 验证依赖替换效果
执行Gradle命令查看依赖树,确认Netty版本已替换为目标版本:
./gradlew app:dependencies --configuration debugCompileClasspath | grep netty-codec-http2
若输出显示4.1.100.Final,说明强制替换成功。
3. 兼容性问题临时处理
如果强制升级后出现兼容性问题:
- 检查项目是否直接使用了Netty的相关API,对照Netty官方文档适配新版本的API变更
- 由于漏洞依赖来自测试插件
com.android.tools.utp:android-test-plugin-host-retention,可暂时限制该测试插件的启用范围,仅在必要的测试任务中使用,降低漏洞暴露风险
内容的提问来源于stack exchange,提问作者VIN
相关产品推荐
相关产品推荐

