按 Enter 到主內容區
:::

TWCERT-電子報

:::

網站開發應用框架Django權限控制失誤,完整密碼hash曝光

發布日期:
字型大小:
  • 發布單位:TWCERT/CC
  • 更新日期:2019-04-03
  • 點閱次數:460
網站開發應用框架Django權限控制失誤,完整密碼hash曝光

CVE編號

CVE-2018-16984

內文

●概述:
鑑於多數網站有同質性設計需求,如註冊、後台、表單等,憑藉Django公開原始碼,開發者毋須重複製造相同模組,僅需專注開發專屬程式,Django是由Python寫成之Web應用框架,採用了MVT(Model、View、Template)軟體設計模式,其核心框架包括Web伺服器、內建分發系統、表單序列化及驗證系統,並支援中介軟體。今年8月釋出Django 2.1版,經Phithon Gong研究測試,得知新擴充之Model操作權限"view",能令使用者查閱任意帳號之完整密碼雜湊值,而管理者即使具備"change"權限,亦僅見局部遮蔽之hash資料,此權限管控失當事件,對運作MD5、SHA1等演算法之站台不利,其密碼仍存破解之虞,Django軟體基金會已公告修補檔及升級軟體。
●編註:
(1)管控瑕疵
為保障使用者隱私權,Django針對user模型的密碼管理方式,是儲存雜湊值,而非密碼明文,然近期推出的版本,卻發生不合邏輯的permission配置狀況,具備"change"權限的管理者,操作修改表單介面時,僅能見到其他帳號的局部密碼hash值,但有"view"權力的用戶,竟能查看完整hash內容,既然能修改,自當能查閱,可是僅該唯讀者卻不受資料遮蔽約束,能獲得所有帳號與對應之密碼hash,通常雜湊加密不易破解,但較弱的MD5、SHA1等早期演算法,則未必安全無虞。
(2)影響範圍
過去Django對Model的操作權限定義,預設僅有增加、刪除、修改三者,2018年8月1日推出Django 2.1,改版後擴充一項查閱,透過has_view_permission函數加以控制用戶查閱權,當然某個帳號若具有修改權,也應有查看權,故ModelAdmin.has_view_permission()傳回boolean值為True,表示該用戶同時擁有"Change"與"View"權限。
故8月前舊版(Django 1.11.x、Django 2.0.x)均無影響,實際弱點版本僅2.1、2.1.1,10月1日更新後已排除上述軟體瑕疵。

影響產品

Django 2.1.1 /Django 2.1

解決辦法

(1)針對既有版本修補:
Django master系列,參考https://github.com/django/django/commit/bf39978a53f117ca02e9a0c78b76664a41a54745
Django 2.1系列,參考https://github.com/django/django/commit/c4bd5b597e0aa2432e4c867b86650f18af117851
(2)升級Django 2.1.2版,下載壓縮檔Django-2.1.2.tar.gz,連結https://www.djangoproject.com/m/releases/2.1/Django-2.1.2.tar.g
回頁首