網站開發應用框架Django權限控制失誤,完整密碼hash曝光
- 發布單位:TWCERT/CC
- 更新日期:2019-04-03
- 點閱次數:460
CVE編號
內文
●概述:
鑑於多數網站有同質性設計需求,如註冊、後台、表單等,憑藉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的操作權限定義,預設僅有增加
故8月前舊版(Django 1.11.x、Django 2.0.x)均無影響,實際弱點版本僅2.1、2.1.1,10月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
相關連結
- https://www.djangoproject.com/weblog/2018/oct/01/security-release/
- https://hub.packtpub.com/django-2-1-2-fixes-major-security-flaw-that-reveals-password-hash-to-view-o
- https://docs.djangoproject.com/en/2.1/releases/2.1.2/
- http://www.vuxml.org/freebsd/004d8c23-c710-11e8-98c7-000c29434208.html
- https://kinegratii.github.io/2018/06/19/feature-note-for-django-21/
- https://django-2-docs-zh-cn.readthedocs.io/zh_CN/dev/topics/auth/default.html
- https://securitytracker.com/id/1041749
- https://django-2-docs-zh-cn.readthedocs.io/zh_CN/dev/topics/auth/passwords.html
- https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-16984
- https://i.ytimg.com/vi/kk1mbtk8kPc/maxresdefault.jpg