【发布时间】:2021-03-23 16:25:14
【问题描述】:
让我们假设安全扫描发现某个 linux 系统库中存在高漏洞。
如何找到需要这个系统库的所有 python 包(在许多使用 pip 和 conda 安装的包中)?
换句话说,pipdeptree,但返回系统库。
- 更多信息。作为风险缓解的一种形式,我们将暂时卸载受影响的 python 包以摆脱易受攻击的系统库。我们可以确定,底层操作系统的正确运行不需要系统库,因为该漏洞不存在于仅包含操作系统的基础映像中。我们不能保持安装易受攻击的库,而只是禁用/阻止 - 构建时安全扫描必须干净地通过(即没有安装库)。
【问题讨论】:
-
随便
chmod a-r <path-to-lib> -
防止访问系统库的好主意(可能执行也可以?)。从安全的角度来看它是有效的,但它仍然可能不允许我们通过安全扫描(这是在构建镜像之后但运行之前在 Docker 容器级别执行的)。
-
chmod解决方案的问题是安全扫描器将以 root 身份运行容器,因此即使我们删除了所有三个权限 (chmod -r-w-x),扫描器作为 root 仍然会保留能够cat文件的内容,从而能够找到漏洞,即使普通用户被阻止访问库。 -
重命名库。
-
查找 python 包的所有系统依赖项的问题仍未得到解答,但我在我的特定情况下找到了一个安全的解决方法,使用 conda 安装的系统库补丁版本。
标签: python linux pip dependencies conda