1. 程式人生 > >http 漏洞解決辦法

http 漏洞解決辦法

HTTP協議Content Lenth限制漏洞導致拒絕服務攻擊


漏洞描述:
  在HTTP協議中,當使用POST方法時,可以設定ContentLenth來定義需要傳送的資料長度,但是HTTP協議中並沒有對ContentLenth的大小進行限制,這使得拒絕服務-記憶體耗盡攻擊成為可能。
  在IIS中,使用者POST資料時,系統先將使用者上傳的資料存放在記憶體中,當用戶完成資料傳送(資料的長度達到ContentLenth時),IIS再將這塊記憶體交給特定的
  檔案或CGI處理;假如使用者POST非常大的資料(通過多次資料傳送)例如ContentLenth:999999999,在傳送完成前,記憶體不會釋放,攻擊者可以利用這個缺陷,連續向WEB伺服器傳送垃圾資料直至WEB伺服器記憶體耗盡。在Web伺服器記憶體不足的時候,我們可以明顯的看到系統速度下降、硬碟讀寫增多(快取)等現象的出現。


  值得注重的是,這種攻擊方法基本不會留下痕跡:
  首先,由於資料傳送不會完成(只要ContentLenth足夠大,比如Content-Length:2147483647),所以IIS日誌無法記錄(IIS日誌是在操作完成後才記錄的)
  其次,由於進行的是正常的POST操作,而且資料是緩慢送入WEB伺服器的,因此防火牆很難發現這樣的操作。(除非在防火牆上
  對ContentLenth進行監測)
  第三,這種攻擊對於攻擊者的主機來說幾乎沒有任何負荷,既不會消耗CPU更不會佔用記憶體,最多是佔用了部分頻寬。
 解決方法:
  編寫相應的Filter,對於過大的ContentLenth進行過濾。