1. 漏洞初探:CVE-2025-32756是什么?
最近安全圈里又热闹起来了,Fortinet家的几款产品被曝出一个挺要命的漏洞,编号CVE-2025-32756。我第一眼看到这个漏洞描述——“管理API中的基于堆栈的缓冲区溢出,可能导致未经身份验证的远程代码执行”,心里就咯噔一下。这几乎是把“高危”两个字写脸上了。更关键的是,Fortinet官方和CISA(美国网络安全和基础设施安全局)都证实,这个漏洞已经在“野外”被利用了。啥叫“野外利用”?简单说,就是已经有攻击者盯上了这个漏洞,正在真实的网络环境里攻击那些还没打补丁的设备,而不是安全研究员在实验室里自己玩。这就让事情的紧迫性完全不一样了。
这个漏洞影响的产品线还挺广,包括FortiMail邮件安全网关、FortiVoice企业电话系统、FortiNDR网络检测与响应,甚至还有FortiCamera和FortiRecorder这类安防产品。你看,从网络边界安全到内部通信、再到物理安全监控,都波及到了。这意味着攻击面一下子被拉得很开,无论是企业数据中心还是分支机构,只要用了这些设备,都可能成为目标。漏洞被火速加入CISA的“已知被利用漏洞”(KEV)目录,也说明了它的严重性。KEV目录可不是随便进的,进了这个名单,就相当于被官方盖章认证为“正在被坏蛋们积极利用”,所有联邦机构都必须限期修复,这对私营企业也是一个极强的预警信号。
我自己在分析这类漏洞时,习惯先看它的“气质”。CVE-2025-32756给我的感觉,是一种“复古”的危险。缓冲区溢出,尤其是堆栈溢出,可以说是安全漏洞里的“古典派”了,在内存安全语言普及和各类防护机制(如ASLR、DEP)成为标配的今天,能在Fortinet这样的主流商业产品里看到它,确实有点“低腰牛仔裤又流行回来了”的意味。但这恰恰提醒我们,在复杂的、历史代码库庞大的网络设备中,这类看似古老的问题依然可能蛰伏,并且一旦被利用,杀伤力丝毫未减。攻击者不需要任何账号密码,只要能把精心构造的数据包发到设备的管理API接口,就有可能直接拿到设备的控制权,接下来想干嘛就干嘛了,比如窃取邮件、监听通话、植入后门,或者把设备变成攻击内网的跳板。
2. 漏洞原理深潜:堆栈溢出是如何发生的?
要理解这个漏洞怎么被利用,我们得先掰开揉碎了看看它的技术原理。根据公告和后续的分析,问题出在一个处理会话Cookie的函数里。具体来说,是libhttputil.so这个共享库里的cookieval_unwrap()函数。这个名字直译过来就是“Cookie值解包”,它的工作就是解析和验证Web管理界面用的那个APSCOOKIE。
这个Cookie长什么样呢?大概是这样一串东西:Era=0&Payload=一大串Base64编码&AuthHash=另一串Base64编码&。服务器收到这个Cookie后,需要把里面的Payload和AuthHash字段解码出来,看看对不对。问题就出在解码AuthHash这一步。
我们用“找不同”的方法,对比了打补丁前和打补丁后的libhttputil.so文件,发现关键差异就在对AuthHash长度的处理上。在没打补丁的版本里,代码大概是这么干的(我用伪代码给你描述下,更直观):
// 漏洞版本(简化示意)
char* cookie = 从HTTP请求中获取的APSCOOKIE字符串;
char* decoded_authhash_buffer[16]; // 在堆栈上分配了一个16字节的小缓冲区
// 解析出AuthHash字段的内容(比如"kz4cHPsgudYxy4PPp123FUto=")
char* user_pr

617

被折叠的 条评论
为什么被折叠?



