幾天前,在烏克蘭舉辦的安全大會ekoparty Security Conference中,兩名資安研究員Thai Duong和Juliano Rizzo發表重大ASP.NET資安弱點的弱點驗證工具(POET, Padding Oracle Exploit Tool),證實該弱點確實可百分之百被利用,主要問題在於.NET對AES演算法的實作過程出現了問題,AES是一種頗受歡迎且被大量使用的高級演算法。攻擊者可以將加密字串不斷送回後端伺服器進行嘗試,以暴力嘗試法取得加密的金鑰。
完整破解過程影片請見:http://www.youtube.com/watch?v=yghiC_U2RaM
其影響範疇從 ASP.NET 1.0到ASP.NET 4.0,甚至Java也用同一種演算法所以會受到波及,但這也並非是演算法的問題,而是實做演算法的過程出了瑕疵。多奇數位技術總監黃保翕說,過去可能用暴力破解的方法去找出最適合的金鑰,可能需要嘗試幾兆次,但是透過這個弱點可能只要嘗試個幾萬次就可以找出其加密金鑰(Machine Key),若透過網路、撰寫程式攻擊,約30~50分鐘便可成功。
在該弱點被成功的破解成功後,攻擊者就可以運用ASP.NET表單驗證機制(Forms Authentication) 以及頁面狀態機制View State,前者常被用在網站登入帳號密碼時的輸入時,後者則讓攻擊者可以任意修改頁面狀態,甚至在其中插入任意值,包括惡意程式SQL Injection等,甚至可取得網站管理員的權限。
解法:
如果想要更換加密演算法,儘管加密演算法很多種,但很多都停留在學術界研究階段而已,在業界固定使用的仍以DES、3DES、AES居多,且ASP.NET只支援這三種,黃保翕在其
部落格中也揭露,其中3DES及AES也都是共用相同的演算法實作,所以有相同的瑕疵,而DES加密強度不夠也不建議使用。
目前微軟尚未釋出修補弱點的解決方法,目前最快的應變措施,就是修改web.config的設定值,讓攻擊者無法透過ASP.NET的錯誤猜測出金鑰。不過這種短期的應變措施,頂多只能減緩攻擊的速度。並且由於這種暴力破解法,攻擊者需要不斷的回傳到後端伺服器去確認,所以如果使用者可以定時查看web server log,觀察到此一情形就得多加留意,可能會發現不正常的Log大量暴增的情形。
因此,雖然目前雖無完整解決方案,但網站經營者仍可透過修改設定延緩攻擊速度,加上定時的觀察log是否有異常,及早發現網站是否有被攻擊的跡象。