專利名稱:建立基于程序切片的Web服務(wù)安全分析模型的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及軟件構(gòu)建技術(shù)、網(wǎng)絡(luò)安全,特別是基于程序切片的Web服務(wù)安全分析模型的 軟件架構(gòu),建立基于程序切片的Web服務(wù)安全分析模型的方法。
背景技術(shù):
Web服務(wù)(Web Service)是基于可擴(kuò)展標(biāo)記語言XML和HTTPS(全稱Hypertext Transfer Protocol over Secure Socket Layer,帶安全進(jìn)程通信機(jī)制層的超文本傳輸協(xié)議)的一種服務(wù), 其通信協(xié)議主要基于簡單對象訪問協(xié)議SOAP,服務(wù)的描述通過web服務(wù)描述語言 WSDL,通過統(tǒng)一描述、發(fā)現(xiàn)和集成協(xié)議UDDI來發(fā)現(xiàn)和獲得服務(wù)的元數(shù)據(jù)。
Web服務(wù)在屏蔽系統(tǒng)的復(fù)雜性、異構(gòu)平臺交換信息方面的獨特優(yōu)勢,使之得到廣泛應(yīng)用, 同時Web服務(wù)中存在的安全漏洞也導(dǎo)致應(yīng)用現(xiàn)狀不能令人滿意。Web服務(wù)的安全可以從兩個 角度考慮1)獨立Web服務(wù)中的安全情況;2) Web服務(wù)網(wǎng)絡(luò)中的安全情況。與獨立Web 服務(wù)安全相關(guān)的研究課題主要包括由標(biāo)準(zhǔn)制定機(jī)構(gòu)及團(tuán)體共同發(fā)布Web服務(wù)安全規(guī)范,保 證信息在網(wǎng)絡(luò)傳遞過程中的安全;引入編程技巧,包括對開發(fā)小組的安全課程培訓(xùn)和代碼復(fù) 查等;提出軟件開發(fā)過程中,應(yīng)該遵循的安全模型和過程。
通過實施安全規(guī)范和安全技術(shù),對開發(fā)安全Web服務(wù)有積極的作用,但是各種安全規(guī)范 和過程在實施過程中對開發(fā)機(jī)構(gòu)的安全預(yù)算、開發(fā)人員的安全知識都有較高要求,不利于在 所有Web服務(wù)開發(fā)中廣泛實施。更重要的是,對SOAP消息經(jīng)過加密、簽名的措施,盡管可 以有效保護(hù)消息傳輸過程中的機(jī)密性和完整性,但是當(dāng)一個web服務(wù)的實現(xiàn)本身己經(jīng)具有潛 在的缺陷時,該缺陷被攻擊者利用造成的信息泄露安全漏洞無法通過單一的外部安全措施進(jìn) 行緩和。事實上,如果沒有一個有效的機(jī)制來分析Web服務(wù)的實現(xiàn)中的安全缺陷,這種類型 的安全漏洞可能會一直存在,直至被攻擊者攻破后給系統(tǒng)造成巨大的損害。從軟件本身,研 究Web服務(wù)自身安全漏洞的發(fā)現(xiàn)和緩和,是提高產(chǎn)品安全性的有力措施。
程序切片是對程序的抽象,通過提取信息流的抽象,將切片理論應(yīng)用于信息流獲取過程。 通過對web服務(wù)被訪問過程中所傳遞的信息流進(jìn)行分析,査看需要保護(hù)的關(guān)鍵信息是否在此 信息流中從而泄露給外部用戶,發(fā)現(xiàn)關(guān)鍵信息泄露的安全漏洞,保證關(guān)鍵信息不被非法訪問, 提高對關(guān)鍵信息保護(hù)力度,提高單個web服務(wù)的安全性。
在Web服務(wù)網(wǎng)絡(luò)中,安全漏洞擴(kuò)散給系統(tǒng)和用戶帶來巨大的影響和損失。目前,服務(wù)網(wǎng) 絡(luò)形成原因主要在于SOA (Service-OrientedArchitecture,面向服務(wù)的架構(gòu))的流行。SOA將 業(yè)務(wù)處理過程建模成工作流,在工作流中通過BPEL (Business Process Execution Language, 業(yè)務(wù)處理執(zhí)行語言)來處理多個Web服務(wù)交互過程,每一個Web服務(wù)完成一個獨立的功能, 功能接口被WSDL (Web Service Description Language, web服務(wù)描述語言)描述,服務(wù)間的 消息傳遞過程通過SOAP來完成。也就是說, 一個工作流中包含若干個Web服務(wù)節(jié)點,不同 的工作流通過交互而具有聯(lián)系,使得所有的節(jié)點形成一個web服務(wù)網(wǎng)絡(luò)。當(dāng)其中一個節(jié)點(艮口Web服務(wù))存在安全漏洞時,該安全漏洞會通過網(wǎng)絡(luò)中節(jié)點間交互被擴(kuò)散,給系統(tǒng)帶來更大 危害性。為了發(fā)現(xiàn)服務(wù)網(wǎng)絡(luò)中當(dāng)前漏洞擴(kuò)散的情況,以獨立web服務(wù)中的安全情況作為工作 基礎(chǔ),通過跟蹤關(guān)鍵信息或敏感數(shù)據(jù)在多個Web服務(wù)間的傳遞過程,研究服務(wù)網(wǎng)絡(luò)中的信息 泄露和漏洞擴(kuò)散,提高網(wǎng)絡(luò)安全性是急需解決的一個問題。
發(fā)明內(nèi)容
為克服現(xiàn)有技術(shù)的不足,本發(fā)明的目的在于提出一種建立基于程序切片的Web服務(wù)安 全分析模型的方法,以及如何將本模型的分析結(jié)果與在已有的Web服務(wù)安全規(guī)范和過程中提 出的安全措施相結(jié)合,從內(nèi)部和外部對Web服務(wù)中關(guān)鍵信息和普通消息進(jìn)行保護(hù),提高Web 服務(wù)安全性。本發(fā)明采用的技術(shù)方案是建立基于程序切片的Web服務(wù)安全分析模型的方法, 包括下列步驟
建立切片器模塊,用于通過指定合理的切片配置屬性,計算Java程序的切片,提供功 能接口供本模型中的Web服務(wù)分析模塊調(diào)用,來獲取與切片準(zhǔn)則相關(guān)的程序抽象即程序的信 息流;
建立Web服務(wù)分析模塊,用于
(1) 獨立Web服務(wù)的安全分析第一步解析WSDL協(xié)議,獲取在Web服務(wù)描述的具體 信息,包括對操作的抽象定義,綁定到這些操作的具體協(xié)議,綁定的一個網(wǎng)絡(luò)端點規(guī)范以及 進(jìn)行操作的網(wǎng)絡(luò)端點;第二步調(diào)用構(gòu)建完成的切片器模塊功能接口,以獲取的服務(wù)接口作為 切片配置,對Web服務(wù)的源碼進(jìn)行切片,獲得外部接口的信息流;第三步査看需要保護(hù)的關(guān) 鍵信息是否存在于接口信息流中,判斷信息是否泄漏,完成對獨立Web服務(wù)的安全分析;
(2) Web服務(wù)網(wǎng)絡(luò)的安全分析基于切片結(jié)果以及對獨立Web服務(wù)安全分析結(jié)果,分 析信息傳遞過程,查看關(guān)鍵信息是否在兩個Web服務(wù)間被傳遞泄露,判斷在服務(wù)網(wǎng)絡(luò)中安全 漏洞擴(kuò)散的問題;
建立安全報告模塊,用于設(shè)計安全報告的組成結(jié)構(gòu),包括具有安全漏洞的接口,被泄 露的關(guān)鍵信息,從內(nèi)部措施和外部措施兩個角度研究緩和方案的內(nèi)容,內(nèi)部措施包括修改網(wǎng) 絡(luò)web服務(wù)源碼、將對應(yīng)的方法設(shè)為私有和改變方法名稱,實現(xiàn)危險接口的屏蔽;外部措施 包括添加安全控制模塊實現(xiàn)簽名和加密,添加安全管理模塊實現(xiàn)身份驗證和訪問控制。
所述的建立切片器模塊中,切片器模塊包括以下3個子模塊
(1) 切片器引擎讀入配置文件,調(diào)用開源的程序依賴分析框架/庫提供程序依賴分析 功能接口構(gòu)建系統(tǒng)依賴圖,使用基于迭代的切片算法收集源程序中屬于當(dāng)前切片的語句,組 成切片;
(2) 切片準(zhǔn)則屬于執(zhí)行切片的配置文件的組成結(jié)構(gòu),在切片準(zhǔn)則中指定切片類型type、 范圍scope以及作為切片中心的具體語句criteria;
(3) 切片結(jié)果處理單元即postprocessor:通過post processor,完成從jimple結(jié)果至!j Java 語句的映射轉(zhuǎn)換,Java是一種程序編程語言,jimple是Java編程語言的中間表達(dá)形式。
所述建立Web服務(wù)分析模塊,其中的獨立服務(wù)安全分析是,以Web服務(wù)源碼和需要保護(hù) 的關(guān)鍵信息作為輸入,輸出為是否存在關(guān)鍵信息泄露安全漏洞的報告,包括1) 解析WSDL協(xié)議,WSDL是Web Service Description LanguageWeb服務(wù)描述語言,獲 取外部接口信息,可獲取的信息包括目標(biāo)名稱空間、服務(wù)名稱、端口名稱、操作名稱以及輸 入輸出參數(shù),WSDL文檔解析器工作流程首先在WSDL文檔中獲取服務(wù)的服務(wù)的根節(jié)點 definitions,通過調(diào)用返回服務(wù)的數(shù)組definiton.getServices方法獲取服務(wù)名稱,通過調(diào)用返回 服務(wù)端口的數(shù)組service.getPorts方法獲取服務(wù)端口,綁定端口調(diào)用返回綁定的端口 port.getBinding,通過一個循環(huán),對每一個選定的操作名稱,使用調(diào)用分析操作、返回操作的 具體信息analysisOperation方法分別獲取輸入?yún)?shù)以及輸出參數(shù)的名稱和類型,解析過程結(jié) 束后,將獲得的所有信息寫入用戶指定的文件對象File中,供其他模塊讀?。?br>
2) 依據(jù)獲得的接口名稱和參數(shù)類型,將接口轉(zhuǎn)換成合法的Java語句的形式作為切片器 的輸入,完成切片器所需要的其他配置包括指定切片范圍、類型后,調(diào)用切片計算功能對源 程序執(zhí)行切片,從切片結(jié)果中獲取接口相關(guān)信息流;
3) 將需要保護(hù)的關(guān)鍵信息與接口信息流進(jìn)行匹配,若兩者發(fā)生重合,判斷當(dāng)前Web服 務(wù)中安全漏洞存在。
所述的Web服務(wù)網(wǎng)絡(luò)安全分析是,分析服務(wù)間接口調(diào)用情況,以兩個Web服務(wù)調(diào)用作為 代表,分析過程通過判斷是否出現(xiàn)目標(biāo)Web服務(wù)的調(diào)用地址Endpoint以及目標(biāo)操作的順序, 和出現(xiàn)順序的先后來達(dá)到判斷目標(biāo)Web月艮務(wù)是否調(diào)用另一個Web服務(wù)中目標(biāo)操作的目的,分 析服務(wù)間的危險接口調(diào)用情況時,輸入為被分析的Web服務(wù)源文件和安全漏洞信息文件,前 述信息文件由切片器模塊產(chǎn)生,安全漏洞信息文件提供了包含安全漏洞的服務(wù)URI, URI是 Universal Resource Identifier資源標(biāo)志符,以及對應(yīng)的危險操作,通過這三者之間進(jìn)行匹配, 匹配成功,說明被分析的Web服務(wù)確實調(diào)用了包含安全漏洞的操作,從而導(dǎo)致了安全漏洞的 擴(kuò)散;否則,認(rèn)為此Web服務(wù)未擴(kuò)散安全漏洞,對于被判斷存在安全漏洞的調(diào)用關(guān)系,網(wǎng)絡(luò) web服務(wù)調(diào)用者中存在一個新的安全漏洞,將其加入新的危險接口列表。
所述建立安全報告模塊,從兩個角度提供解決方案來緩和漏洞
1、通過添加安全機(jī)制包括授權(quán)、身份驗證、XML簽名、或XML加密的方式,XML是 Extensible Markup Language可擴(kuò)展標(biāo)記語言,達(dá)到只允許特定角色的客戶端對該服務(wù)的存取 的效果,可采取的措施包括身份驗證、簽名、有選擇的對SOAP消息加密以及雙層訪問控制 機(jī)制;
2、取消發(fā)布存在安全漏洞的接口,在WSDL文件中取消存在安全漏洞的接口,并在源 文件中進(jìn)行修改,包括將方法設(shè)為私有,或改變方法名稱。
所述的建立切片器模塊,切片器模塊進(jìn)一步具體包括切片計算.在實現(xiàn)時,整個切片計 算過程有多個phase組成,phase是指切片器的整個執(zhí)行過程,分為若干個phase,在phase 中執(zhí)行靜態(tài)分析或過程,可標(biāo)注這些分析或者過程的開始和結(jié)束,每一個大階段major phase 由O個或者多個小階段minor phase組成,順序執(zhí)行, 一個過程是指能夠完成一個特定功能的 一系列程序行為,第1個major phase為切片計算階段,由3個minor phase組成,即對象流 分析階段,依賴分析階段,切片收集階段;第2個major phase為切片結(jié)果處理階段,無minor phase,執(zhí)行過程為
1)首先初始化一個切片器slicer對象,包括指定被切片程序、切片范圍、類型;2) 在切片器引擎中執(zhí)行對象流分析,在指定標(biāo)簽tag名稱,裝載系統(tǒng)環(huán)境變量和切片配 置后,通過執(zhí)行對象流分析和依賴分析,生成程序依賴3) 收集切片,由切片器引擎驅(qū)動,將程序的AST中屬于切片組成部分的節(jié)點用指定的標(biāo) 簽名稱tagName進(jìn)行標(biāo)注,若節(jié)點被指定的tagName標(biāo)注,意味著其屬于切片的組成部分, 被標(biāo)識的節(jié)點有兩種類型即標(biāo)簽類taggedClasses和標(biāo)簽方法taggedMethods兩個集合 collection,通過這種方式,識別切片;
4) 處理切片結(jié)果,完成從jimple語句到Java語句的映射,依據(jù)先前指定的tagName識 別出屬于切片的語句,再根據(jù)語句中帶有源語句行號信息,在源程序中識別出對應(yīng)的Java形 式的語句,實現(xiàn)將jimple語句形式的切片結(jié)果轉(zhuǎn)化成一般Java語句。
本發(fā)明的有益效果:本發(fā)明面向安全Web服務(wù)產(chǎn)品開發(fā),以降低Web服務(wù)中的安全漏洞, 提高軟件質(zhì)量為目標(biāo),構(gòu)建一個Web服務(wù)安全分析模型,可用于發(fā)現(xiàn)獨立Web服務(wù)和Web 服務(wù)網(wǎng)絡(luò)中信息泄露安全漏洞的存在和擴(kuò)散,具體效果包括
1、 提出獨立Web服務(wù)中信息泄露安全漏洞的發(fā)現(xiàn)方法,能夠分析關(guān)鍵信息是否被泄露 給外部用戶,用于提高對關(guān)鍵信息的保護(hù)力度,減少安全漏洞;
2、 基于獨立Web服務(wù)中安全情況的報告,提出發(fā)現(xiàn)服務(wù)網(wǎng)絡(luò)中安全漏洞擴(kuò)散的方法。 對存在于單個Web服務(wù)中的安全漏洞,通過分析該漏洞在服務(wù)網(wǎng)絡(luò)中的擴(kuò)散情況,提出 緩和方案,降低了由于漏洞影響范圍擴(kuò)散而帶來的巨大損失;
3、 開發(fā)圖形化用戶界面,提供Web服務(wù)安全分析模塊配置,執(zhí)行安全分析的功能;提 供API接口封裝本模型提供的分析功-能模塊,發(fā)布為可供互聯(lián)網(wǎng)用戶調(diào)用的Web服務(wù) 接口,減少用戶資源需求,提高使用效率。
實際的開發(fā)過程中,、當(dāng)服務(wù)商發(fā)布的Web服務(wù)中接口數(shù)量龐大時,通過運(yùn)行本模型提供 的安全分析工具,發(fā)現(xiàn)這些對敏感數(shù)據(jù)進(jìn)行操作的接口并采取相應(yīng)的措施,在改善Web服務(wù) 安全性的同時,也能夠有效的節(jié)省時間和金錢。
圖1 Web服務(wù)安全分析模型的總體架構(gòu)圖。 圖2 Web服務(wù)安全分析模型的運(yùn)行流程圖。
具體實施例方式
本發(fā)明試圖解決的核心問題包括基于程序切片,從Web服務(wù)實現(xiàn)中獲取信息流的抽象;
在獨立的Web服務(wù)中,獲取關(guān)鍵信息的流動方向和泄漏情況;在web服務(wù)網(wǎng)絡(luò)中,研究關(guān)鍵 信息是否被傳遞泄露導(dǎo)致漏洞擴(kuò)散;以及如何將本模型的分析結(jié)果與在已有的web服務(wù)安全 規(guī)范和過程中提出的安全措施相結(jié)合,來從內(nèi)部和外部對web服務(wù)中關(guān)鍵信息和普通消息進(jìn) 行保護(hù),提高web服務(wù)安全性。
針對上述核心問題,本發(fā)明面向安全Web服務(wù)開發(fā)的編碼階段,基于程序切片獲取信息 流抽象,構(gòu)建Web服務(wù)安全分析模型,發(fā)現(xiàn)web服務(wù)網(wǎng)絡(luò)中的信息泄露安全漏洞,有著重大 的理論意義和實際應(yīng)用價值。主要內(nèi)容包括1) 研究程序切片的核心思想,將其應(yīng)用于Web服務(wù)實現(xiàn)代碼中獲取信息流抽象
2) 研究發(fā)現(xiàn)獨立web服務(wù)中的信息泄露安全漏洞的方法,通過對服務(wù)接口信息流和關(guān) 鍵信息語句集合的分別獲取和協(xié)同匹配,發(fā)現(xiàn)關(guān)鍵信息通過當(dāng)前服務(wù)接口泄漏給互聯(lián)網(wǎng)用戶 的安全違背情況;
3) 基于對獨立web服務(wù)中漏洞情況分析的結(jié)果,研究對web服務(wù)網(wǎng)絡(luò)中安全漏洞擴(kuò)散 的分析方法,通過査看服務(wù)接口調(diào)用情況,分析關(guān)鍵信息在不同web服務(wù)間傳遞過程,判斷 這種傳遞過程是否導(dǎo)致單個web服務(wù)信息泄露安全漏洞在服務(wù)網(wǎng)絡(luò)中被擴(kuò)散給更多互聯(lián)網(wǎng)用 戶;
4)基于模型分析結(jié)果,結(jié)合已有的web服務(wù)安全規(guī)范和過程中提出的安全措施,生成相 應(yīng)的安全報告,從內(nèi)部和外部兩個角度提供合理的緩和方案。 下面結(jié)合附圖和實施例進(jìn)一步詳細(xì)說明本發(fā)明。
本發(fā)明包括切片器模塊、web服務(wù)分析模塊和安全報告模塊,各模塊組成及交互如圖1 所示-
1、 切片器模塊
本模塊是一個獨立的功能模塊,通過指定合理的切片配置屬性,計算Java程序的切片。 提供功能接口供本模型中的web服務(wù)分析模塊調(diào)用,來獲取與切片準(zhǔn)則相關(guān)的程序抽象(即 程序的信息流)。具有重用特征,經(jīng)過適當(dāng)修改,可用于其他項目中。切片器模塊由下面3個 子模塊組成。
(1) 切片器引擎讀入配置文件,調(diào)用開源的程序依賴分析框架(庫)提供程序依賴分 析功能的API構(gòu)建系統(tǒng)依賴圖,使用基于迭代的切片算法收集源程序中屬于當(dāng)前切片的語句, 組成切片。
(2) 切片準(zhǔn)則屬于執(zhí)行切片的配置文件的組成結(jié)構(gòu),在切片準(zhǔn)則中指定type (切片類 型)、scope (范圍)以及criteria (作為切片中心的具體語句)。
(3) 切片結(jié)果處理(即post processor):在切片器引擎模塊執(zhí)行流程中,由于是直接使 用靜態(tài)分析庫API進(jìn)行計算,得到的切片結(jié)果為Jimple (java的中間表達(dá)形式,由soot框架 提供從java到j(luò)imple的轉(zhuǎn)換)語句,不利于閱讀和理解,因此需要經(jīng)過適當(dāng)處理轉(zhuǎn)換為Java 語句。通過post processor,完成從jimple結(jié)果到Java語句的映射轉(zhuǎn)換。
2、 Web服務(wù)分析模塊
(1) 獨立web服務(wù)的安全分析第一步解析WSDL協(xié)議,獲取在web服務(wù)描述的具體 信息,包括對操作的抽象定義,綁定到這些操作的具體協(xié)議,綁定的一個網(wǎng)絡(luò)端點規(guī)范以及 進(jìn)行操作的網(wǎng)絡(luò)端點;第二步調(diào)用構(gòu)建完成的切片器模塊功能接口,以獲取的服務(wù)接口作為 切片配置,對web服務(wù)的源碼進(jìn)行切片,獲得外部接口的信息流;第三步查看需要保護(hù)的關(guān) 鍵信息是否存在于接口信息流中,判斷信息是否泄漏,完成對獨立web服務(wù)的安全分析;
(2) web服務(wù)網(wǎng)絡(luò)的安全分析不同的web服務(wù)通過接口調(diào)用組成服務(wù)網(wǎng)絡(luò),各種信息 在這種接口調(diào)用過程中進(jìn)行傳遞。當(dāng)安全漏洞發(fā)生在一個web服務(wù)中,同時其他web服務(wù)調(diào) 用該web服務(wù)完成新的功能并發(fā)布成新的接口時,該安全漏洞被擴(kuò)散,基于切片結(jié)果以及對 獨立web服務(wù)安全分析結(jié)果,分析信息傳遞過程,查看關(guān)鍵信息是否在兩個web服務(wù)間被傳遞泄露,判斷在服務(wù)網(wǎng)絡(luò)中安全漏洞擴(kuò)散的問題, 3、安全報告模塊
設(shè)計安全報告的組成結(jié)構(gòu),包括具有安全漏洞的接口,被泄露的關(guān)鍵信息。從內(nèi)部措施 和外部措施兩個角度研究緩和方案的內(nèi)容。內(nèi)部措施包括修改web服務(wù)源碼、將對應(yīng)的方法 設(shè)為私有和改變方法名稱等,實現(xiàn)危險接口的屏蔽;外部措施包括添加安全控制模塊實現(xiàn)簽 名和加密,添加安全管理模塊實現(xiàn)身份驗證和訪問控制等。
兩種使用方式1)開發(fā)圖形用戶界面,在本地完成安全分析;2)將各模塊功能封裝成 接口API,發(fā)布為web服務(wù),供互聯(lián)網(wǎng)用戶遠(yuǎn)程調(diào)用,減少用戶資源消耗,為更高數(shù)量級別 的用戶提供服務(wù)。
本發(fā)明的有益效果:本發(fā)明面向安全Web服務(wù)產(chǎn)品開發(fā),以降低Web服務(wù)中的安全漏洞, 提高軟件質(zhì)量為目標(biāo),構(gòu)建一個web服務(wù)安全分析模型,可用于發(fā)現(xiàn)獨立web服務(wù)和web服 務(wù)網(wǎng)絡(luò)中信息泄露安全漏洞的存在和擴(kuò)散,具體成果包括
1、 提出獨立web服務(wù)中信息泄露安全漏洞的發(fā)現(xiàn)方法,能夠分析關(guān)鍵信息是否被泄露 給外部用戶,用于提高對關(guān)鍵信息的保護(hù)力度,減少安全漏洞;
2、 基于獨立web服務(wù)中安全情況的報告,提出發(fā)現(xiàn)服務(wù)網(wǎng)絡(luò)中安全漏洞擴(kuò)散的方法。 對存在于單個web服務(wù)中的安全漏洞,通過分析該漏洞在服務(wù)網(wǎng)絡(luò)中的擴(kuò)散情況,提出 緩和方案,降低了由于漏洞影響范圍擴(kuò)散而帶來的巨大損失;
3、 開發(fā)圖形化用戶界面,提供web服務(wù)安全分析模塊配置,執(zhí)行安全分析的功能;提 供API接口封裝本模型提供的分析功能模塊,發(fā)布為可供互聯(lián)網(wǎng)用戶調(diào)用的web服務(wù)接 口,減少用戶資源需求,提高使用效率。
實際的開發(fā)過程中,當(dāng)服務(wù)商發(fā)布的web服務(wù)中接口數(shù)量龐大時,通過運(yùn)行本模型提供 的安全分析工具,發(fā)現(xiàn)這些對敏感數(shù)據(jù)進(jìn)行操作的接口并采取相應(yīng)的措施,在改善web服務(wù) 安全性的同時,也能夠有效的節(jié)省時間和金錢。
下面結(jié)合附圖、實施例對本發(fā)明中的各模塊做進(jìn)一步的描述。
1、切片計算
在實現(xiàn)時,整個切片計算過程有多個Phase (階段)組成。Phase是指切片器的整個執(zhí)行 過程,分為若干個phase。在phase中執(zhí)行靜態(tài)分析或過程,可標(biāo)注這些分析或者過程的開始 和結(jié)束。每一個major phase (大階段)由0個或者多個minor phase (小階段)組成,順序執(zhí) 行。
1) 首先初始化一個slicer (切片器)對象,包括指定被切片程序、切片范圍、類型;
2) 在切片器引擎中執(zhí)行對象流分析,在指定tag (標(biāo)簽)名稱,裝載系統(tǒng)環(huán)境變量和切 片配置后,通過執(zhí)行對象流分析和依賴分析,生成程序依賴3) 收集切片,由切片器引擎驅(qū)動,將程序的AST中屬于切片組成部分的節(jié)點用指定的 tagName (標(biāo)簽名稱)進(jìn)行標(biāo)注,也就是說,若節(jié)點被指定的tagName標(biāo)注,意味著其屬于 切片的組成部分,被標(biāo)識的節(jié)點有兩種類型即(taggedClasses (標(biāo)簽類)和taggedMethods (標(biāo) 簽方法)兩個collection (集合)),通過這種方式,識別切片。
4) 處理切片結(jié)果,完成從jimple語句到j(luò)ava語句的映射。依據(jù)先前指定的tagName識別出屬于切片的語句,再根據(jù)語句中帶有源語句行號信息,在源程序中識別出對應(yīng)的java形式 的語句,實現(xiàn)將jimple語句形式的切片結(jié)果轉(zhuǎn)化成一般java語句的功能。
2、 獨立web服務(wù)安全分析
在這個過程中,以web服務(wù)源碼和需要保護(hù)的關(guān)鍵信息作為輸入,輸出為是否存在關(guān)鍵 信息泄露安全漏洞的報告。
1) 解析WSDL協(xié)議,獲取外部接口信息,可獲取的信息包括目標(biāo)名稱空間、服務(wù)名稱、 端口名稱、操作名稱以及輸入輸出參數(shù)。開發(fā)的WSDL文檔解析器工作流程首先在WSDL 文檔中獲取服務(wù)的definitions (服務(wù)的根節(jié)點),通過defmiton.getServices方法(調(diào)用該方法 返回服務(wù)的數(shù)組)獲取服務(wù)名稱,通過service.getPorts (調(diào)用該方法返回服務(wù)端口的數(shù)組)方 法獲取服務(wù)端口,綁定端口 port.getBinding (用該方法返回綁定的端口),通過一個循環(huán),對 每一個選定的操作名稱,使用analysisOperation方法(調(diào)用該方法分析操作,返回操作的具 體信息)分別獲取輸入?yún)?shù)以及輸出參數(shù)的名稱和類型。解析過程結(jié)束后,將獲得的所有信 息寫入用戶指定的File (文件對象)中,供其他模塊讀取。
2) 依據(jù)獲得的接口名稱和參數(shù)類型,將接口轉(zhuǎn)換成合法的Java語句的形式作為切片器 的輸入,完成切片器所需要的其他配置(指定切片范圍、類型等)后,調(diào)用切片計算功能對 源程序執(zhí)行切片,從切片結(jié)果中獲取接口相關(guān)信息流;
3) 將需要保護(hù)的關(guān)鍵信息與接口信息流進(jìn)行匹配,若兩者發(fā)生重合,判斷當(dāng)前web服 務(wù)中安全漏洞存在。
3、 web服務(wù)網(wǎng)絡(luò)安全分析
分析服務(wù)間接口調(diào)用情況。以兩個web服務(wù)調(diào)用作為代表,分析過程通過判斷是否出現(xiàn) 目標(biāo)web服務(wù)的Endpoint (web服務(wù)的調(diào)用地址)以及目標(biāo)操作的順序,和出現(xiàn)順序的先后 來達(dá)到判斷目標(biāo)web服務(wù)是否調(diào)用另一個web服務(wù)中目標(biāo)操作的目的
分析服務(wù)間的危險接口調(diào)用情況時,輸入為被分析的web服務(wù)源文件和安全漏洞信息文 件(由切片器模塊產(chǎn)生)。安全漏洞信息文件提供了包含安全漏洞的服務(wù)URI (Universal Resource Identifier,資源標(biāo)志符)以及對應(yīng)的危險操作。通過這三者之間進(jìn)行匹配,匹配成 功,說明被分析的web服務(wù)確實調(diào)用了包含安全漏洞的操作,從而導(dǎo)致了安全漏洞的擴(kuò)散; 否則,認(rèn)為此web服務(wù)未擴(kuò)散安全漏洞。
對于被判斷存在安全漏洞的調(diào)用關(guān)系,web服務(wù)調(diào)用者中存在一個新的安全漏洞,應(yīng)該 將其加入新的危險接口列表。
4、 安全報告
針對已發(fā)現(xiàn)的潛在安全漏洞,安全報告的提供相應(yīng)的緩和措施,為用戶消除威脅,提高 web服務(wù)安全性提供輔助性意見。結(jié)合用戶不同的需要,從兩個角度提供解決方案來緩和漏 洞:'
1、當(dāng)開發(fā)人員確實需要發(fā)布該服務(wù)給特定的用戶群使用時,通過添加安全機(jī)制(如授權(quán)、 身份驗證、XML (Extensible Markup Language,即可擴(kuò)展標(biāo)記語言)簽名、XML加密等)的 方式,達(dá)到只允許特定角色的客戶端對該服務(wù)的存取的效果,可采取的措施包括身份驗證、 簽名、有選擇的對SOAP消息加密以及雙層訪問控制機(jī)制。2、取消發(fā)布存在安全漏洞的接口。這種緩和措施適用于這樣的情況,當(dāng)開發(fā)人員在非故 意的情況下(如WSDL文件自動生成工具),暴露了敏感信息的操作接口。此時,不應(yīng)該由 任何外部客戶端,因此需要在WSDL文件中取消該接口,并在源文件中進(jìn)行修改(如將方法 設(shè)為私有,改變方法名稱等)。
在實際情況中,這些緩和措施可以互相搭配使用,來產(chǎn)生最好效果。 下面簡要描述安全分析模型的運(yùn)行流程從圖2中看出,當(dāng)用戶對自己的Web服務(wù)進(jìn)行 安全分析時,需要提供如下信息Web服務(wù)源碼以及需要保護(hù)的關(guān)鍵信息。切片器模塊完成 的功能包括根據(jù)關(guān)鍵信息從web服務(wù)源碼中提取出關(guān)鍵語句集合,供后續(xù)使用;使用已經(jīng) 得到的切片準(zhǔn)則,計算切片;在前兩步的基礎(chǔ)上,處理切片結(jié)果,判定安全漏洞的存在性問 題。Web服務(wù)協(xié)議分析模塊完成的功能有兩個第一獲取web服務(wù)暴露的外部用戶接口并進(jìn) 行處理,生成前一步所需要的切片準(zhǔn)則,調(diào)用切片器模塊功能對源程序執(zhí)行切片,判斷安全 漏洞的存在;第二根據(jù)切片器模塊的計算結(jié)果,結(jié)合web服務(wù)網(wǎng)絡(luò)中不同服務(wù)間的接口調(diào)用 關(guān)系,分析信息流傳遞過程中涉及到的關(guān)鍵信息傳遞問題,判定安全漏洞擴(kuò)散。
權(quán)利要求
1、一種建立基于程序切片的Web服務(wù)安全分析模型的方法,其特征是,包括下列步驟建立切片器模塊,用于通過指定合理的切片配置屬性,計算Java程序的切片,提供功能接口供本模型中的網(wǎng)絡(luò)web服務(wù)分析模塊調(diào)用,來獲取與切片準(zhǔn)則相關(guān)的程序抽象即程序的信息流;建立Web服務(wù)分析模塊,用于(1)獨立Web服務(wù)的安全分析第一步解析WSDL協(xié)議,獲取在Web服務(wù)描述的具體信息,包括對操作的抽象定義,綁定到這些操作的具體協(xié)議,綁定的一個網(wǎng)絡(luò)端點規(guī)范以及進(jìn)行操作的網(wǎng)絡(luò)端點;第二步調(diào)用構(gòu)建完成的切片器模塊功能接口,以獲取的服務(wù)接口作為切片配置,對Web服務(wù)的源碼進(jìn)行切片,獲得外部接口的信息流;第三步查看需要保護(hù)的關(guān)鍵信息是否存在于接口信息流中,判斷信息是否泄漏,完成對獨立Web服務(wù)的安全分析;(2)Web服務(wù)網(wǎng)絡(luò)的安全分析基于切片結(jié)果以及對獨立Web服務(wù)安全分析結(jié)果,分析信息傳遞過程,查看關(guān)鍵信息是否在兩個Web服務(wù)間被傳遞泄露,判斷在服務(wù)網(wǎng)絡(luò)中安全漏洞擴(kuò)散的問題;建立安全報告模塊,用于設(shè)計安全報告的組成結(jié)構(gòu),包括具有安全漏洞的接口,被泄露的關(guān)鍵信息,從內(nèi)部措施和外部措施兩個角度研究緩和方案的內(nèi)容,內(nèi)部措施包括修改網(wǎng)絡(luò)web服務(wù)源碼、將對應(yīng)的方法設(shè)為私有和改變方法名稱,實現(xiàn)危險接口的屏蔽;外部措施包括添加安全控制模塊實現(xiàn)簽名和加密,添加安全管理模塊實現(xiàn)身份驗證和訪問控制。
2、 根據(jù)權(quán)利要求1所述的一種建立基于程序切片的Web服務(wù)安全分析模型的方法,其特征 是,所述的建立切片器模塊中,切片器模塊包括以下3個子模塊(1) 切片器引擎讀入配置文件,調(diào)用開源的程序依賴分析框架/庫提供程序依賴 分析功能接口構(gòu)建系統(tǒng)依賴圖,使用基于迭代的切片算法收集源程序中屬于當(dāng)前切片 的語句,組成切片;(2) 切片準(zhǔn)則屬于執(zhí)行切片的配置文件的組成結(jié)構(gòu),在切片準(zhǔn)則中指定切片類 型type、范圍scope以及作為切片中心的具體語句criteria;(3) 切片結(jié)果處理單元即post processor:通過post processor,完成從jimple結(jié)果 到Java語句的映射轉(zhuǎn)換,Java是一種程序編程語言,jimple是Java編程語言的中間表 達(dá)形式。
3、 根據(jù)權(quán)利要求1所述的一種建立基于程序切片的Web服務(wù)安全分析模型的方法,其特征 是,所述建立Web服務(wù)分析模塊,其中的獨立Web服務(wù)安全分析是,以Web服務(wù)源碼和 需要保護(hù)的關(guān)鍵信息作為輸入,輸出為是否存在關(guān)鍵信息泄露安全漏洞的報告,包括1)解析WSDL協(xié)議,WSDL是Web Service Description LanguageWeb服務(wù)描述語 言,獲取外部接口信息,可獲取的信息包括目標(biāo)名稱空間、服務(wù)名稱、端口名稱、操 作名稱以及輸入輸出參數(shù),WSDL文檔解析器工作流程首先在WSDL文檔中獲取 服務(wù)的服務(wù)的根節(jié)點definitions,通過調(diào)用返回服務(wù)的數(shù)組defmiton.getServices方法獲取服務(wù)名稱,通過調(diào)用返回服務(wù)端口的數(shù)組service.getPorts方法獲取服務(wù)端口,綁 定端口調(diào)用返回綁定的端口 port.getBinding,通過一個循環(huán),對每一個選定的操作名 稱,使用調(diào)用分析操作、返回操作的具體信息analysisOperation方法分別獲取輸入?yún)?數(shù)以及輸出參數(shù)的名稱和類型,解析過程結(jié)束后,將獲得的所有信息寫入用戶指定的 文件對象File中,供其他模塊讀取;2) 依據(jù)獲得的接口名稱和參數(shù)類型,將接口轉(zhuǎn)換成合法的Java語句的形式作為 切片器的輸入,完成切片器所需要的其他配置包括指定切片范圍、類型后,調(diào)用切片 計算功能對源程序執(zhí)行切片,從切片結(jié)果中獲取接口相關(guān)信息流;3) 將需要保護(hù)的關(guān)鍵信息與接口信息流進(jìn)行匹配,若兩者發(fā)生重合,判斷當(dāng)前 Web服務(wù)中安全漏洞存在;所述的Web服務(wù)網(wǎng)絡(luò)安全分析是,分析服務(wù)間接口調(diào)用情況,以兩個Web服務(wù)調(diào) 用作為代表,分析過程通過判斷是否出現(xiàn)目標(biāo)Web服務(wù)的調(diào)用地址Endpoint以及目 標(biāo)操作的順序,和出現(xiàn)順序的先后來達(dá)到判斷目標(biāo)Web服務(wù)是否調(diào)用另一個Web服 務(wù)中目標(biāo)操作的目的,分析服務(wù)間的危險接口調(diào)用情況時,輸入為被分析的Web服 務(wù)源文件和安全漏洞信息文件,前述信息文件由切片器模塊產(chǎn)生,安全漏洞信息文件 提供了包含安全漏洞的服務(wù)URI, URI是Universal Resource Identifier資源標(biāo)志符, 以及對應(yīng)的危險操作,通過這三者之間進(jìn)行匹配,匹配成功,說明被分析的Web服 務(wù)確實調(diào)用了包含安全漏洞的操作,從而導(dǎo)致了安全漏洞的擴(kuò)散;否則,認(rèn)為此Web 服務(wù)未擴(kuò)散安全漏洞,對于被判斷存在安全漏洞的調(diào)用關(guān)系,網(wǎng)絡(luò)web服務(wù)調(diào)用者 中存在一個新的安全漏洞,將其加入新的危險接口列表。
4、 根據(jù)權(quán)利要求1所述的一種建立基于程序切片的Web服務(wù)安全分析模型的方法,其特征 是,所述建立安全報告模塊,從兩個角度提供解決方案來緩和漏洞(1) 通過添加安全機(jī)制包括授權(quán)、身份驗證、XML簽名、或XML加密的方式,XML 是Extensible Markup Language可擴(kuò)展標(biāo)記語言,達(dá)到只允許特定角色的客戶端對該服務(wù) 的存取的效果,可采取的措施包括身份驗證、簽名、有選擇的對SOAP消息加密以及雙層 訪問控制機(jī)制;(2) 取消發(fā)布存在安全漏洞的接口,在WSDL文件中取消存在安全漏洞的接口,并在 源文件中進(jìn)行修改,包括將方法設(shè)為私有,或改變方法名稱。
5、 根據(jù)權(quán)利要求1或2所述的一種建立基于程序切片的Web服務(wù)安全分析模型的方法,其 特征是,所述的建立切片器模塊,切片器模塊進(jìn)一步具體包括切片計算在實現(xiàn)時,整個 切片計算過程有多個phase組成,phase是指切片器的整個執(zhí)行過程,分為若干個phase, 在phase中執(zhí)行靜態(tài)分析或過程,可標(biāo)注這些分析或者過程的開始和結(jié)束,每一個大階段 major phase由0個或者多個小階段minor phase組成,順序執(zhí)行, 一個過程是指能夠完成 一個特定功能的一系列程序行為,第1個major phase為切片計算階段,由3個minor phase 組成,即對象流分析階段,依賴分析階段,切片收集階段;第2個major phase為切片結(jié) 果處理階段,無minor phase,執(zhí)行過程為1)首先初始化一個切片器slicer對象,包括指定被切片程序、切片范圍、類型;2) 在切片器引擎中執(zhí)行對象流分析,在指定標(biāo)簽tag名稱,裝載系統(tǒng)環(huán)境變量和切 片配置后,通過執(zhí)行對象流分析和依賴分析,生成程序依賴圖;3) 收集切片,由切片器引擎驅(qū)動,將程序的AST中屬于切片組成部分的節(jié)點用指定 的標(biāo)簽名稱tagName進(jìn)行標(biāo)注,若節(jié)點被指定的tagName標(biāo)注,意味著其屬于切片的組 成部分,被標(biāo)識的節(jié)點有兩種類型即標(biāo)簽類taggedClasses和標(biāo)簽方法taggedMethods兩 個集合collection,通過這種方式,識別切片; ,4) 處理切片結(jié)果,完成從jimple語句到Java語句的映射,依據(jù)先前指定的tagName 識別出屬于切片的語句,再根據(jù)語句中帶有源語句行號信息,在源程序中識別出對應(yīng)的 Java形式的語句,實現(xiàn)將jimple語句形式的切片結(jié)果轉(zhuǎn)化成一般Java語句。
全文摘要
本發(fā)明涉及軟件構(gòu)建技術(shù)、網(wǎng)絡(luò)安全,特別是建立基于程序切片的Web服務(wù)安全分析模型的方法。本發(fā)明提出一種建立基于程序切片的Web服務(wù)安全分析模型的方法,以從內(nèi)部和外部對網(wǎng)絡(luò)服務(wù)中關(guān)鍵信息和普通消息進(jìn)行保護(hù),提高網(wǎng)絡(luò)服務(wù)安全性,本發(fā)明采用的技術(shù)方案是1)建立切片器模塊,用于Web服務(wù)實現(xiàn)代碼中獲取信息流抽象;2)建立網(wǎng)絡(luò)服務(wù)分析模塊,用于發(fā)現(xiàn)關(guān)鍵信息通過當(dāng)前服務(wù)接口泄漏給互聯(lián)網(wǎng)用戶的安全違背情況,包括獨立網(wǎng)絡(luò)服務(wù)的安全分析和網(wǎng)絡(luò)服務(wù)網(wǎng)絡(luò)的安全分析;3)建立安全報告模塊,用于基于模型分析結(jié)果,結(jié)合已有的Web服務(wù)安全規(guī)范和過程中提出的安全措施,生成相應(yīng)的安全報告。本發(fā)明主要用于提供Web服務(wù)安全。
文檔編號H04L29/06GK101588363SQ20091006932
公開日2009年11月25日 申請日期2009年6月18日 優(yōu)先權(quán)日2009年6月18日
發(fā)明者馮志勇, 然 劉, 超 徐, 李曉紅, 許光全 申請人:天津大學(xué)