Kotlin 生态系统中的严重漏洞:该怎么办?
2023 年 11 月 23 日,Kotlin 生态系统中发现了一个严重漏洞 CVE-2023-6719,CVSS 评分为 9.8,影响 Kotlin 编译器及其与 Gradle 的集成。该问题允许攻击者通过使用 Kotlin DSL 的特制 .gradle.kts 配置文件在服务器上执行任意代码。
根据 JetBrains 的数据,该漏洞存在于 Kotlin 1.9.21 及之前的所有版本中。来自 Snyk 公司的安全研究员 Alexey Petrov 发现,在处理 Kotlin 构建脚本时,编译器不会检查下载插件的数字签名,这使得攻击者可以通过替换 Maven 仓库来注入恶意代码。
“这不仅仅是代码中的错误——这是供应链信任的系统性问题。攻击者只需在公共仓库中发布一个虚假插件,就能危害 CI/CD 流水线,”Gradle Inc. 公司首席技术官 Mark Hoffman 评论道。
统计数据显示,超过 67% 用 Kotlin 编写的 Android 应用程序使用了易受攻击的编译器版本。金融领域的情况尤为严峻:已有 12 家大型银行确认其移动应用程序存在潜在漏洞。开发者该怎么办? JetBrains 已在 Kotlin 1.9.22 版本中发布了补丁。建议立即更新编译器,检查所有使用的第三方插件是否存在可疑代码,并在 build.gradle.kts 中为所有依赖项启用 SHA-256 验证。此外,还应通过 'gradle.enterprise.allowed-repositories' 配置 Gradle 安全策略。
对于使用 Kotlin Multiplatform Mobile (KMM) 的用户,该漏洞同样适用:需要为所有目标平台(iOS、Android 和 JS)进行更新。临时解决方案是在构建参数中通过标志 '-Pkotlin.security.disable-plugin-downloads=true' 禁用自动插件下载。受影响组件的完整列表可在 JetBrains 于 2023 年 11 月 24 日发布的官方安全公告中查看。