AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 573821
Accepted
MrSnrub
MrSnrub
Asked: 2014-02-07 15:59:52 +0800 CST2014-02-07 15:59:52 +0800 CST 2014-02-07 15:59:52 +0800 CST

Apache - 如何限制 Content-Type 标头长度以避免 CVE-2014-0050?

  • 772

周四,Tomcat 邮件列表中公布了 Tomcat 的 DoS 问题(“ [ SECURITY ] CVE-2014-0050 Apache Commons FileUpload and Apache Tomcat DoS”)。

攻击者似乎能够通过content-type在上传文件时发送一个过长的标头来导致无限循环(如果 Web 应用程序中使用了 Servlet 3.0+ 上传功能),据我第一眼理解该消息。

如果有人在 Apache httpd 服务器后面运行他们的 Tomcat 服务器(使用 AJP 和 mod_jk),那么可以做些什么来实现“将 Content-Type 标头的大小限制为小于 4091 字节”的建议?

当然,只要有可用的错误修复版本(通过下载页面或 Linux 发行版特定的软件包存储库),就应该更新。没有问题。但目前可用的 Tomcat 版本 7.0.50似乎仍然受到影响。

但是,在发布固定版本之前,作为一种快速的防御措施,人们能做些什么呢?

(无需...

  • 卸载当前的 Tomcat 包(从包存储库安装),
  • 从源代码(SVN)手动构建版本,
  • 手动部署它们(没有apt-getor aptitude),
  • 稍后再次卸载所有手动构建的东西,以支持从包存储库中舒适地更新版本)

是否有类似于此主题的临时解决方法:http ://wiki.apache.org/httpd/CVE-2011-3192 ?

那时,可以使用mod_headers、mod_setenvif或mod_rewrite来处理问题。是否有类似的 Apache httpd 技巧可以使格式错误的分段上传请求远离下游 Tomcat 服务器?

apache-2.2
  • 2 2 个回答
  • 2762 Views

2 个回答

  • Voted
  1. Shane Madden
    2014-02-07T16:17:46+08:002014-02-07T16:17:46+08:00

    是的,这应该有效。CVE 公告说 4091 字节,但意外披露的电子邮件似乎开发人员倾向于 70-128 字节作为限制。让我们选择 128,但可以根据需要进行调整:

    SetEnvIf Content-Type ^.{129,}$ bad-content-type=1
    RequestHeader unset Content-Type env=bad-content-type
    

    只是取消设置标头(而不是完全 403'ing 请求)可能对明显的攻击请求过于温和,但这应该可以完成工作。

    • 1
  2. Best Answer
    that guy from over there
    2014-02-18T09:07:13+08:002014-02-18T09:07:13+08:00

    apache(包括 Shane 的修改版本;阅读rfc我不会打赌长度Content-String总是 < 129

    RewriteEngine On
    RewriteCond %{HTTP:Content-Type} "multipart\/form-data;(\s*)boundary=[a-zA-Z0-9_-]{3000}"
    RewriteRule ^/(.*)$ /405.html [R=301,L]
    
    # modified 
    SetEnvIf Content-Type ^.{3000,}$ bad-content-type=1
    RequestHeader unset Content-Type env=bad-content-type
    

    nginx(没有找到解决方法 if() )

    server {
      ...
      if ($http_content_type ~* "multipart\/form-data;(\s*)boundary=[a-zA-Z0-9_-]{3000}" ) {
      return 403; 
      }
      ...
    
    }
    
    • 1

相关问题

  • Apache Django Mod_Wsgi - 自动重新加载应用程序

  • Apache:对多个虚拟主机使用相同的目录指令

  • Apache 上的子域不工作 - 找不到服务器

  • PHP 作为 CGI 还是 Apache 模块?

  • 避免将某些丢失的文件记录到 Apache2 错误日志中

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve