開源電子健康紀錄系統爆數個嚴重漏洞,病患隱私與系統安全拉警報

支持全球2億人病歷的開源電子健康紀錄系統OpenEMR,遭Project Insecurity揭露存在多個嚴重等級高的安全性漏洞,從身份驗證旁路、SQL資料隱碼、遠端程序碼執行以及任意檔案操作等漏洞都有,OpenEMR社群已積極處理漏洞問題,使用者務必進行OpenEMR版本更新。

開源電子健康紀錄系統爆數個嚴重漏洞,病患隱私與系統安全拉警報

研究團隊從GitHub上下載了OpenEMR 5.0.1.3代碼進行安全性測試,發現了許多嚴重的漏洞。報告一開始提到的漏洞是病患入口頁面的身份驗證旁路漏洞,受影響的共有15個Php頁面,沒有經過身份驗證的攻擊者,可以簡單的瀏覽登入頁面並修改請求網址後,繞過登入頁面存取想訪問的頁面,這個漏洞造成的影響,會讓網頁程序隨機展示真實病患資料。

OpenEMR也有嚴重的SQL資料隱碼漏洞,總共有8個Php程序受到影響,未經授權的用戶可以插入SQL查詢指令,查看特定資料庫資料,甚至執行特定資料庫功能。像是對Search_code.php在發送POST請求時,可以在容易受攻擊的文字參數中,使用有效負載進行SQL資料隱碼,文字參數在沒有任何消毒處理下,直接被用於SQL查詢中,駭客可以利用此漏洞對OpenEMR界面進行身份驗證。

開源電子健康紀錄系統爆數個嚴重漏洞,病患隱私與系統安全拉警報

另外一個SQL資料隱碼的例子,則是OpenEMR代碼的品質不一,在Anything_simple.php的SQL查詢,有使用佔位符來防止SQL資料隱碼攻擊,但是在Forms.inc中的getProviderIdOfEncounter函式,卻沒有使用相同的方法來防範攻擊,把來自使用者輸入的參數,透過getProviderIdOfEncounter函式傳遞直接放入SQL查詢中,使網頁應用程式容易受到SQL資料隱碼攻擊。

Project Insecurity研究團隊對OpenEMR,做了多個遠端代碼執行攻擊的概念性驗證,而且因為OpenEMR其他Php程序安全性不夠高,導致攻擊更加容易成功。研究團隊舉例,其中一個遠端代碼執行漏洞落在Sl_eob_search.php中,不過要完成攻擊必須獲得Print_command全局變量,不過攻擊者可以從Edit_globals.php這個程序輕易的取得Print_command。

開源電子健康紀錄系統爆數個嚴重漏洞,病患隱私與系統安全拉警報

另外,數個病患入口頁面的POST變量,在Import_template.php中被定義,而這些變量在使用者輸入後,沒經過消毒處理的情況下,就直接被以函式傳遞,使攻擊者有機可乘,可以用病患權限從系統上傳、修改、存取或是刪除檔案。研究團隊以任意檔案寫入為例,攻擊者可以從入口頁面製造請求,上傳任何型態的檔案包括Php檔案,而這將幫助攻擊者達成程​​式碼執行以及特權提升。攻擊者不只可以寫入任意檔案,甚至可以讀取及刪除任意檔案。

Project Insecurity在2018年7月7日通報漏洞給OpenEMR,7月20日OpenEMR官方就推送了漏洞補丁更新,研究團隊提到,OpenEMR以非常積極的態度處理漏洞問題。


分享到:


相關文章: