CVE-2023-27997:FortiGate SSL-VPN 认证前远程代码执行漏洞深度解析

本文详细分析了CVE-2023-27997漏洞,这是一个影响FortiGate SSL-VPN的认证前远程代码执行漏洞,涉及堆溢出和长度截断问题,提供了受影响版本、技术细节及修复建议。

CVE-2023-27997 – FortiGate SSL-VPN 认证前远程代码执行漏洞

作者: Kudelski Security 威胁检测与研究团队的 Harish Segar 和 Scott Emerson

2023年6月13日更新2: 漏洞和利用的技术细节已在 https://blog.lexfo.fr/xortigate-cve-2023-27997.html 披露

摘要

2023年6月9日星期五,Fortinet 发布了针对 Fortigate 设备的固件更新,修复了在 SSL VPN 中发现的一个可能的关键认证前远程代码执行(RCE)漏洞。

不幸的是,该发布说明未提及他们包含了 CVE-2023-27997 的修复。安全研究人员 LEXFO 的 Charles Fol 和 Dany Bach 透露了更多信息,指出新的 FortiOS 更新包含了他们发现的一个关键 RCE 漏洞的修复。

2023年6月13日星期二,Charles Fol 在 LEXFO 的博客上披露了漏洞和利用过程的技术细节。CVSS 评分为关键的 9.2,但研究人员打趣道:“实际上,它是 10 分。”

Fortinet 的设备是市场上最受欢迎的防火墙和 VPN 设备之一,使其成为攻击的主要目标。在 Shodan 上的调查发现,有超过 25 万台 Fortigate 防火墙可从互联网访问。考虑到该漏洞影响所有先前版本,这些设备中的大多数可能易受攻击。历史证据表明,威胁行为者在补丁发布后几天内就利用了 SSL VPN 漏洞。

由于此漏洞可能被利用和滥用,Kudelski Security 强烈建议组织验证是否已应用 Fortinet 的最新补丁,以尽快妥善缓解此漏洞。既然技术细节已公开,Kudelski Security 预计很快会看到“在野”利用。

受影响的应用

根据 Fortinet 的公告,以下为受影响的 FortiOS 和 FortiProxy 版本及相关修复版本:

产品 受影响版本 修复版本
FortiOS-6K7K 7.0.5, 7.0.10 7.0.12 或以上
FortiOS-6K7K 6.4.2, 6.4.6, 6.4.8, 6.4.10, 6.4.12 6.4.13 或以上
FortiOS-6K7K 6.2.4, 6.2.6 至 6.2.7, 6.2.9 至 6.2.13 6.2.15 或以上
FortiOS-6K7K 6.0.10, 6.0.12 至 6.0.16 6.0.17 或以上
FortiOS 7.2.0 至 7.2.4 7.2.5 或以上
FortiOS 7.0.0 至 7.0.11 7.0.12 或以上
FortiOS 6.4.0 至 6.4.12 6.4.13 或以上
FortiOS 6.0.0 至 6.0.16 6.0.17 或以上
FortiProxy 7.2.0 至 7.2.3 7.2.4 或以上
FortiProxy 7.0.0 至 7.0.9 7.0.10 或以上
FortiProxy 2.0.0 至 2.0.12 2.0.13 或以上
FortiProxy 1.1 和 1.2 的所有版本 2.0.13 或以上

技术细节

安全研究人员 watchTowr 检查了该漏洞。他们执行了“补丁差异”分析,在汇编级别仔细检查了易受攻击和已修复的软件版本。

据研究人员称,这是一个堆溢出漏洞,但更准确地说,问题源于将有效载荷长度截断为 8 位,随后进行了不足的长度检查。因此,攻击者可以创建一个 encData 值,其有效载荷长度超过了调整后的长度检查。这可能导致越界访问和不可预测的行为。有关更多详细信息,完整的 watchTowr 博客文章可以在此处找到。

watchTowr 对 CVE-2023-27997 的发现后来被 Charles Fol 在 LEXFO 的博客文章中确认并扩展。除了对漏洞本身的见解外,他还逐步介绍了在 ARM 和 x64 架构上的利用过程,并在视频中展示了两种架构上成功的未认证 RCE,但未提供概念验证代码,许多内容留给读者自行练习。

解决方案

Kudelski Security 建议尽快识别、验证和实施针对任何受影响系统的安全更新。管理员应迅速行动,尽快实施补丁。如果设备仪表板中不可用更新,重启设备可能会使其可用。如果不可用,建议手动下载和安装。

Fortigate 用户可以通过在 CLI 上使用以下命令并将其与上面的版本表进行比较来检查其设备是否易受攻击:

1
diagnose sys fortiguard-service status

用户还可以使用外部工具(如 Nmap 或 Shodan)扫描其设备上与 SSL VPN 相关的开放端口(如 443 或 10443),并检查横幅信息中的 FortiOS 版本号。

对于使用 Nessus/Tenable 的客户,可以使用插件 ID 177116 来识别系统是否已针对 CVE-2023-27997 打补丁。此外,插件 ID 73522 可用于识别网络中的 Fortinet 设备。

临时解决方法和缓解措施

禁用 SSL-VPN 功能可以缓解此问题,但升级设备仍然是最有效和推荐的解决方案。

检测指南

根据 LEXFO 的博客文章,该漏洞可通过向 /remote/hostcheck_validate/remote/logincheck URL 中的一个或两个发出多个 HTTP GET 或 POST 请求来利用。简单的利用会快速连续发出这些请求,但据报道,通过仔细的堆管理,可以更慢地发出它们。此外,质量差的利用可能会导致 /bin/sslvpnd 进程崩溃。

网络融合中心(CFC)正在做什么

CFC 正在调查进行威胁狩猎活动的可能性,以识别此漏洞的成功利用,使用内部查询和方法,这些方法源自事件响应参与中观察到的类似活动。

CFC 还与我们的漏洞扫描合作伙伴协调,部署能够识别未打补丁的系统和对 CVE-2023-27997 易受攻击的资产的插件。一旦可用,拥有 CFC 漏洞扫描服务的组织将能够使用扫描结果进行验证。

来源

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计