Zyxel CGI程序中的操作系统命令注入漏洞
该漏洞最初于2022年4月13日被发现,导致Zyxel防火墙产品中的远程代码执行。这个CVSS评分为9.8的重要漏洞在出现15天后,Zyxel发布的更新中得到了修复。此过程中至少有20,800台型号受到影响,主要在欧洲。 该漏洞源于零接触配置小程序中的"setWanPortSt"命令。对"setWanPortSt"命令的访问通过/ztp/cgi-bin/handler端点进行。 自Zyxel为其型号带来更新以来,尚未观察到漏洞利用行为。受影响型号的软件版本已升级至v5.30,并强调应启用自动软件更新以防止该漏洞。
2022年4月13日,Rapid7报告了一个影响Zyxel防火墙设备的漏洞,允许攻击者无需身份验证即可作为"nobody"用户远程注入任意命令。该漏洞被处理为严重级别,CVSS评分确定为9.8。随后,Zyxel于2022年4月28日发布安全更新解决了该漏洞。2022年5月12日,Rapid7发布了该漏洞的安全公告和Metasploit模块。
ShadowServer的研究人员开始监控针对CVE-2022-30525的利用尝试。调查期间,至少有20,800台受影响的Zyxel防火墙型号暴露在网络上。值得注意的是,受影响型号大多位于法国和意大利。

该漏洞源于对攻击者提供的数据使用"os.system"。攻击通过/ztp/cgi-bin/handler端点发起。Handler是一个可以执行多种不同命令的Python脚本。首次报告该错误的Jake Baines在其博客中解释了漏洞:“Rapid7发现并报告了一个影响Zyxel防火墙的漏洞,这些防火墙支持零接触配置(ZTP),包括ATP系列、VPN系列和USG FLEX系列(包括USG20-VPN和USG20W-VPN)。该漏洞被标识为CVE-2022-30525,允许未经身份验证的远程攻击者在受影响设备上以nobody用户身份实现任意代码执行。” 问题源于零接触配置实现中名为"setWanPortSt"的命令,该命令允许远程配置更改防火墙端口的IP设置。
为了更好地理解如何利用漏洞,已经发布了PoC。Victorian Machinery是针对CVE-2022-30525的概念验证利用。该漏洞是一个未经验证的远程命令注入漏洞,影响支持零接触配置的Zyxel防火墙。
首先,使用netcat监听器对目标进行利用,并获取一个反向shell。默认情况下,通过给定"nc-path"来运行"nc"。在Python中,使用"os.fork()"操作创建主进程的副本。然后,如果进程ID为0,则向指定的URL地址发出POST请求。URL依次包含协议、要利用的远程地址、远程端口和"/ztp/cgi-bin/handler"端点。通过此处的/ztp/cgi-bin/handler端点,可以访问"setWanPortSt"命令中的功能,该功能允许更改防火墙端口的IP设置。检查payload时,可以发现命令的目标是DHCP协议的1270端口。通过这种方式,攻击者可以以nobody身份实现远程代码执行。
调查全球利用情况的Shadowserver基金会没有透露有关观察到的利用尝试及其特征的更多信息。据宣布,自2022年5月16日星期一以来,没有发现滥用尝试,但调查仍在继续。
建议受影响设备的管理员尽快将固件升级到V5.30。Jake Baines还建议尽可能启用自动固件更新。Zyxel因悄悄处理漏洞而受到批评,但在声明中解释说这是由于“披露协调过程中的沟通失误”。内部员工被告知,通过创建字典制定手动缓解的“HTTP协议签名”策略可以阻止利用。
总之,发生在Zyxel防火墙产品中的这个漏洞以严重级别影响了众多型号。尽管问题在短时间内得到处理,但利用的影响相当大。长时间未发现漏洞利用表明,更新目前可以关闭安全漏洞。