Moodle安全漏洞如何啟動遠程代碼執行?
Moodle是開源基於PHP的學習管理係統,全球數以萬計的大學都在使用它,然而,近日Moodle中發現的漏洞可能讓服務器及其數據受到攻擊。根據發現該漏洞的研究人員表示,Moodle安全漏洞實際由幾個小漏洞組成,它可使攻擊者在相關服務器執行PHP代碼。那麼,這個漏洞執行條件是什麼,以及我們應該如何阻止它?
Michael Cobb:Vaultra公司安全研究人員兼首席執行官Netanel Rubin發現,通過利用一係列小漏洞,他可將它們鏈接起來在運行Moodle的服務器遠程執行代碼。
Moodle是一個開源學習管理係統,它存儲著大量敏感信息,例如學生成績、測試和隱私數據,這使其成為黑客的攻擊目標。Moodle安全漏洞被跟蹤為CVE-2017-2641以及Moodle Tracker問題MDL-88010。
這種攻擊幾乎可在所有Moodle版本執行,因此管理員應該升級到最新版本3.2.2,以盡快解決該問題。除了更新到最新版本,管理和還應該檢查Moodle內任何新管理員、插件或者模板,並在文件係統中搜索任何新文件,以防服務器遭到入侵。
Moodle係統的規模和複雜性導致這些編碼和邏輯缺陷,也最終產生這個Moodle安全漏洞;Moodle係統包含數千個文件、數百個組件以及大約200萬行PHP代碼,由不同開發人員在不同時間編寫和更新。
此前,Moodle中添加了一個新函數update_user_preferences來替換update_users函數,它會進行特權檢查,因此即使攻擊者可通過用戶偏好設置來更改設置,也隻能以自己的權限更改。
雖然這個新函數消除了更改每個用戶屬性的可能性,但該代碼無法檢查哪些偏好設置被更改。前麵的函數使用setuserpref.php文件來檢查需要更新的偏好設置列在ajax_updatable_user_prefs數組中,該數組定義了可通過Ajax更改的偏好設置,以確保不會更改關鍵值。
具有諷刺意味的是,為了減少對該用戶屬性更新功能的任何潛在濫用情況,這個新的特權檢查實際上引入了Moodle安全漏洞。開發人員可能認為用戶偏好設置不可能被利用來加載全麵攻擊,因為它們隻是影響圖形用戶界麵部分。
然而,缺乏包含讓對象注入攻擊可更新整個數據庫的任何行,例如管理員賬戶、密碼和站點配置。Rubin發現,在代碼開發過程中做出的這個假設和其他假設可能被利用來最終執行PHP代碼。
邏輯漏洞可能出現在任何具有大型代碼庫的係統中,特別是在由不斷變化的開發團隊在長時間開發的係統。
根據《Code Complete》作者Steve McConnell表示,超過512000行代碼的軟件項目平均每千行代碼中有4到100個編碼錯誤。典型的Web應用會使用多種語言,例如Java、HTML、PHP、Python、CSS、第三方庫和組件等,很少有開發人員知道或者了解如何使用和整合它們,而不會引入任何安全漏洞。
為了減少開發人引入邏輯漏洞或者省略安全及驗證檢查,應該要求他們使用約定的注釋風格來添加最低級別的代碼注釋,以及更詳細的支持文檔。維基百科有完整的注釋樣式列表。
盡管花時間評論和記錄代碼會減緩開發速度,但這可確保在未來更改代碼的開發人員可完全了解函數的作用、操作方式以及需要對處理的數據進行哪些檢查。同樣重要的是當函數在接收其他函數傳遞的數據時,不能認為數據已經經過檢查,因為前麵的函數可能通過不同的要求或規則對其進行檢查。
這方麵很好的示例是電話號碼,從數據庫檢索和顯示用戶電話號碼的函數可能會接收+和()符號,但如果該函數將數據傳遞給實際撥打號碼的函數,且在處理前沒有移除這些符號,可能會導致該函數失效。
本文作者:鄒錚
來源:51CTO
最後更新:2017-11-03 15:34:46
上一篇:
如何改進安全運營和安全分析水平
下一篇:
勒索軟件恢複:短期損失難免,但長遠益處大
預防健康永遠比生病治療更為重要
MaxCompute JDBC 2.2 發布說明
Java基礎知識——SDK、JDK、JRE、JVM、JDT、CDT等之間的區別與聯係
"嫦娥"探月數據公布:高清真彩色月麵圖像首公開
sql server2005裏導入bak文件
《Linux From Scratch》第二部分:準備構建 第四章:最後的準備- 4.2. 創建 $LFS/tools 文件夾
服務器上使用 git 更新 wordpress 內核方案
智慧城市建設三大忌
RecyclerView Prefetch功能探究
linux係統centOS6.5使用goaccess工具分析nginx網站日誌