應用軟體智能分析技術
文/ 諸凡
1895 年德國人倫琴發現 X 射線可穿透物質的特性,並利用這一特性發明了可以無損地透視物質內部構造的「X 光透視儀」。這之後,X 光透視技術被廣泛應用於醫療健康領域,同時,機械製造領域也利用 X 射線成像技術進行固體結構的內部檢查,鑄造件內部的缺陷無法通過外觀檢查等測試手段去發現,利用 X 射線透視技術,機械製造商可以非常小的代價提前發現零部件內在缺陷、問題,有效避免各種風險發生。
在互聯網 + 及人工智慧等的推動下,應用軟體技術快速發展,無論企業和個人都在日常經營和生活中高度依賴各種應用軟體的運行,各類應用給企業帶來高效運作的同時也伴隨著由於應用軟體本身安全性、穩定性等問題所帶來的高額成本支出和經營風險。2017 年美國知名徵信機構 Equifax數據泄露事件給 Equifax 造成了非常大的經濟損失,同時面臨可能是更加尷尬的法律訴訟。其後證實罪魁禍首是應用程序代碼中未正確使用和升級 Struts 開源框架。
面對複雜而龐大的應用軟體系統,各種常規的測試手段(例如單元測試、功能測試和壓力測試等)並不能對應用軟體的內在結構、代碼單元的相互交互關係、與資料庫間的訪問關係等有一個清晰、完整的了解。CAST提供的應用智能平台(CAST Application Intelligence Platform) 通過對應用軟體源代碼的掃描分析,為人們全面了解複雜應用的內在結構提供便利。它就像「X 光透視儀」一樣,通過對應用軟體完全無損的方式深入洞察軟體內部構造、事務(交易)處理路徑、數據更新訪問方式等等,將應用軟體內部一切的不可見「黑盒」變為可見。
應用軟體的結構化缺陷
通常在實際的應用軟體中,與組件級缺陷相比,系統級缺陷的數量更少。通過了傳統軟體分析方法測試的應用軟體,實際運行時卻仍然故障頻頻,這些問題往往都源自於正確的模塊之間的錯誤交互方式。而尋找、理解和修復這些問題的複雜性要比修復模塊或者組件本身的錯誤高得多。例如,卡特財團 (Cutter Consortium) 李祖德(Zude Li)等人的研究結果表明,涉及多個組件間交互的缺陷占所有軟體缺陷的約 30%,但卻需要超過 80%的修復工作。此外,嚴重的系統問題,例如安全漏洞或系統中斷,通常是由系統級缺陷而不是組件級問題引起的。事實證明,與組件級問題相比,系統級問題涉及更多的業務風險。而這些系統層面的問題通過單元或模塊測試很難被發現,這也是傳統軟體分析方法被人詬病的地方。
現在的軟體系統通常十分複雜,包括數百萬行代碼、數千個依賴項、數百個模塊、多個編程語言和許多資料庫,每個資料庫有數百個實體(見圖 1)。
這種錯綜複雜的系統結構往往會導致很多意想不到的問題,給系統維護人員帶來了巨大壓力。
上述問題的出現迫使軟體分析需要站在更高的角度。為此,專家們提出軟體語境分析的方法。軟體語境分析與軟體的本地語法分析對比如下 :
軟體語境分析使用語言分析器按組件分解軟體,然後使用分解結果來搭建整個系統的模型及其所有組件(代碼和資料庫)和依賴關係。一旦基於上下文的軟體分析工具創建了系統的模型,它就可以在單元和系統級別檢查整個系統(見圖 2)。
系統級分析不但能發現單元級分析忽略的問題,隨著組件之間相互作用的增加,它還可以抑制許多在句法軟體分析中容易發生的誤報。此外,軟體語境分析在軟體創新和可拓展方面也有建樹。它不僅能幫助發現漏洞,還能找到系統的非功能性障礙,比如性能瓶頸、代碼可擴展性以及可以改善軟體健壯性的方面。與返回二進位結果的功能測試不同,軟體語境分析重點指出有改進的潛力。因為有更大數量級的文件和路徑要檢查,軟體語境分析的運行通常不能像局部代碼分析那樣快速完成,所以這種分析通常放在軟體開發生命周期中的系統集成階段運行。即使這樣,更深入和全面的分析仍使軟體語境分析在降低軟體風險方面非常有價值。
CAST 的 AIP(Application Intelligence Platform)就是這類軟體語境分析的典型工具,它通過對應用軟體的源代碼、資料庫表結構的全局性的、關聯上下文的分析,深入透視應用軟體的結構和模塊、數據之間的交互關係、路徑,從而可以幫助客戶有效地發現軟體結構問題、缺陷以及安全漏洞。
CAST AIP的基本工作原理
圖 3 表示了 AIP 的基本代碼分析工作原理,其分析所需的輸入信息主要包括源代碼(包括資料庫表結構)及一些人工輸入的信息(例如對應應用開發組織的結構、人員數量、成本、開發及維護工作量等)。
同時支持多種編程語言(五十幾種語言)和資料庫(十幾種資料庫)使 CAST AIP 能廣泛適用各種不同的應用軟體分析(更多詳細信息請訪問 http://doc.castsoftware.com/display/DOC83/Covered+Technologies)。並且,AIP 的分析能力還不僅限於對單一編程語言、資料庫構成的應用軟體進行分析,它還能對由多種編程技術混合實現的應用進行分析。這一能力對於現在的大型複雜應用來說至關重要,因為具備這樣的分析能力才能夠正在從應用的全局觀進行聯繫上下文關係的全面分析。
CAST AIP的典型分析樣例
以下的典型案例均來自於實際的客戶應用軟體分析結果。
影響應用健壯性和可變性的關鍵缺陷
在 CISQ 的應用軟體結構規則中明確制定了影響應用軟體健壯性,並且給應用本身的可變性同時造成影響的其中一個關鍵規則 :避免對資料庫表的多重訪問。依據該規則,AIP 在實際應用軟體代碼中發現了如圖 4 的結構性違規。
通過實際源代碼掃描分析,生成軟體架構圖。發現應用架構中的大型資料庫表EJNL 有非常多的被訪問路徑,各個程序單元模塊以不同方式同時對該資料庫表進行讀取、更新、刪除等操作。這將嚴重影響軟體運行的健壯性,同時,該資料庫表的變化將對應用的眾多代碼產生影響,其軟體的可變性同時受到嚴重影響。
據此,建議需要對該資料庫的訪問路徑進行重新整合規劃,通過統一的資料庫訪問模塊進行訪問。
影響應用軟體性能的缺陷
實際應用軟體代碼中的資源釋放問題屢見不鮮。儘管大家普遍意識到該缺陷問題的嚴重性,但是如果不藉助自動化工具,需要從源代碼中發現這樣的問題並非易事。
圖 5 為 AIP 的實際掃描分析結果,輕鬆而且明確地發現了代碼中存在的資源未釋放問題。AIP 同時定位了出現問題的源代碼,使得問題的修復非常容易。
影響應用軟體安全性的缺陷
CWE(通用缺陷枚舉)是軟體行業較常用的軟體安全漏洞標準,市場上已經有多種靜態代碼掃描工具依據 CWE 進行安全漏洞的檢測。CAST AIP 獨到的聯繫軟體上下文語境的分析檢測方式,使得其依據CWE 進行的安全漏洞檢查更加準確,有效地避免了局部代碼分析所產生的大量誤報。
圖 6 即是針對某銀行客戶的網銀應用進行分析所發現的嚴重安全漏洞 :CWE-117 日誌偽造漏洞。
CAST AIP 除了內置 CISQ/OMG/CWE/OWASP/PCI 等軟體行業流行和公認的安全及結構化標準規則外,還支持客戶自定義規則。客戶可依據需要在工具中非常方便地定義各種架構規則,其後 AIP 將可以依據客戶自定義規則對應用代碼進行檢查,發現應用軟體違反客戶規則的代碼段。這對於客戶進行軟體架構合規性檢查帶來了極大的便利性。
作者簡介 :
開斯特(北京)軟體技術有限公司董事總經理
CAST AIP典型應用場景
CAST AIP 已經得到全球眾多各行業客戶的實際應用和一致好評,客戶的實際應用場景多種多樣。以下為較常見的客戶應用場景 :
1. 關鍵應用軟體有源代碼但缺乏詳細文檔,團隊不了解軟體內部構造,如何增加新業務或修復問題?
CAST AIP 通過對源代碼掃描,自動生成系統架構藍圖,生成詳細的架構文檔,幫助團隊快速掌握軟體內部
結構,輕鬆進行相關程序修改。修改後的再次掃描,將使不同版本間變化一目了然,缺陷是否增加或者減少全然已知。
2. 軟體代碼經過單元測試、集成測試、功能測試和壓力測試等常規測試,為何上線運行仍然出現重大的故障?
常規測試手段並不能發現軟體系統結構上的問題,尤其是採用多種技術混合實現的應用,如果沒有工具進行上下文關聯的分析,了解各個程序組件之間的交互關係,其內在結構上的缺陷難以發現,而這部分問題一旦在生產中爆發將會造成嚴重的業務損失。CAST AIP 通過支持對跨多種技術的代碼掃描,幫助發現軟體系統結構缺陷或違反架構設計要求的問題點,給出代碼修改的明確目標。通過對修改後的代碼再次掃描,清楚了解問題修復的進展情況。避免修復問題的同時帶出更多其他問題,進一步保障軟體運行可靠性。
3. 採用其他安全漏洞掃描工具(例如 Fortify)發現的大量軟體安全漏洞,都需要全面修復嗎?
通常的安全漏洞掃描工具對軟體進行代碼層的分析,比對 CWE/OWASP 等規則發現安全漏洞。由於缺乏對軟體結構和代碼上下文關係的了解,只看局部代碼勢必造成大量的誤報 ;CAST AIP 進行的安全漏洞分析基於軟體架構的上下文關係,在每個交易處理的全路徑上分析並發現安全漏洞,從而有效地避免了誤報。使開發團隊可以關注修復真正的漏洞問題,大大縮短開發交付周期。
4. 您知道您的各個應用軟體的大小及複雜度嗎?
CAST AIP 自動化功能點可以實現基於程序源代碼的自動化分析,計算生成功能點(包括功能點和增強功能點等),提供軟體度量的科學方法。使得軟體度量快速、便捷和一致。您可以方便地利用自動化功能點計算結果進行成本分析、開發管理、績效考核等各項應用。
5. 業務變化頻繁,軟體版本快速迭代,如何有效測試,避免版本質量惡化?
通過由 CAST AIP 掃描源代碼,發現前後版本的結構變化及其影響,幫助清晰制定功能測試範圍。同時,版本迭代後的其他健康度(安全性、穩健性、性能等)的變化情況也一目了然,避免版本質量惡化。
6. IT 管理者是否了解您的全部應用軟體家底?
CAST Highlight 快速全面掌握銀行應用軟體的組合,圖形方式直觀展現所有應用的業務影響度和健康度分布,方便您準確判斷需要關注的焦點,為制定應用重構、質量及性能提升確立了清晰的投資重點。
更多版權聲明:
內容請訂閱《高科技與產業化》雜誌
全年12期,58元/期,全年訂價696元
郵發代號:82-741
刊號:ISSN1006-222X CN11-3556/N
※特斯拉超級跑車Roadster 2
※從「軟體定義」產業到「軟體定義產業鏈」
TAG:高科技與產業化 |