CVE-2025-66577cpp-httplib是一个C++11单文件头文件跨平台HTTP/HTTPS库,在0.27.0之前的版本中存在严重的安全漏洞。该漏洞允许攻击者通过注入恶意的X-Forwarded-For或X-Real-IP HTTP头来操控服务器可见的元数据、日志记录和授权决策。具体而言,get_client_ip()函数在docker/main.cc中无条件地接受这些代理头,导致攻击者可以伪造客户端IP地址。这一漏洞可能被用于污染nginx_access_logger和nginx_error_logger记录的访问日志和错误日志,实现日志污染和审计规避的目的。由于该漏洞影响日志的完整性和可追溯性,对于依赖日志进行安全分析和合规审计的系统构成严重威胁。攻击者可以利用此漏洞隐藏真实攻击源、伪造合法用户身份、绕过基于IP的访问控制或速率限制等安全机制。
该漏洞的根本原因在于cpp-httplib库的get_client_ip()函数对HTTP代理头(X-Forwarded-For和X-Real-IP)的无条件信任。在正常的反向代理架构中,这些头字段由代理服务器(如nginx)自动设置,用于传递原始客户端IP。然而,在受影响的版本中,服务器直接使用客户端请求中的这些头字段值,而未进行来源验证或IP范围限制。攻击者只需在HTTP请求中包含自定义的X-Forwarded-For或X-Real-IP头,即可覆盖真实的客户端IP。例如,攻击者可以发送带有'X-Forwarded-For: 127.0.0.1'的请求,使服务器记录本地地址为客户端IP,从而绕过IP黑名单或触发基于信任IP的授权逻辑。修复版本0.27.0通过验证代理头的来源或禁用客户端可控的代理头来解决此问题。