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远程命令执行漏洞演示