SaltStack,Shell Master 和 Minion 漏洞分析

Author Avatar
xF0rk 5月 04, 2020

2020 年 4 月 30 日 F-Secure 安全团队公开披露 SaltStack 管理平台存在 CVE-2020-11651(认证绕过)、CVE-2020-11652(任意读、写),2020 年 5 月 3 日国外安全厂商报告两个安全漏洞已被攻击者利用在漏洞机器上植入挖矿木马。

事件概述

SaltStack 是基于 Python 开发的 C/S 架构的服务器基础架构集中化管理平台,可配置远程任务执行、配置管理、监控等功能,是运维人员提高工作效率、规范业务配置、操作的管理系统。

2020 年 3 月 16 日,F-Secure 向 SaltStack 团队披露 CVE-2020-11651、CVE-2020-11652 漏洞详情,4 月 29 日 SaltStack 团队完成漏洞修复,并提交至 GitHub 代码库,如下

2020 年 4 月 30 日,F-Secure 安全团队公开披露漏洞详情,2020 年 5 月 3 日,GitHub 社区出现 ISSUE 并且社区持续更新漏洞利用及挖矿木马相关 IoC

漏洞描述

根据 F-Secure 团队所披露的漏洞信息,SaltStack 存在漏洞版本为( < 2019.2.4 或 < 3000.2 ),两个安全漏洞简单描述

  • CVE-2020-11651,认证绕过漏洞,攻击者可构造恶意请求,绕过 Salt Master 的验证逻辑,调用相关未授权函数,实现远程命令执行;
  • CVE-2020-11652,目录遍历漏洞,攻击者可构造恶意请求,读、写服务器上任意文件,获取系统敏感信息;

环境准备

从 Docker 官方镜像市场下载 SaltStack 漏洞版本 docker pull saltstack/salt:2019.2.3 即可

下载网上测试项目 salt-security-backports,同时安装依赖

CVE-2020-11651 复现

安全漏洞 CVE-2020-11651 描述指出 ClearFunc 暴露了 _send_pub 和 _prep_auth_info 两个方法,其中 _send_pub 方法可向 minions 节点发送执行任意命令消息,_prep_auth_info 方法可读取 master 节点的 root key ,通过所获得的 key 在 master 节点间接执行命令。如下,通过 _prep_auth_info 读取认证信息,可结合 CVE-2020-11652 漏洞获取命令执行权限(见命令执行章节)

CVE-2020-11652 复现

安全漏洞 CVE-2020-11652 描述指出 wheel 中的命令可读、写任意路径的文件(需认证信息),salt.tokens.localfs 中的 get_token 方法可读取指定路径的文件(不需要认证信息)

结合 CVE-2020-11651 漏洞读取 /etc/passwd 文件内容

在 /etc/crontabs/crond 中写入定时任务 */1 * * * * id > /tmp/crond.log

命令执行

结合 CVE-2020-11651 漏洞所获取的 root key,同时利用 CVE-2020-11652 写入定时任务,可在目标机器执行任意命令,写入的定时任务将 id 执行结果写入到 /tmp/crond.log 文件中

注意 在漏洞复现过程需要注意 saltstack 运行权限,当结合 CVE-2020-11651(读取 root key 信息)进行 CVE-2020-11652 漏洞利用(写入定时任务)时,可能由于用户权限不够导致无法 Shell 成功,出现的错误提示有 {‘error’: {‘name’: ‘UserAuthenticationError’, ‘message’: ‘Authentication failure of type “user” occurred’}},此时需确认正在进行复现的 Docker 容器中 master 用户配置 /etc/saltstack/master.d/user.conf 中内容是否为 {“user”: “root”},若不是需修改 /usr/local/bin/saltinit 中启动权限

安全应急

SaltStack CVE-2020-11651、CVE-2020-11652 两个安全漏洞可直接获取目标系统执行命令权限,在非业务需要的场景下,限制 SaltStack 4505、4506 端口公网访问权限,确保受影响的系统版本升级至无漏洞版本,即保证 SaltStack 版本号高于或等于 3000.2、大于或等于 2019.2.4。

若系统已感染挖矿木马,则需要将相关木马文件清理,同时确保系统中不存在相关后门文件,上述为阿里云先知提供的清理脚本,但由于木马已出现变种,需要结合实际情况进行清理,如下已经出现两个版本的木马文件

关于挖矿木马,笔者在 《Linux 挖矿木马手法摘录》 中描述了挖矿木马常用的植入、持久化、检测对抗等手法,读者可针对性排查系统是否存在异常情况。

参考资料

  1. SaltStack 项目地址 主页
  2. SaltStack authorization bypass 主页
  3. salt-security-backports 主页
  4. /tmp/salt-minions[BUG] #57057 主页