數位發展部資通安全署(資安署)資通安全網路月報每期內容當中,都會回顧政府機關網站最近遭遇的資安重大事件案例,而在本週發布的115年7月月報檢討的狀況,是近期發現的 機關網站密碼重設與一次性密碼(OTP)驗證機制失效事件 ,結果導致攻擊者得以繞過雙重驗證、修改密碼,甚至有管理帳號因此被非法登入的情形。
資安署特別以兩個案例來説明:首先,是驗證碼以明碼形式外洩的問題,導致攻擊者無須收取驗證碼郵件,即能直接重設密碼。資安署表示,有機關網站提供的「以電子郵件驗證碼重設密碼」功能,其驗證碼卻以明碼形式存在於網頁原始碼中,這導致攻擊者只要事先查得使用者的電子郵件地址,無須實際登入信箱收取驗證信,即可直接從網頁原始碼取得驗證碼,進而重設該帳號密碼。
其次,則是攻擊者查得管理員電子郵件地址後,可藉由攔截請求封包發現密碼重設路徑,進而能在未完成身分驗證的情況下修改密碼。不僅如此,攻擊者以新密碼登入時,網站又將OTP密碼直接回傳至瀏覽器,而不是透過其他管道將OTP密碼傳送給合法使用者,於是攻擊者可再從封包中取得OTP,繞過第二階段驗證,登入管理帳號。
綜觀兩個案例,雖然手法不同,但共同問題在於驗證資訊暴露於前端,或後端未妥善確認密碼重設流程及使用者身分,因而使各項驗證措施遭逐一繞過。
該如何防範?資安署建議從3個面向著手強化:
(一)強化密碼重設流程驗證。例如,重設密碼應限定用於原申請帳號及該次密碼重設作業,設定有效期限及單次使用限制,而重設Token或驗證碼應採安全隨機方式產生,並具備「限時、單次、綁定原帳號」三大特性。此外,伺服器應在確認憑證有效後,始得允許修改密碼,避免僅憑重設頁面網址即可操作。
(二)避免驗證資訊暴露於前端。例如,電子郵件驗證碼及OTP密碼不得出現在網頁原始碼、隱藏欄位或伺服器回應內容中。因此,前端僅負責接收使用者輸入,憑證保存及驗證則應由伺服器或可信任的身分驗證服務執行;並且要注意!在完成OTP密碼驗證前,不得授予完整登入權限。
(三)重設密碼後終止既有存取權限。例如,密碼重設完成後,應立即使重設憑證失效,終止既有登入工作階段,並要求使用者依正常登入流程重新驗證密碼及OTP密碼,不宜直接建立登入狀態,避免密碼重設功能成為繞過登入驗證的途徑;另應通知帳號持有人,以利及早發現非本人操作。