docker|Docker供应链安全:通过Docker Hub公共容器镜像进行攻击( 二 )


恶意镜像分类Sysdig 威胁研究团队对收集的恶意镜像做了分类 , 如下所示 , 主要集中为两个主要类别:恶意IP 或域名 , 以及加密 。 这两类都可能对用户下载和部署Docker Hub 中公开可用的镜像构成威胁 。
研究中的被识别为恶意镜像的1652 镜像内容类型包括:

正如预期的那样 , 加密镜像是最常见的恶意镜像类型 。 分层嵌入的秘密也是二普遍的 , 这突出了秘密管理的持续挑战 。 由于无意中糟糕的编码实践 , 秘密可能会嵌入镜像中 , 或者这可能是由威胁行为者故意完成的 。 通过将SSH 密钥或API 密钥嵌入到容器中 , 攻击者可以在部署容器后获得访问权限 。 为防止凭据意外泄露 , 敏感数据扫描工具可以在开发周期中发现并提醒用户 。
在分层中嵌入秘密的镜像代表了大部分恶意镜像 。 Sysdig TRT 根据泄露机密的类型将这些镜像划分为子类别 , 如下图所示 。

Sysdig TRT 还将公钥归类到SSH 密钥类别中 , 因为当其嵌入到容器镜像中时 , 很可能被部署用于非法用途 。 例如 , 将公钥上传到远程服务器 , 可以让相应私钥的所有者打开一个shell , 通过SSH运行命令 , 类似于植入后门 。
属于其他类别的密码可以允许任何人对不同的服务和平台进行身份验证 , 因为它们可以在层中公开访问 。
伪装成合法镜像在研究过程中 , Sysdig TRT 还发现有些恶意镜像故意起名为何知名开源软件比较相似的名称 , 以欺骗用户下载和部署 。 这种做法被称为名称仿冒 , 假装它们是合法的官方形象 , 同时在其层中隐藏一些恶意的内容 。
比如 , 研究中发现下面这些像被命名为知名的PHP CMS框架但实际上隐藏加密货币矿工的合法镜像 。 如果用户不仔细甄别就可能会下载安装这些镜像 。 此类错误最常发生在使用众包知识时 , 例如从博客或论坛复制和粘贴代码或配置 。

检查这些镜像的层可确认它们为挖矿矿工:

可以直接在 Docker Hub 上探索镜像层 。例如 , ynprpagamentitk/liferay 的层可通过此URL 访问 。
有趣的是 , 这些镜像是由不同的用户发布的 , 但它们都包含相同的层 , 这意味着它们很可能属于同一个威胁参与者或者使用了统一脚本 。此外 , 这些用户中的每个人都只发布了一个镜像 , 这使得追踪这个威胁者变得更加困难 。在前面的第一层中克隆的存储库不再存在 , 但它的名字强烈暗示它是一个挖掘工具 。此外 , Github 用户OhGodAPet 仍然活跃 , 并Fork了几个挖矿工具的存储库 。
在上面的最后一层中 , 恶意镜像使用一些参数执行“minerd”二进制文件 , 从镜像的下载次数可以看出 , 有数百名用户被诱骗下载了这些镜像 , 而他们并不知道他们为挖矿木马 。
Sysdig TRT 还发现了另一位用户vibersastra , 他于2022 年7 月31 注册Docker Hub , 并上传了完全伪装的镜像被大量下载:

通过查看镜像层 , 可以清楚地看到这些镜像都下载了XMRig miner 工具 , 然后使用它向特定钱包挖门罗币 。 如下所示:

缓解很明显 , 容器镜像已经成为一个真正的攻击媒介 , 而非理论风险 。 Sysdig TRT 发现恶意行为者使用的方法专门针对云和容器工作负载 。 部署此类工作负载的组织应确保他们制定了适当的预防性和检测性安全控制措施 , 能够减轻针对云的攻击 。 根据收集这些知恶意容器镜像来源SHA-256 哈希校 。 通过校对这些恶意镜像哈希 , 可以在用户环境中发现镜像的容器时发出警报 , 并采取适当的响应措施 。 如果环境中出现已知的恶意容器 , 可以立即将其杀死、暂停或停止 , 同时通知安全团队 。