萬偉韜,夏德宏
1.江西教育學院教育培訓學院,江西 南昌 330029 2.江西省水利水電學校計算機應用與管理工程系,江西 南昌 330013
隨著時間的推移和計算機技術的高速發(fā)展,信息網(wǎng)絡在世界的諸多領域已經(jīng)是必不可少的重要組成部分。與此同時,因特網(wǎng)的安全性已經(jīng)變成了人們關注的焦點。信息網(wǎng)絡也已經(jīng)為社會的發(fā)展提供了重要的保障。伴隨著全球信息化加速的步伐,因特網(wǎng)安全的重要性變得越來越明顯。許多信息是非常重要的,包括政府的政策、貿(mào)易、經(jīng)濟信息,資金的銀行轉(zhuǎn)賬、股票的安全性,能源資源數(shù)據(jù)、科學數(shù)據(jù)和敏感信息、國家機密等等。因此,信息將吸引來自世界各地的各種各樣的人為的攻擊,比如信息泄漏、信息偷盜、數(shù)據(jù)收買和計算機病毒等等。
近年來,計算機犯罪率已快速增加,并已經(jīng)成為了普遍的國際問題。黑客頻繁的攻擊因特網(wǎng)的各種各樣的漏洞。因此,本文將討論和調(diào)查分析一些因特網(wǎng)存在的危險的編程錯誤并對因特網(wǎng)的TCP協(xié)議進行安全性評估。
2009年,CWE/SANS聯(lián)合發(fā)布了25個最危險的編程錯誤。這些錯誤可以導致嚴重的軟件漏洞。這些漏洞頻繁發(fā)生并且很容易發(fā)現(xiàn)。本文將調(diào)查分析其中比較常見和典型的3種編程錯誤。
跨站點腳本攻擊(Cross-site Scripting),簡稱XSS。這種攻擊是由惡意的攻擊者嵌入惡意的html代碼到網(wǎng)頁中所致。當一個用戶瀏覽網(wǎng)頁時,這個已嵌入的html代碼將被執(zhí)行以便達到攻擊用戶的特殊目的。跨站點腳本攻擊是被動式的攻擊,因此,它是被動且使用困難以至于許多人通常忽略它的危害。一般而言,跨站點腳本被分為兩類,一類是來自內(nèi)部的攻擊,主要涉及到使用程序的漏洞去構(gòu)建跨站點聲明。另一類是來自外部的攻擊,主要涉及到構(gòu)建自己的具有跨站點漏洞的網(wǎng)頁。
一個典型的跨站點腳本攻擊的方法。HTML語言允許使用腳本去處理一個簡單的互動,攻擊者插入一個惡意的html代碼,比如通過技術手段插入cookies到網(wǎng)頁中。Cookies可以保留有戶名和密碼,這樣用戶便失去了安全性。
那么,如何解決跨站點腳本攻擊呢?這里有幾種方法。首先,作為編程人員,必須過濾或改變用戶提交html代碼并且限制用戶數(shù)據(jù)的長度;第二,作為一個用戶,不要去點擊別人提供的未知鏈接并且禁止瀏覽器運行JavaScript和ActiveX代碼;第三,鞏固參數(shù)的校驗。許多漏洞瞄準那些不被校驗的參數(shù),致使許多攻擊手段出現(xiàn)。最后,在控制器中編碼html數(shù)據(jù)。在控制器收到用戶數(shù)據(jù)后編碼數(shù)據(jù),然后發(fā)送到數(shù)據(jù)庫。
有時程序員編寫代碼時,許多人不會去評估用戶輸入數(shù)據(jù)的合法性,以至于應用程序有潛在的危險。用戶可以為一些數(shù)據(jù)庫查詢提交代碼,根據(jù)程序返回的結(jié)果,用戶可以獲得一些他們想知道的數(shù)據(jù),這就被稱為SQL注入。SQL注入從一個正常的端口和表層通過,它看起來和正常的從一個網(wǎng)頁通過沒有什么不同,因此,一些防火墻無法戒備SQL注入。
SQL注入攻擊的階段可以被總結(jié)為3種措施。首先,SQL注入漏洞的評估。一般而言,SQL注入存在于一個有參數(shù)的ASP動態(tài)網(wǎng)頁中。只要動態(tài)網(wǎng)頁有參數(shù)并且通過數(shù)據(jù)庫,那么,就可能有SQL注入。ASP程序員必須有一個安全意識,過濾這個特性來減少SQL注入的可能性;第二,分析數(shù)據(jù)庫服務器的類型。通常,ACCESS和SQL SERVER是最常用的數(shù)據(jù)庫服務器,即使它們支持T-SQL標準,但仍有不同,并且不同的數(shù)據(jù)庫有不同的攻擊方法,這些必有不同的威脅;第三,決定XP_CMDSHELL執(zhí)行的情況。如果當前的數(shù)據(jù)連接的賬號有SA許可權(quán)限,并且可擴展的存儲程序(master.dbo.xp_cmdshell)能夠正確執(zhí)行,整個計算機能夠通過一些方法被控制。
保護信息的安全性是使用加密算法的主要原因。加密算法是一種用來加密和解密的數(shù)學函數(shù)。加密算法是基于加密協(xié)議的,被用于保護信息的安全性,提供身份驗證等服務。假設要通過網(wǎng)絡發(fā)送信息X,通常,X是明碼文本包,X的內(nèi)容被隱藏,然后X被轉(zhuǎn)換成密碼文本。這中轉(zhuǎn)變過程稱為加密。加密后,能夠得到密碼文本Y,同時有一個額外的參數(shù)M,X依靠M轉(zhuǎn)換成密碼文本Y,M被稱為密鑰。如果密碼文本接收端Y想要恢復明碼文本,密鑰N必須用來完成相反的操作。這種反轉(zhuǎn)過程稱為解密。
選擇好的加密算法是保護因特網(wǎng)安全的重要環(huán)節(jié),對于加密算法評估準則,可以包括3個方面:安全性、成本、實現(xiàn)的算法式和屬性。其中安全性是評估加密算法最重要的準則。
TCP作為因特網(wǎng)標準協(xié)議,已經(jīng)成為黑客攻擊因特網(wǎng)的主要攻擊目標。本節(jié)將討論在網(wǎng)絡安全中TCP的安全性評估。
TCP(Transmission Control Protocol)是一個可靠的、端到端的、面向連接的傳輸層協(xié)議。它提供基于流的服務。TCP的主要職能包括阻塞控制,流控制,有序分配和可靠的包傳輸。TCP具有兩個基本階段:慢啟動階段和阻塞避免階段。
攻擊者監(jiān)聽回應方發(fā)出的SYN/ACK信息。然后攻擊者發(fā)送RST包到回應方,再發(fā)送SYN包,偽造連接方去發(fā)動一個新的連接。回應方回應這個新的連接,并發(fā)送鏈接,響應SYN/ACK信息。攻擊者偽造連接方并發(fā)送ACK包到回應方。于是,攻擊者成功的破壞了連接。如果攻擊者再插入有害包的話,后果將十分嚴重。
通過以上對3個危險的編程錯誤和TCP的安全性分析,可以看出因特網(wǎng)的安全問題是一個需要不斷研究探討和改進的重要問題。對于現(xiàn)今的因特網(wǎng)安全性問題,其中一部分可以找到恰當?shù)慕鉀Q方案,但仍有許多安全問題需要研究者在將來不斷的發(fā)掘和解決。
[1]Randalll.A.Towarda More Secure Internet.COMPUTER,1997,30(1).
[2]謝希仁.計算機網(wǎng)絡[M].大連:大連理工大學出版社,2004.
[3]J.Postel.Transmission Control Protocol.IETF RFC 793,1981,9.