Play Framework 安全公告

WS URI 解析無效

日期

2017 年 8 月 28 日

說明

在 AsyncHttpClient 的 URI 解析中發現一個低嚴重性漏洞,Play WS 伺服器和 play-ws-standalone 函式庫會使用此漏洞。

如果 URI 的權限元件後面接著 #,這個函式庫會導致 WS API 錯誤解析權限元件。例如,傳遞 http://example.com#@evil.com/foo.txt 實際上會向 evil.com 發出請求。

AsyncHttpClient 問題也說明在 AsyncHttpClient 問題 1455

影響

如果允許使用者傳遞任意 URI 字串,此漏洞可用於規避主機名稱的白名單或黑名單。符合 RFC 的剖析器會正確剖析 http://example.com#@evil.com/foo.txt。請注意,此問題不會影響路徑開頭帶有斜線的 URI,例如 http://example.com/#@evil.com/foo.txt

受影響版本

解決方法

使用相容的剖析器剖析 URI,例如 java.net.URI。如果路徑為空,請將空路徑替換為單一斜線。

修正

升級至 play-ws-standalone 1.0.7,或,如果使用 Play 2.5.x,請升級至 async-http-client 2.0.35。Play 2.4.x 及更早版本使用的 AsyncHttpClient 中尚未修正此問題。

正確版本將自動提供於 Play 2.6.4 及更高版本,以及 Play 2.5.17 及更高版本。

致謝

發現此 AsyncHttpClient 漏洞的功勞歸於 Agarri 的 Nicolas Grégoire。