MSA-18-0020

說明

Moodle.org 本月19日發佈登入表單漏洞 MSA-18-0020: Login CSRF vulnerability in login form (The login form is not protected by a token to prevent login cross-site request forgery.);此漏洞有可能出現跨站請求偽造(Cross-site Request Forgery,CSRF),目前 Moodle 已經推出了3.1至3.5版本各分支的修正版本,這個漏洞的危險程度列為重大(serious),已建檔為 CVE-2018-16854 列管(目前尚無資料)。

TWCERT/CC 也於 11/22 發佈電子學習平台Moodle登入介面具嚴重CSRF缺陷,現已修補,建議各級學校計算機中心儘速部署適合版本。


CSRF 是一種挾制用戶在當前已登入的 Web 應用程式上執行非本意操作的攻擊方法,利用的是網站對用戶網頁瀏覽器的信任。此項弱點來自 Moodle 登入表單的安全機制,因此攻擊者可在使用者登入 Moodle 後,存取該網站並執行某些非使用者本身意願的操作,像是修改課程、加退選課程、修改成績、傳送訊息、寄送電子郵件、甚至登記付費課程等等。


解決方案

3.1以前的版本

包含3.0、2.9...等版本,官方已不更新;基本上就是要解決登入表單 CSRF 的問題,目前各學校機關皆已排程處理,詳細解決方式請聯絡我們

3.1以後的版本

解決方案為盡快升級到最新版本,目前最新版本為 3.1.15、3.3.9、3.4.6、3.5.3、3.6.0。

但還有一件事情需要注意,config.php 裡面的 $CFG->disablelogintoken 需設為 false。

佈景主題修改方式

適用版本:3.1.15、3.3.9、3.4.6、3.5.3、3.6.0

因在新版的佈景主題或外購的佈景主題會有此問題,必須進行修改

1. Mustache Template 的修改方式

請在 login form 的樣板內增加這一行

<input type="hidden" name="logintoken" value="{{logintoken}}">

2. 傳統佈景的修改方式

請在佈景的 lib.php 找到產生login form 的程式碼內加入這一行

$output .= '<input type="hidden" name="logintoken" value="'.s(\core\session\manager::get_login_token()).'">';


佈景主題相關服務請點我瀏覽