安全研究人员公开了针对Fortinet FortiSIEM一个关键漏洞的概念验证(PoC)利用代码。该漏洞编号为CVE-2026-106173,CVSS评分为9.4,属于严重的路径遍历缺陷,可让未认证攻击者通过特制数据包执行未授权代码或命令。

打开网易新闻 查看精彩图片

Fortinet上周已发布补丁,涉及版本情况如下:

  • FortiSIEM 7.5.0:需升级至7.5.1或更高版本
  • FortiSIEM 7.6:不受影响

据Horizon3.ai披露,攻击路径是未认证攻击者连接监听在TCP 27918端口的gRPC服务,利用该缺陷覆盖目标目录之外的一个已有文件,把任意文件写入的能力升级为远程代码执行。

Horizon3.ai表示,FortiSIEM的gRPC QueryResultReq处理器在处理不受信任的元数据时没有做正确的路径校验。攻击者可以在gRPC的HTTP/2与HPACK编码层中构造同时包含路径遍历序列(../)和NUL字节注入的元数据,从而向文件系统写入任意文件。

问题根源在于名为SendQueryResult()的函数中存在不安全的路径拼接:用户提供的“query-id”参数被直接传入,缺乏足够校验。攻击者借此可以带上“../”跳出目标目录,但程序会自动追加自己的文件名“result- -0-0- .dat”,其中计数由服务器控制,所以单靠路径遍历只能选目录、不能选文件名。

第二个弱点让局面改变:攻击者可以在“query-id”参数中嵌入空字节(“\0”),操作系统会把它当作字符串终止符,丢弃其后的所有内容,追加的文件名后缀因此在路径传入文件打开函数时被忽略。

攻击者可以把“\0”放在真实目标文件名之后,构造出类似“../../../../../opt/charting/redishb.sh\0...”的取值。该文件是一个对Redis服务做健康检查的shell脚本,由定时任务每60秒执行一次。

Horizon3.ai首席攻击工程师Zach Hanley表示,写入会落在空字节之前的那个确切路径上;指向已有文件时是原地覆盖,保留原所有者和权限;另一种变体则用两次请求创建一个名称完全指定的全新文件。