楊 芬
(長治職業技術學院 信息工程系,山西 長治 046000)
在網絡技術發展的背景下,Android智能手機得以廣泛應用,而且越來越多的應用系統融入到Android官方網站之中,但是,在一些軟件發展中并沒有采用安全性的檢測技術,導致在軟件系統使用的過程中出現安全漏洞問題,為用戶帶來安全風險。因此,在網絡系統運行中,為了保障用戶使用信息資源的安全性,應該合理分配Android系統中的應用程序,并通過獨立、虛擬的網絡環境,為用戶營造良好的應用環境。在Android應用中,可以為用戶提供靈活的通信機制,通過對通信系統方法的整合,進行用戶之間的信息傳遞,從而滿足信息的傳播需求。在Android應用中,其安全程序是指在Android應用程序的周期內,保障數據的有效性、完整性及安全性、隱私性。但是,無論對于何種系統,都存在著漏洞形式,通過SQL注入漏洞靜態檢測方法的運用,可以提高系統運行的安全性。
Android系統在運行的過程中,會為自身系統提供一定的保障價值,在權限機制整合的同時,實現對Android系統安全機制的確定,而且,在不同手機中Android系統都存在著不同的權限,實現對用戶系統數據資源的保護,避免資源濫用現象的發生。但是,在Android應用系統中,并不是每個權限都是完備的,因此,系統開發中應該認識到這一因素,通過對漏洞現象的問題,進行數據資源的整合。圖1所示為Android應用系統中權限泄露漏洞。應用A作為Android設備中已經安裝的應用,當申請Send_SMS權限時,需要向SMS發送請求,并暴露這項服務;而B作為一個惡意程序,會按照Android的權限設置問題,破壞所申請的信息,從而導致發送的信息沒有得到安全保護,嚴重的會對用戶的財產安全造成影響。

圖1 Android應用權限泄露漏洞
在Android系統運用的過程中,為了實現對數據代碼的靜態化檢測,需要通過對用戶程序以及結構進行靜態化分析,從而使數據結構代碼得到展現。為了在數據分析檢測中擴大數據的使用范圍,靜態分析中會采用Android系統中的字節碼文件[1]。如圖2所示,整個分析過程應該做到:第一,對程序靜態進行分析,體現控制流分析、數據流分析技術的運用;第二,將Android系統中注入SQL漏洞檢測技術,然后按照檢測流程進行檢測方法的執行。在檢測中對于所引用的jar文件,需要進行字節碼的控制,流程控制中需要對單個詞語、指令以及函數進行順序的調用,并通過對控制流的確定,進行控制流程圖的設計。在控制流程圖選擇中,需要通過對基本塊以及基本執行關系的分析,進行流程的控制。在基礎控制流約束法使用中,可以在基本塊之內,將語句輸出數據輸出,進入到下一流程。在流程控制中,需要對每個SQL參數進行位置及參數的確定。最后使用定位程序進行SQL方法的選擇,合理調整靜態污點的分析功能,并對SQL參數進行數據的輸入及輸出,完善系統程序的檢查機制[2]。

圖2 靜態分析中的SQL流程圖
2.2.1 特殊數據的污點傳播
在特殊數據的污點傳播中,應該認識到系統傳播的規律性。例如,在外部輸入數據中,一些程序會直接選擇字符進行儲存及修改,但是,也有一些數據會使用特定的程序進行數據的儲存。因此,在對結構狀態整合及分析中,應該將資源作為一個整體結構進行處理,然后將污點數據傳遞給數組元素,將其標記為污染。改組中的所有數據都會被污染傳播,數組結構污點傳播規則如下:
(1).String[]spreadArray=new String[2];
(2).spreadArray[0]=“constant”;
(3).spreadArray[1]=taintStr;
(4).String str=spreadArray[0];
2.2.2 Collection接口以及Map接口
通過對Android系統運用狀況的分析可以發現,Java中對語言系統進行定義,并確定了Collection接口以及Map接口。開發者在對數據分析中,需要整合復雜性的項目確定,從而實現復雜數據的整合及分析。在該種檢測方法確定中,系統會針對污點進行傳播,而且在傳播中污點傳播方法與數組類型存在著一定的相似性。對于這種狀況,只需要將污點數據傳遞給結構體,即可將整個結構視為污染,從而實現對污染信息的計算[3]。
2.3.1 傳播過程的污點傳播
在對過程內污點傳播中,其方法主要是在單位時間內進行的,該種方法利用中,需要對污點數據進行污點信息的確定。因此,在整個過程中應該做到以下幾點內容:第一,對初始化的污點數據進行整合,然后將污點信息進行傳播,確定外部傳輸的方法、變量以及污點數據,并通過對指令類型進行操作;第二,在對變量讀取的過程中,需要及時記錄變量中的污點信息;第三,在對普通賦值指令分析中,應該結合當前變量內容,進行污點數據的集中處理;第四,針對特殊性的數據內容,需要進行指令的讀寫,然后實現污點信息的實時性傳輸;第五,在對返回指令分析中,需要記錄數據參數,然后輸出整個污點數據,其基本算法如表1所示。

表1 污點數據集算法
2.3.2 傳播過程間的傳播方法
在過程間污點傳播中,需要通過對過程內污點傳播方法的分析,對傳播的參數以及返回值信息進行確定,并及時記錄相關參數[4]。檢測中,系統會對被調用的闡述進行確定,若發現數據為之前掃描過的需要利用之前方法,與之相反的需要將闡參數的污點信息傳遞給被調用方法,然后將其返回值的污點進行該種調用方法的確定。
2.4.1 參數法
參數法在很多數據庫中得以運用。該種技術會使系統在執行SQL語句時對SQL進行編譯,然后將其參數進行帶入。在一些惡性參數檢測中,也可以避免程序的執行,從而提高Android應用系統的穩定性。
2.4.2 白名單驗證方法
在項目開發著的信息整合中,雖然一些參數不會導致SQL出現漏洞,但是也需要在程序運行之前進行數據庫項目的操作,充分保證系統運行的安全性[5]。例如,在Pattern.matcher系統中,需要與程序模塊進行匹配,或是通過String方法的使用,進行數據整合闡述的判斷,及時分析敏感字符,從而實現對系統數據的有效整合。若在系統運行中執行了白名單驗證方法,需要將檢測的數據庫污點參數進行分析,以便提高SQL檢測方法的合法性。
2.4.3 敏感字符的轉化
在Android系統運行的過程中,當出現敏感詞匯問題時,通過SQL漏洞檢測方法的運用,可以實現對敏感詞匯的轉換。在轉化中需要使用replace的檢測方法,也就是系統通過對敏感詞匯的確定,進行敏感字符的過濾及轉義。這種操作方法可以被認為是合法性的項目檢驗。
總而言之,在Android應用系統的SQL注入漏洞靜態檢測方法確定中,應該通過對安全分析框架的分析,進行靜態檢測方法的確定,實現對動態框架分析不足問題的彌補。而且,該種檢測也可以為用戶提供安全性的數據保障信息,并對數據采用加固的處理方法,實現對數據信息的逆向化分析,提高SQL注入漏洞靜態檢測的有效性。通過檢測及時發現Android應用系統中的漏洞問題,并針對相關問題進行技術的構建,從而提高數據分析的精確性,為Android用戶營造良好的軟件使用環境。