是否可以解决 OkHttp 中的 org.jetbrains.kotlin:kotlin-stdlib 漏洞?

Yev*_*iev 5 java maven kotlin okhttp snyk

我正在使用Snyk服务来检查我的项目是否存在漏洞。

具有依赖关系的项目OkHttp有一个常见的漏洞:

Vulnerable module: org.jetbrains.kotlin:kotlin-stdlib
Introduced through: com.squareup.okhttp3:okhttp@4.10.0
Run Code Online (Sandbox Code Playgroud)

您可以在此处查看完整报告:https ://snyk.io/test/github/yvasylev/deezer-api

概述部分有一条注释:

注意:从版本 1.4.21 开始,存在漏洞的函数已被标记为已弃用。由于仍然可用,该建议保持为“未修复”。

我有两个问题:

  1. 我可以在 Maven 项目中修复此漏洞吗?如何修复?
  2. 如果漏洞无法修复,那么是否意味着每个单一的 Kotlin 应用程序默认都存在此漏洞(因为它来自 kotlin-stdlib)?

最新的稳定版本OkHttp通过以下方式添加到项目中Maven

Vulnerable module: org.jetbrains.kotlin:kotlin-stdlib
Introduced through: com.squareup.okhttp3:okhttp@4.10.0
Run Code Online (Sandbox Code Playgroud)

End*_*eit 2

与所有易受攻击的软件库一样,您需要评估您是否确实受到其中包含的漏洞的影响。

您的 Snyk 报告中列出了有关该漏洞的详细信息。有问题的函数来自createTempDircreateTempFilekotlin.io。正如您的报告以及Kotlin 文档中所述,由于创建的文件/目录具有太宽的权限,这些函数可能是泄漏信息的来源;也就是说,有权访问文件系统的每个人都可以读取文件。

这是一个问题吗?
如果您(以及您的软件中包含的任何依赖项)没有使用上述功能之一,那么您就不会受到攻击。
此外,如果您(或依赖项)在调用这些函数之一之后和插入任何信息之前调整文件权限,您不会受到影响。
即使使用了这些功能并且没有调整权限,只要文件中存储的数据不需要受到保护,例如不是秘密或个人信息,也可能不会造成问题。

直接解决您的问题:

  1. 不幸的是,没有简单的方法可以解决这个问题。您要么必须使用kotlin-stdlib尚未引入该函数的版本,要么kotlin-stdlib从类路径中完全排除该函数,要么使用不再包含该函数的版本;尚未发布。但是,选项 1 和 2 没有任何意义,因为如果软件继续运行,则意味着没有人在使用这些功能,并且您无论如何也不会受到影响。
  2. 不,又是。每个依赖kotlin-stdlib受影响版本之一的人都在其类路径上拥有该函数。然而,只要不使用它,或者使用不会造成如上所述的问题,该软件就不会受到攻击。

OkHttp 项目似乎知道该漏洞,但似乎并未受到影响。