【資安相關】淺談網路應用程式安全(一)[轉貼]
/
0 Comments
淺談網路應用程式安全(一) |
近幾年由於電腦硬體的進步,順勢帶動軟體產業的發展,造就出許多成功的網路公司,如:Yahoo、google、無名小站等;而網頁型態的發展從早期只著重以動態及靜態網頁方式呈現資訊給使用者的Web1.0,進步到現今強調個人化功能及具備高度親和力、提供影音分享平台網站的Web2.0時代,如此不斷地進步,就是要將網路發展的應用更人性化,愈接近人性化的網路應用程式其原始程式碼勢必更複雜,而複雜程式產生漏洞的可能性也就愈大,更使得有心人士能夠利用這些漏洞入侵網站。OWASP(開放Web軟體安全計畫-Open Web Application Security Project)於今(2007)年提出十大Web AP的安全性問題,反映出目前網路應用攻擊型態的大變化。十大Web資安漏洞分別是:
今年OWASP公佈新版十大Web AP 安全反映出目前的攻擊現況,Cross-Site Scripting成為十大攻擊之首,呈現出目前網路釣魚與詐欺攻擊濫用Cross-Site Scripting的情形。事實上,Cross-Site Scripting與SQL Injection已連續兩年列為全球頭號的嚴重資安弱點。以下筆者將一一探討這十大Web資安漏洞的意義與防範之道,提供讀者諸君參考。
(一) Cross-Site Scripting
Cross-Site Scripting中文譯為「跨站腳本攻擊」,簡稱XSS。此乃是駭客利用網站上允許使用者輸入字元或字串的欄位插入HTML與Script語言,造成其他正常使用者在觀看網頁的同時,瀏覽器會主動下載並執行部份惡意的程式碼,或被暗地裡導入到惡意的網站,而受到某種型態的影響。如今大部份的網站都強調所謂與使用者互動的功能,加入許多允許使用者輸入字串的欄位,如:留言板、討論區、查詢欄位等;有些互動的功能能將使用者輸入的字串存入後端資料庫,如果駭客輸入某些含有攻擊式的語言,一旦使用者進入此頁面時,因執行未預期的動作而將遭受某種程度的威脅。例如:
<IFRAME src="javascript:document.location.href='http://tw.yahoo.com';"></IFRAME>
上述含有HTML與JAVA Script的混合語法,駭客則是利用類似語法輸入至某些查詢欄位或留言板,使用者若瀏覽含有此語法的網頁,就會被導入到tw.yahoo.com網站;也就是說,若駭客將yahoo置換成其他隱含有木馬或後門程式,使用者會在毫無預警之下中了惡意程式;但此語法較容易被程式所阻擋。另一種攻擊形式是直接將上述語法透過瀏覽器的網址欄位並將某些字串進行編碼,例如:
http://X.X.X.X/query.php?keyword=javascript%3ajavascript:document.location.href='http://惡意網址';%3b
相同的情形是使用者在未知狀況下連結上述網址,會導入至含有惡意程式的網頁,造成電腦主機的威脅。那麼,駭客是如何引誘使用者去點取此連結?最簡單的可能攻擊手法為利用釣魚式攻擊:利用Email告知某網站有重大訊息公告或者在各大討論區、留言板發佈此連結,目的是引誘使用者在毫無預警的情況下去點取此連結,而成為XSS攻擊的受害者。導入到惡意網頁是XSS裡最常見的攻擊手法;另一種可能在XSS發生的威脅為竊取使用者的cookie資料,如【圖1】。
圖1 利用XSS讀取cookie範例
駭客使用相同的手法將上述語法貼入討論區或Blog,當其他使用者瀏覽至此網頁時,視窗便會秀出自身瀏覽器cookie資料;更聰明的駭客會寫更複雜的程式,將使用者的cookie資料導入到駭客網站並儲存,藉以取得使用者的個人資料。
討論至此,總結XSS可能造成的危害包括:加密連線可能失效、駭客偷取使用者的cookie、駭客可假冒使用者身份,存取具身份控管機制的網站、將使用者瀏覽器導向釣魚網站,以騙取帳號密碼等個人資訊、將使用者瀏覽器導向惡意網站,安裝惡意後門程式、導致使用者瀏覽器無法正常運作,例如:JavaScript炸彈;另外,XSS攻擊介於駭客與使用者之間的攻防戰,並不會對server主機有任何威脅,所以才被稱為跨站腳本攻擊,意思即是:駭客使用某些語言(腳本)跨過主機對使用者進行攻擊。 OWASP將XSS列為與程式碼有高度相關的漏洞,換句話說,要防止XSS攻擊,修改程式碼為不二法則。最簡單防止XSS的攻擊,必須在使用者輸入欄位加入過濾字串的功能,將『<』、『>』、『%』、『/』、『()』、『&』等符號進行過濾不予輸出至網頁,或限定欄位長度的輸入。
某些網站的查詢欄位並沒有限定長度,所以任何關於XSS都可以暢行無阻地進行攻擊,因此,若能限定欄位長度,則可以至少保證大部份的XSS語法都可以被過濾。然而,最根本的防護之道乃是在程式開發階段,就必須導入相關資安規範,及早預防。
XSS的攻擊其實是非常嚴重的問題,也是資訊安全相關人員會面臨到的問題之一;而大部份的程式設計師缺乏相關的概念,也使得類似的事件層出不窮(例如:無名小站XSS攻擊事件)。此外,一般使用者在瀏覽網頁時,也應提高警覺,留意瀏覽器左下方顯示的連結訊息是否與網址列有不同的連結存在。但最保險的作法是利用手動輸入欲連線之網址,即可以防範大多數的風險。簡而言之,唯有對問題的瞭解,才能有效地防範問題的發生。(待續)
文章來源
http://newsletter.ascc.sinica.edu.tw/news/read_news.php?nid=1288 |