2011年6月19日 星期日

urllib/urllib2 安全性問題修正

原文的網址 urllib Security Vulnerability Fixed

Guido van Rossum 針對 CVE-2011-1521 中提到的 Python URL 程式庫安全性問題 最近送了一份修正. 儘管很少有安全性上的問題, 這是個讓社群了解到當問題產生時要如何報告, 處理以及修正的好機會.

報告問題

如果你在 CPython 當中發現安全性問題, 我們首先希望你隱藏問題的細節. 在確定你發現了一個真正的安全性問題之後, 產生一份簡潔但是詳細的報告是將你所知道的狀況傳達給核心開發人員的關鍵.

一份好的報告清楚的解釋這個問題會影響到系統當中的哪些相關部份. 如果這個問題發生在特定的平台或是由於相依性造成, 報告這些也會有幫助. 儘管這個漏洞通常都會在所有的有效版本當中被測試, 報告有哪些版本被影響也會有幫助. 最後, 如果你有測試資料可以重現這個問題, 也請在報告當中附上. 請將你的報告寄到 security@python.org.

在 Google Security Team 的 Niels Heinen 最近 提交了一份很好的報告. 他發現到在標準程式庫 urlliburllib2 模組當中關於 HTTP 302 處理重導的問題. 伺服器可能會將重導的要求轉至不適當的地方, 這種情況可能會造成對資料或是系統的危害. 在他的報告當中, Neils 解釋了兩種會顯露出這個問題的狀況.

首先, 由於 urllib/urllib2 支援處理 file:// 的 URL, 對於 file:///etc/passwd 的重導將會暴露出密碼資料. Neils 也解釋了重導到像是 file:///dev/zero 的系統設備可能會導致系統資源的耗損, 造成阻斷服務攻擊.

處理報告

由於安全性報告相當敏感, 僅有少數可被信賴的開發者維護著 security@python.org 的列表, 他們將會盡快地處理這些報告. 如果你希望將你傳輸的報告加密, 請參考 security news 頁面中關於 OpenPGP 的細節.

如果確定了的確有一個安全性問題, 一份公開的 bug 報告將會隨著一份修正被釋出. 在這個案例中, Guido van Rossum 在 issue #11662 當中公開了這個問題, 並且伴隨著一份修正.

解決問題

Guido 的修正所做的是限制重導只能夠重導到 http://, https:// 以及 ftp://. FTP 重導原本就被視為可接受, 它是個相當常見的重導: 鏡像下載系統會把下載的要求重導到比較近的 FTP 伺服器.

對於 Python 2.x 來說, FancyURLopenerredirect_internal 方法現在會在重導到不恰當的 URL 時產生 IOError 例外. HTTPRedirectHandlerhttp_error_302 也會作同樣的事情, 它將會產生 HTTPError 例外. 在 Python 3 當中, urllib.request 也有同樣的修正. 在這份修正中, 也包含了兩份會重導到合法以及不合法 URL 的實際測試.

對於接受修正的使用者, Python 2.5 最終的安全發行版將會很快的釋出. 儘管對於 2.6, 2.7, 3.1 以及 3.2 這些其他的維護分支來說, 目前還沒有預定的修正日期, 但是這些版本都已經收錄解決此問題的修正.

沒有留言:

張貼留言