SaltStack漏洞背景
国外安全团队(F-Secure) 发现多了SaltStack漏洞,其中最严重的两个漏洞是
CVE-2020-11651(身份认证绕过漏洞,导致远程命令执行)
CVE-2020-11652(目录穿越漏洞)
原文: https://labs.f-secure.com/advisories/saltstack-authorization-bypass
SaltStack简介
SaltStack是一款Python编写的开源自动化管理工具
基于C/S架构的服务模式
使用了ZeroMQ消息队列
SaltStack三种运行模式
Local
Master/Minion
Salt SSH
SaltStack原理(Master/Minion)
Salt使用server-agent通信模型,服务端组件被称为Salt Master,Agent被称为Salt Minion
Salt Master主要负责向Salt Minions发送命令,然后聚合并显示这些命令的结果。一个Salt Master可以管理多个Minion
Salt Master与Salt Minion通信的连接由Salt Minion发起,这也意味着Salt Minion上不需要开放任何传入端口(从而减少攻击)。Salt Master使用端口4505和4506,必须监听端口才能接收到访问连接
Publisher (端口4505)所有Salt Minions都需要建立一个持续连接到他们收听消息的发布者端口。命令是通过此端口异步发送给所有连接,这使命令可以在大量系统上同时执行
Request Server (端口4506) Salt Minions根据需要连接到请求服务器,将结果发送给Salt Master,并安全地获取请求的文件或特定Minion相关的数据值(称为Salt pillar)。连接到这个端口的连接在Salt Master和Salt Minion之间是1:1(不是异步)
SaltStack认证方式
Salt的数据传输是通过AES加密,Master和Minion之前在通信之前,需要进行认证,Salt通过认证的方式保证安全性,完成一次认证后,Master就可以控制Minion来完成各项工作了。
Minion在第一次启动时,会在/etc/salt/pki/minion/下自动生成 minion.pem(private key)和 minion.pub(public key), 然后将 minion.pub 发送给Master
M``aster在第一次启动时,会在/etc/salt/pki/master/下自动生成master.pem和master.pub,并且会接收到Minion的public key,通过salt-key命令接收Minion public key,会在Master的/etc/salt/pki/master/minions/目录下存放以Minion id 命令的public key,验证成功后同时Minion会保存一份Master public key在Minion的/etc/salt/pki/minion/minion_master.pub里
Salt认证原理总结
* Minion将自己的公钥发送给Master
* ```
Master认证后再将自己的公钥也发送给Minion
```
SaltStack远程命令执行漏洞演示