CVE-2021-40438_ Apache HTTP Server mod_proxy 模块 SSRF漏洞

CVE-2021-40438_ Apache HTTP Server mod_proxy 模块 SSRF漏洞

  • [1. 漏洞原理](#1. 漏洞原理)
  • [2. 漏洞危害](#2. 漏洞危害)
  • [3. 漏洞修复](#3. 漏洞修复)

CVSS评分:9.0

1. 漏洞原理

漏洞详细分析:

mod_proxy 架构

简单说说mod_proxy 架构:mod_proxy 是一个框架,具体协议由 mod_proxy_httpmod_proxy_fcgimod_proxy_ajp 等子模块实现。每个子模块会注册自己的 canon handler 来把配置或请求 URL 规范化,最终生成 r->filename 这样的中间表示(以 proxy: 开头的字符串),供后续代理逻辑使用。

举个例子,假设配置是:

bash 复制代码
ProxyPass /app http://backend:8080/api
  1. 用户访问 http://yoursite/app/users

mod_proxy_http的canon handler把这个请求规范化:

plain 复制代码
原始:/app/users
规范化后:proxy:http://backend:8080/api/users
  1. 这个标准化的字符串保存到 r->filename
  2. 后面的代理逻辑看到proxy:开头的内容,就知道:
  • 这是个代理请求
  • 具体由哪个子模块处理(根据协议类型)

漏洞怎么发生的?

Apache 支持一种 "unix socket + 后端 URL" 的混合写法(例如 unix:/path/to.sock|http://...)------这是用于把反代指向本地 UDS 的便利语法。解析步骤里有个 fix_uds_filename 函数负责把 unix: 部分解析成 uds_path,把 | 之后的部分当作真实目标 URL

但是,r->filename 的后半段(path/search)来源于 HTTP 请求中的 path/query,而不是仅来源于静态配置,因此攻击者能在请求中插入操控内容,影响 r->filename 的最终字符串

fix_uds_filename 在把 unix: 的 path 变成 uds_path 时,会调用 ap_runtime_dir_relative → 最终走到 apr_filepath_merge。当 apr_filepath_merge 因入参超长或其他条件返回错误时,会导致 ap_runtime_dir_relative 返回 NULLuds_path 未被正确设置,从而使代理逻辑走回"以 TCP/域名/URI 连接"的分支,使用 | 之后的那个 URL 作为目标------这就给了攻击者控制代理目标的机会。

2. 漏洞危害

借助该 SSRF,攻击者可访问内部网络服务,窃取敏感信息等等

该漏洞并非只能发 HTTP 请求,其能力取决于 Apache mod_proxy 当前加载了哪些 "scheme handler" 模块。

如果服务器加载了其它 proxy 扩展模块,则此 SSRF 就能支持更多的协议。

3. 漏洞修复

目前厂商已发布升级补丁以修复漏洞,补丁获取链接:

https://access.redhat.com/security/cve/cve-2021-40438

相关推荐
日志易2 小时前
日志易5.5正式发布,强化可视化运维与企业级安全,赋能智能日志管理
大数据·运维·安全
专业开发者2 小时前
安全防护蓝牙 ® 网状网络代理应用
网络·物联网·安全
ZFJ_张福杰4 小时前
【技术深度】金融 / 钱包级 Android 安全性架构(毒APP)
android·安全·金融·架构·签名证书
安当加密4 小时前
通过ASP认证系统作为 RADIUS 认证服务器:解决异地办公登录安全问题的实践方案*
运维·服务器·安全
unable code16 小时前
攻防世界-Misc-Wire1
网络安全·ctf·misc·1024程序员节
ALex_zry18 小时前
C++20和C++23 在内存管理、并发控制和类型安全相关优化方式的详细技术分析
安全·c++20·c++23
是喵斯特ya18 小时前
数据库的权限提升
数据库·安全
网安_秋刀鱼21 小时前
【java安全】shiro鉴权绕过
java·开发语言·安全
浔川python社21 小时前
《C++ 小程序编写系列》(第四部):实战:简易图书管理系统(类与对象篇)
java·开发语言·apache