SaltStack是基于Python开发的一套C/S架构配置管理工具,是一个服务器基础架构集中化管理平台,具备配置管理、远程执行、监控等功能,基于Python语言实现,结合轻量级消息队列(ZeroMQ)与Python第三方模块(Pyzmq、PyCrypto、Pyjinjia2、python-msgpack和PyYAML等)构建。
身份验证绕过漏洞(CVE-2020-11651)
ClearFuncs 类在处理授权时,并未限制 _send_pub() 方法,该方法直接可以在发布队列消息,发布的消息会通过 root 身份权限进行执行命令。ClearFuncs 还公开了 _prep_auth_info() 方法,通过该方法可以获取到”root key”,通过获取到的”root key”可以在主服务上远程调用命令
目录遍历漏洞(CVE-2020-11652)
whell 模块中包含用于在特定目录下读取、写入文件命令。函数中输入的信息与目录进行拼接可以绕过目录限制。
在salt.tokens.localfs 类中的 get_token() 方法(由 ClearFuncs 类可以通过未授权进行调用)无法删除输入的参数,并且作为文件名称使用,在路径中通过拼接”..”进行读取目标目录之外的文件。唯一的限制是文件必须通过 salt.payload.Serial.loads() 进行反序列化
漏洞修复
1. 将SaltStack升级至安全版本以上,升级前建议做好快照备份。
2. 设置SaltStack为自动更新,及时获取相应补丁。
3. 将Salt Master默认监听端口(默认4505 和 4506)设置为禁止对公网开放,或仅对可信对象开放。
https://github.com/jasperla/CVE-2020-11651-poc
推荐文章++++