資安JAVA(二三): HTTP Header Injection

來源:John Melton's Weblog
標題:YEAR OF SECURITY FOR JAVA – WEEK 23 – HTTP HEADER INJECTION
作者:John Melton
What is it and why should I care?

HTTP Header Injection 是一種影響 HTTP header 的特定注入攻擊方式。攻擊方式是透過操作 header 資料製造問題( response splitting, CRLF injection, cache poisoning, XSS, 等等)。這是個不被關注的問題,也比較少有針對性保護。

其中最常見的一種是 CRLF injection,CR 代表Carriage Return [%0d 或 \r] 、LF 代表 Line Feed [%0a 或 \n],攻擊方式是透過加入 CRLF 到 header 後造成伺服器以不安全的方式解讀response,而讓攻擊者可以控制被切斷的 response 。

What should I do about it?

作者對於 header injection 的建議和對付其他注入攻擊一樣 ─ 驗證和編碼。針對 header injection 你可以參考以下步驟:

1. 標準化 Canonicalize ─ 確保驗證前的資料是最單純的格式。

2. 驗證 Validate ─ 使用白名單規則驗證,最少你必須要過濾所有編碼形式的 [%0d%0a]。

3. 編碼 Encode ─ 輸出結果應編碼過再輸出。假使你的輸入驗證非常嚴謹,這步驟是額外保險。保險起見,以防任何沒有經過驗證的資料輸出,還是編碼一下吧。而且,請特別注意 CR/LF 的編碼。

參考資料
老樹開新花,再看 HTTP Response Splitting 攻擊
http://www.cgisecurity.com/lib/HTTP-Request-Smuggling.pdf
http://www.securityfocus.com/archive/1/411585
http://packetstormsecurity.org/papers/general/whitepaper_httpresponse.pdf
http://lists.grok.org.uk/pipermail/full-disclosure/2006-February/042358.html
http://cwe.mitre.org/data/definitions/113.html
https://www.owasp.org/index.php/Interpreter_Injection#HTTP_Response_Splitting
https://www.owasp.org/index.php/HTTP_Response_Splitting
https://www.owasp.org/index.php/CRLF_Injection

———–———–
資安Java: 上一篇 || 下一篇
———–———–

留言

這個網誌中的熱門文章

資安JAVA(十):X-Content-Type-Options

資安JAVA(十一):X-XSS-Protection

資安JAVA(四):Session Cookie HTTPOnly Flag