Django 的安全政策¶
Django 的開發團隊致力於以負責任的態度回報和揭露與安全相關的問題。因此,我們已採用並遵循一套符合該理想的政策,並致力於讓我們能夠及時向 Django 的官方發行版本以及第三方發行版本提供安全更新。
回報安全問題¶
簡短版本:請透過電子郵件 security@djangoproject.com 回報安全問題.
Django 中大多數正常的錯誤都回報到我們的公開 Trac 實例,但由於安全問題的敏感性,我們要求不要以這種方式公開回報。
相反地,如果您認為您在 Django 中發現了具有安全隱含的問題,請透過電子郵件將問題描述發送到 security@djangoproject.com
。發送到該地址的郵件會寄達安全團隊。
一旦您透過電子郵件提交了問題,您應該會在 48 小時內收到安全團隊成員的確認信,並且根據需要採取的行動,您可能會收到進一步的後續電子郵件。
傳送加密報告
如果您想傳送加密電子郵件(選用),則 security@djangoproject.com
的公鑰 ID 為 0xfcb84b8d1d17f80b
,並且此公鑰可從大多數常用的金鑰伺服器取得。
Django 如何評估報告¶
以下是安全團隊在評估報告是否需要安全版本時使用的標準
漏洞存在於 Django 的受支援版本中。
漏洞適用於生產級的 Django 應用程式。這表示以下情況不需要安全版本
安全團隊可能會認定漏洞的根源在 Python 標準程式庫中,在這種情況下,會要求回報者向 Python 核心團隊回報漏洞。如需更多詳細資訊,請參閱Python 安全指南。
有時,可能會發布安全版本以協助解決熱門第三方套件中的安全漏洞。這些報告應來自套件維護人員。
如果您不確定您的發現是否符合這些標準,請仍透過電子郵件 security@djangoproject.com 私下回報。安全團隊會審閱您的報告並建議正確的處理方式。
受支援的版本¶
在任何給定時間,Django 團隊都會為數個 Django 版本提供官方安全支援
託管在 GitHub 上的主要開發分支(將成為 Django 的下一個主要版本)會收到安全支援。僅影響主要開發分支而不影響任何穩定發布版本的安全問題會在公開場合修正,而無需經過揭露流程。
最近的兩個 Django 發行系列會收到安全支援。例如,在導致 Django 1.5 發布的開發週期中,將會為 Django 1.4 和 Django 1.3 提供支援。在 Django 1.5 發布後,Django 1.3 的安全支援將會結束。
長期支援版本將會在指定的期間內收到安全更新。
當因安全原因發布新版本時,隨附的通知將會包含受影響版本的清單。此清單僅包含 Django 的受支援版本:較舊的版本也可能會受到影響,但我們不會調查以確定這一點,並且不會為這些版本發布修補程式或新版本。
Django 如何揭露安全問題¶
我們將安全問題從私人討論轉為公開揭露的流程涉及多個步驟。
在公開揭露前約一週,我們會傳送兩個通知
首先,我們會通知django-announce即將發布的安全版本的日期和近似時間,以及問題的嚴重性。這是為了協助需要確保有員工可以處理我們公告並根據需要升級 Django 的組織。嚴重性級別為
高
遠端程式碼執行
SQL 注入
中
跨網站指令碼 (XSS)
跨網站請求偽造 (CSRF)
阻斷服務攻擊
驗證失敗
低
敏感資料洩露
工作階段管理失敗
未驗證的重新導向/轉送
需要不常見組態選項的問題
其次,我們會通知人員和組織清單,主要由作業系統廠商和其他 Django 發行者組成。此電子郵件會使用來自Django 發行團隊的某人的 PGP 金鑰簽署,並包含
問題的完整描述和受影響的 Django 版本。
我們將採取哪些步驟來補救問題。
將會套用至 Django 的修補程式(如果有的話)。
Django 團隊將套用這些修補程式、發布新版本並公開揭露問題的日期。
在揭露當天,我們將採取以下步驟
將相關修補程式套用至 Django 的程式碼庫。
在Python 套件索引和djangoproject.com 網站上放置新套件,並在 Django 的 git 儲存庫中標記新版本,以發布相關版本。
在官方 Django 開發部落格上張貼公開條目,詳細描述問題及其解決方案,指向相關修補程式和新版本,並感謝問題回報者(如果回報者希望公開身分)。
向django-announce和oss-security@lists.openwall.com郵件清單發布連結到部落格文章的通知。
如果認為回報的問題特別具有時效性(例如,由於已知野外存在漏洞),則提前通知和公開揭露之間的時間可能會大幅縮短。
此外,如果我們有理由相信回報給我們的問題會影響 Python/Web 生態系統中的其他框架或工具,我們可能會私下與適當的維護者聯繫並討論這些問題,並與他們協調我們自己的揭露和解決方案。
Django 團隊還維護在 Django 中揭露的安全問題檔案。
誰收到提前通知¶
收到安全問題提前通知的人員和組織的完整清單不會公開,也不會公開。
我們的目標是盡可能縮減此清單,以便更好地管理揭露之前的機密資訊流。因此,我們的通知清單不是 Django 使用者的簡單清單,並且身為 Django 使用者並不足以被列入通知清單。
廣義來說,安全通知的接收者分為三組
作業系統廠商和其他 Django 發行者,他們為回報其 Django 套件的問題或為一般安全回報提供適當通用(即不是個人的個人電子郵件地址)的聯絡地址。在任一情況下,此類地址不得轉寄到公開郵件清單或錯誤追蹤器。轉寄到個人維護者或安全回應聯絡人的私人電子郵件的地址是可接受的,但強烈建議使用私人安全追蹤器或安全回應群組。
在個案基礎上,已證明致力於回應並負責任地處理這些通知的個別套件維護者。
在個案基礎上,其他實體,根據 Django 開發團隊的判斷,需要了解即將發生的安全問題。通常,此群組的成員將由一些規模最大和/或最有可能受到嚴重影響的 Django 已知使用者或發行者組成,並且需要有能力負責任地接收、保密並處理這些通知。
安全稽核和掃描實體
根據政策,我們不會將這些類型的實體新增至通知清單。
要求通知¶
如果您認為您或您獲授權代表的組織屬於上述其中一組,您可以透過電子郵件 security@djangoproject.com
要求將您新增至 Django 的通知清單。請使用主旨行「安全通知要求」。
您的要求必須包含以下資訊
您的完整真實姓名和您代表的組織名稱(如果適用),以及您在該組織中的職務。
詳細說明您或您的組織如何符合上述至少一組標準。
詳細說明您為何要求安全通知。再次提醒,請記住,這不僅僅是 Django 使用者的清單,絕大多數使用者應該訂閱django-announce以接收有關安全版本何時發生的提前通知,而無需了解問題的詳細資訊,而不是要求詳細的通知。
您希望新增至我們通知清單的電子郵件地址。
說明誰將接收/審閱傳送到該地址的郵件,以及關於將會採取的任何自動行動的資訊(即,在錯誤追蹤器中歸檔機密問題)。
對於個人,與您的地址相關聯的公鑰 ID,可用於驗證您收到的電子郵件並加密傳送給您的電子郵件(如果需要)。
一旦提交,您的要求將由 Django 開發團隊考慮;您將在 30 天內收到回覆,通知您要求的結果。
請同時謹記,對於任何個人或組織而言,接收安全通知是 Django 開發團隊全權酌情授予的特權,且此特權可能隨時被撤銷,無論是否有說明。
請提供所有必要資訊
若您在首次聯繫時未能提供必要資訊,將會對您是否能獲得核准產生負面影響。