当前位置: 首页 > news >正文

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

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

  • 1. 漏洞原理
    • mod_proxy 架构
    • 漏洞怎么发生的?
  • 2. 漏洞危害
  • 3. 漏洞修复

CVSS评分:9.0

1. 漏洞原理

漏洞详细分析:

  • https://firzen.de/building-a-poc-for-cve-2021-40438
  • https://www.leavesongs.com/PENETRATION/apache-mod-proxy-ssrf-cve-2021-40438.html

mod_proxy 架构

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

举个例子,假设配置是:

ProxyPass /app http://backend:8080/api
  1. 用户访问http://yoursite/app/users

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

原始:/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

http://www.cnnetsun.cn/news/180950.html

相关文章:

  • Open-AutoGLM部署避坑指南,20年架构师亲授高可用场景适配秘诀
  • 为什么说Open-AutoGLM是首个真正具备自主学习能力的开源框架?
  • 一篇文章熟悉Java打包到部署
  • 数据结构 —— 顺序表
  • 基于springboot的大创管理系统(11549)
  • springboot基于安卓的老年养护与智能服务系统
  • EasyGBS助力智慧医院打造全方位视频监控联网服务体系
  • 【收藏级】全面拆解GraphRAG:从原理到实践,大模型知识库升级必备
  • Java多态——Java的三大特性之一,零基础小白到精通,收藏这篇就够了
  • 【Open-AutoGLM元宇宙适配终极指南】:揭秘三大核心技术突破与落地实践
  • Open-AutoGLM如何实现自主学习?:深度剖析其进化机制与训练闭环设计
  • [驱动之路——GPIO子系统]学习总结,万字长篇,一文彻底搞懂GPIO子系统(含GPIO控制器驱动框架解析)
  • Open-AutoGLM如何重塑城市治理?:3个真实案例揭示AI协同调度的颠覆性力量
  • 智能体式AI实战指南:从零构建IT自动化系统,程序员必学收藏教程
  • 家长用Realme手机,怎样远程管理孩子iPhone的屏幕使用时长?
  • 【Open-AutoGLM智慧城市协同调度】:揭秘未来城市交通智能调度的5大核心技术
  • Java SpringBoot+Vue3+MyBatis 宠物爱心组织管理系统系统源码|前后端分离+MySQL数据库
  • 【Open-AutoGLM自动驾驶交互核心技术】:揭秘AI驱动的车载人机协同新范式
  • 揭秘Open-AutoGLM如何重构电子病历管理:医生工作效率翻倍的底层逻辑
  • NMOS的 G和D并联一个小电容作用和目的
  • 【网络空间安全】P2P网络及限制策略
  • Open-AutoGLM与AppDynamics监控策略剖析(仅限资深架构师掌握的3种模式)
  • 2025年北京大学计算机考研复试机试真题(附 AC 代码 + 解题思路)
  • 【高并发场景下的救星】:Open-AutoGLM智能会话销毁算法详解
  • 为什么你的请假申请总被驳回?,深度剖析Open-AutoGLM流程提交常见陷阱
  • 基于STM32自动售货机控制系统设计
  • Open-AutoGLM会话销毁机制大揭秘:如何实现毫秒级资源释放
  • 【光伏风电功率预测】调度员最需要什么样的 AI 预测?从一条曲线到“可执行方案”
  • 【企业级报销系统深度解读】:Open-AutoGLM单据提交的7个核心要点
  • 揭秘Open-AutoGLM会话超时机制:3步实现稳定可靠的对话控制