Apache-2.2

Apache - 如何限制 Content-Type 標頭長度以避免 CVE-2014-0050?

  • February 17, 2014

星期四,Tomcat 郵件列表中公佈了 Tomcat的****DoS問題( "$$ SECURITY $$ CVE-2014-0050 Apache Commons FileUpload 和 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_headersmod_setenvifmod_rewrite來處理問題。是否有類似的 Apache httpd 技巧可以使格式錯誤的分段上傳請求遠離下游 Tomcat 伺服器?

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; 
 }
 ...

}

引用自:https://serverfault.com/questions/573821