依照慣例,security issue 都會取個名字,這次叫做 httpoxy:「A CGI application vulnerability for PHP, Go, Python and others」。
事情發生在兩個命名變數上的衝突:
- RFC 3875 (The Common Gateway Interface (CGI) Version 1.1) 定義了 CGI 環境會把 Header 裡的
Proxy
欄位放到環境變數裡的HTTP_PROXY
。 - 而很多程式會拿環境變數裡的
HTTP_PROXY
當作 proxy 設定。
這件事情 2001 年在 libwww-perl 就有發生過 (並且修正),curl 也發生過 (然後修正),2012 年在 Ruby 的 Net::HTTP 也發生過 (也修正了)。
然後在 2016 年還是被發現有很多應用程式會中獎... 這頭好痛啊 :o