2018年12月7日 星期五

學習管理平台Moodle-登入介面有CSRF漏洞[已修補]

Moodle™(開放原始碼的線上學習管理系統,以PHP開發,相容DB有MySQL、PostgreSQL、MSSQL等資料庫),跨Linux、Windows平台,支援全球150餘國、70種語系、1.27億用戶。
Moodle.org 本月19日發佈登入表單漏洞(MSA-18-0020:The login form is not protected by a token to prevent login cross-site request forgery.)
TWCERT/CC 也於11/22發佈電子學習平台Moodle登入介面具嚴重CSRF缺陷,現已修補建議各級學校計算機中心儘速部署適合版本。
據本公司資深工程師表示,這個漏洞主要是因為最近幾個新版本中加入的 login token 的功能(為了跟舊程相容,多增加了$CFG->disablelogintoke這個變數),本來是用來保護使用者session 的(對抗CSRF),但因為Moodle 的config可能被設定將login token設定成disable, 反而關閉了這個功能。
CSRF概念網上很多文章請自行google。
要判斷你的Moodle有没有可能中標;TWCERT/CC 寫的有點複雜,這裡筆者整理較簡單的方式:
這個問題出在前一個版本(3.1.14, 3.3.8, 3.4.5, 3.5.2)的設計上, config.php 如果被加了disablelogintoken=true,就不檢查token。

3.1以前的版本

基本上官方不更新了,請自行處理;不然就是找國內 Moodle 維護廠商.

3.1之後的版本:

  • 版本 3.1.13, 3.3.7, 3.4.4, 3.5.1 這些版本(含)以前, 如果已有客製(不能更版), 請在自行 login form 加入token 檢查機制, 並不一定要跟著更版。
  • 版本在 3.1.14, 3.3.8, 3.4.5, 3.5.2 請直接更新到 3.1.15, 3.3.9, 3.4.5, 3.5.3。
以上資訊來自本公司Moodle 對國內Moodle修正的記錄, 詳細請參考文內連結網站, 如有錯誤, 敬請指教, 謝謝.