命令注入

紛繁複雜的計算機世界說到底還是為人服務,並最終由人來操縱。如果以“原子”般的視角來觀察人對計算機的操縱方式,展現出來的無非是兩個方面——數據,以及操作這些數據的指令。當數據和指令都是事先預設好的,各司其職,則天下太平——人們通過指令將輸入的數據進行處理,獲得期望的結果後通過特定的渠道輸出。

但隨著IT技術的飛速發展,“計算機”的形態多種多樣(大型伺服器、PC機、智慧型終端等等,以及運行其上的形形色色的套用),不同角色的人在計算機系統中所扮演的角色各異(開發者、維護者、高級用戶、普通用戶、管理者等等)。這些場景中,數據甚至指令通常都無法事先固化,需要在運行的過程中動態輸入。如果這兩者混雜在一塊,沒有經過良好的組織,就會被黑客加以利用,成為一種典型的攻擊方式——命令注入。

命令注入攻擊的常見模式為:僅僅需要輸入數據的場合,卻伴隨著數據同時輸入了惡意代碼,而裝載數據的系統對此並未設計良好的過濾過程,導致惡意代碼也一併執行,最終導致信息泄露或者正常數據的破壞。其中最常見的一類攻擊行為就是針對資料庫系統的SQL(結構化查詢語言)注入。常見的SQL語句構成為:對符合特定條件的數據(某些行的某些列)實施增、刪、改、查等操作。其中需要符合的條件就是所謂“數據”(如學生數據表中性別為女,或年齡大於10歲等),對這些數據的選取以及實施的某種操作就是“指令”。成功的SQL注入攻擊就在於,在輸入數據的時候混雜了其它SQL子句,最終拼接成的SQL語句語法是正確的(資料庫系統對此毫無防備)並得到執行。
SQL注入等命令注入攻擊會造成嚴重的危害,包括:
1、信息泄露,例如資料庫存放的賬戶、密碼等個人機密數據泄露,並且數據結構可能為黑客知曉並進行進一步攻擊。
2、信息泄露,例如資料庫存放的賬戶、密碼等個人機密數據泄露,並且數據結構可能為黑客知曉並進行進一步攻擊。
3、利用資料庫伺服器提供的作業系統命令接口,控制整個系統。
從上面SQL注入攻擊的場景分析來看,對SQL攻擊(以及其它命令注入模式的攻擊)的防範可以從兩個方面著手:
1、套用系統將指令和數據良好隔離,當數據傳輸到系統中即便其中混雜了惡意指令,數據和惡意指令也會被一併視作“數據”,至多造成異常數據不被正確執行,而避免了惡意攻擊。
2、對輸入的數據進行過濾,如果其中混雜著惡意執行則丟棄。
新的注入方式會不斷出現,過濾方式也要隨之更新,有可能會有滯後。因此方案2可以過濾常見的命令注入,但指令和數據的良好隔離才是解決命令注入的根本之道。

相關詞條

熱門詞條

聯絡我們