分布式Alpine Linux中发现了一些缺陷,包括任意代码执行。
Alpine Linux是一个独立的,非商业的通用Linux发行版,大量用于容器,包括Docker。
Alpine Linux基于musl libc和busybox,它是一个很小的发行版,并且经过优化以管理资源,它也被称为快速启动时间。
专家们发现了APK中的几个漏洞,这是Alpine的默认包管理器。Max Justicz发现的最严重的bug可能被攻击者利用来执行中间人攻击以在用户的机器上执行任意代码。
我在apk中找到了几个bug,这是Alpine Linux的默认包管理器。Alpine是一款非常轻巧的发行版, 非常常用于Docker。”规定的分析,通过研究人员公布。
这些博客中的最糟糕的错误,允许网络中间人(或恶意包镜像)在用户的计算机上执行任意代码。这尤其糟糕,因为在使用默认存储库时,不会通过TLS提供包。
攻击者可以触发该漏洞以基于Alpine的Docker容器为目标并执行任意代码,Justicz还发布了该攻击的视频PoC。
包管理器以gzipped tar档案的形式提取包,分发为apks,然后检查它们与已签名清单中的哈希值的哈希值。
如果散列不同,则包管理器会尝试取消链接所有提取的文件和目录。
专家强调,APK的提交钩子功能可能允许攻击者将持久的任意文件写入转换为代码执行。Justicz发现可以隐藏程序包的commit_hooks目录中的恶意软件,该恶意软件将逃避清理,然后可以正常执行。
专家解释说,如果攻击者能够将文件解压缩到/etc/apk/commit_hooks.d/并在清理过程之后将其保留在那里,它将在apk退出之前执行。
攻击者必须控制下载的tar文件,避免程序包管理器在清理过程中取消链接有效负载及其目录。
专家解释说,攻击者可以在Docker镜像构建期间运行MitM来拦截apk的包请求,然后在它们被传递到目标机器之前注入它们,这些机器将解压缩并在其Docker容器中运行恶意代码。
最新的Alpine版本已经解决了这个问题,建议开发人员使用更新的Alpine版本重建他们的Docker镜像。