2019年8月,白帽汇安全研究院观测到国外安全研究人员公布了针对Fortigate SSL VPN(飞塔VPN)的漏洞说明,其中一个任意文件读取漏洞利用门槛较低,预计会对全球Fortigate SSL VPN造成较大影响。该漏洞原理是由于使用了不安全的函数,导致未能正确过滤URL中的恶意代码,最终造成任意文件读取。任意攻击者都可在未经身份验证的情况下利用该漏洞,获取session等敏感信息,从而非法入侵并操控VPN,从而进一步威胁企业内网服务。目前官方已发布了安全更新,主要影响使用了Fortinet FortiOS 5.6.3版本至5.6.7版本和6.0.0版本至6.0.4版本的SSL VPN。
Fortigate SSL VPN在全球VPN市场位列前5,无数大中型公司都在使用。此次曝出的任意文件读取漏洞利用方式简单,影响范围较广,可能会在今后很长一段时间内持续威胁Fortigate SSL VPN的用户。虽然此前该品牌的VPN所曝出漏洞较少,但从国外研究人员的分析来看,其内部代码还是存在版本过旧、使用大量危险函数、缺乏安全限制等缺陷,预计在今后将会曝出更多高危漏洞(此次漏洞还可和另一个溢出漏洞相配合获得shell)。
概况
目前FOFA系统最新数据(一年内数据)显示全球范围内共有140947个Fortigate SSL VPN服务。美国使用数量最多,共有31430个,法国第二,共有8471个,德国第三,共有7182个,荷兰第四,共有5205个,意大利第五,共有4895个。
全球范围内Fortigate SSL VPN服务分布情况如下(仅为分布情况,非漏洞影响情况)。
中国大陆地区北京市使用数量最多,共有360个,上海市第二,共有260个,广东省第三,共有174个,江苏省第四,共有119个,浙江省第五,共有43个。
危害等级
严重
漏洞原理
Fortigate SSL VPN的某个页面在获取对应国家的语言文件时,会使用URL中的lang参数去构建要读取的文件名,示例如下:
snprintf(s, 0x40, "/migadmin/lang/%s.json", lang);
以上函数没有任何安全保护,虽然貌似只能指定json文件,但实际上我们可以利用snprintf
的特性实现任意文件读取。根据函数的参数,其最多将栈空间-1
的字符串写入输出中。因此,我们只需要使输入超过缓冲区大小,.json
就会因函数限制而被删除,我们就可以读取任意文件。
漏洞影响
目前漏洞影响版本号包括:
FortiOS 5.6.3 to 5.6.7
FortiOS 6.0.0 to 6.0.4
漏洞POC
目前FOFA客户端平台已经更新该Fortigate SSL VPN漏洞的检测POC。
POC截图
CVE编号
CVE-2018-13379
修复建议
1、官网已发布安全更新,用户可以网址https://fortiguard.com/psirt/FG-IR-18-384获取。
2、如暂时无法更新到最新版本,请及时下线设备。
参考
[1] https://fortiguard.com/psirt/FG-IR-18-384
[2] http://www.cnnvd.org.cn/web/xxk/ldxqById.tag?CNNVD=CNNVD-201905-1026
[3] https://blog.orange.tw/2019/08/attacking-ssl-vpn-part-2-breaking-the-fortigate-ssl-vpn.html?m=1
白帽汇从事信息安全,专注于安全大数据、企业威胁情报。
公司产品:FOFA-网络空间安全搜索引擎、FOEYE-网络空间检索系统、NOSEC-安全讯息平台。
为您提供:网络空间测绘、企业资产收集、企业威胁情报、应急响应服务。