Apache-2.2
Apache - 如何限制 Content-Type 標頭長度以避免 CVE-2014-0050?
星期四,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-get
oraptitude
),- 稍後再次解除安裝所有手動建構的東西,以便從包儲存庫中舒適地更新版本)
是否有類似於此主題的臨時解決方法:http ://wiki.apache.org/httpd/CVE-2011-3192 ?
那時,可以使用mod_headers、mod_setenvif或mod_rewrite來處理問題。是否有類似的 Apache httpd 技巧可以使格式錯誤的分段上傳請求遠離下游 Tomcat 伺服器?
apache(包括 Shane 的修改版本;閱讀rfc我不會打賭長度
Content-String
總是 < 129RewriteEngine 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; } ... }