站内检索

应用软件智能分析技术——来自CAST的应用软件“X光透视仪”
作者:诸凡 发表时间:2018年01月09日

 应用软件智能分析技术.pdf

 

  1895年德国人伦琴发现X射线可穿透物质的特性,并利用这一特性发明了可以无损地透视物质内部构造的“X光透视仪”。这之后,X光透视技术被广泛应用于医疗健康领域,同时,机械制造领域也利用X射线成像技术进行固体结构的内部检查,铸造件内部的缺陷无法通过外观检查等测试手段去发现,利用X射线透视技术,机械制造商可以非常小的代价提前发现零部件内在缺陷、问题,有效避免各种风险发生。

  在互联网+及人工智能等的推动下,应用软件技术快速发展,无论企业和个人都在日常经营和生活中高度依赖各种应用软件的运行,各类应用给企业带来高效运作的同时也伴随着由于应用软件本身安全性、稳定性等问题所带来的高额成本支出和经营风险。2017年美国知名征信机构Equifax数据泄露事件给Equifax造成了非常大的经济损失,同时面临可能是更加尴尬的法律诉讼。其后证实罪魁祸首是应用程序代码中未正确使用和升级Struts开源框架。

  面对复杂而庞大的应用软件系统,各种常规的测试手段(例如单元测试、功能测试和压力测试等)并不能对应用软件的内在结构、代码单元的相互交互关系、与数据库间的访问关系等有一个清晰、完整的了解。CAST提供的应用智能平台(CAST Application Intelligence Platform)通过对应用软件源代码的扫描分析,为人们全面了解复杂应用的内在结构提供便利。它就像“X光透视仪”一样,通过对应用软件完全无损的方式深入洞察软件内部构造、事务(交易)处理路径、数据更新访问方式等等,将应用软件内部一切的不可见“黑盒”变为可见。

  应用软件的结构化缺陷

  通常在实际的应用软件中,与组件级缺陷相比,系统级缺陷的数量更少。通过了传统软件分析方法测试的应用软件,实际运行时却仍然故障频频,这些问题往往都源自于正确的模块之间的错误交互方式。而寻找、理解和修复这些问题的复杂性要比修复模块或者组件本身的错误高得多。例如,卡特财团(Cutter Consortium)李祖德(ZudeLi)等人的研究结果表明,涉及多个组件间交互的缺陷占所有软件缺陷的约30%,但却需要超过80%的修复工作。此外,严重的系统问题,例如安全漏洞或系统中断,通常是由系统级缺陷而不是组件级问题引起的。事实证明,与组件级问题相比,系统级问题涉及更多的业务风险。而这些系统层面的问题通过单元或模块测试很难被发现,这也是传统软件分析方法被人诟病的地方。

  现在的软件系统通常十分复杂,包括数百万行代码、数千个依赖项、数百个模块、多个编程语言和许多数据库,每个数据库有数百个实体(见图1)。

 

 

  这种错综复杂的系统结构往往会导致很多意想不到的问题,给系统维护人员带来了巨大压力。

  上述问题的出现迫使软件分析需要站在更高的角度。为此,专家们提出软件语境分析的方法。软件语境分析与软件的本地语法分析对比如下:

  软件语境分析使用语言分析器按组件分解软件,然后使用分解结果来搭建整个系统的模型及其所有组件(代码和数据库)和依赖关系。一旦基于上下文的软件分析工具创建了系统的模型,它就可以在单元和系统级别检查整个系统(见图2)。

 

 

 

  系统级分析不但能发现单元级分析忽略的问题,随着组件之间相互作用的增加,它还可以抑制许多在句法软件分析中容易发生的误报。此外,软件语境分析在软件创新和可拓展方面也有建树。它不仅能帮助发现漏洞,还能找到系统的非功能性障碍,比如性能瓶颈、代码可扩展性以及可以改善软件健壮性的方面。与返回二进制结果的功能测试不同,软件语境分析重点指出有改进的潜力。因为有更大数量级的文件和路径要检查,软件语境分析的运行通常不能像局部代码分析那样快速完成,所以这种分析通常放在软件开发生命周期中的系统集成阶段运行。即使这样,更深入和全面的分析仍使软件语境分析在降低软件风险方面非常有价值。

  CAST的AIP(Application Intelligence Platform)就是这类软件语境分析的典型工具,它通过对应用软件的源代码、数据库表结构的全局性的、关联上下文的分析,深入透视应用软件的结构和模块、数据之间的交互关系、路径,从而可以帮助客户有效地发现软件结构问题、缺陷以及安全漏洞。

  CASTAIP的基本工作原理

  图3表示了AIP的基本代码分析工作原理,其分析所需的输入信息主要包括源代码(包括数据库表结构)及一些人工输入的信息(例如对应应用开发组织的结构、人员数量、成本、开发及维护工作量等)。

  同时支持多种编程语言(五十几种语言)和数据库(十几种数据库)使CASTAIP能广泛适用各种不同的应用软件分析(更多详细信息请访问http://doc.castsoftware.com/display/DOC83/Covered+Technologies)。并且,AIP的分析能力还不仅限于对单一编程语言、数据库构成的应用软件进行分析,它还能对由多种编程技术混合实现的应用进行分析。这一能力对于现在的大型复杂应用来说至关重要,因为具备这样的分析能力才能够正在从应用的全局观进行联系上下文关系的全面分析。

 

 

 

 CASTAIP的典型分析样例

  以下的典型案例均来自于实际的客户应用软件分析结果。

  影响应用健壮性和可变性的关键缺陷

  在CISQ的应用软件结构规则中明确制定了影响应用软件健壮性,并且给应用本身的可变性同时造成影响的其中一个关键规则:避免对数据库表的多重访问。依据该规则,AIP在实际应用软件代码中发现了如图4的结构性违规。

 

 

  通过实际源代码扫描分析,生成软件架构图。发现应用架构中的大型数据库表EJNL有非常多的被访问路径,各个程序单元模块以不同方式同时对该数据库表进行读取、更新、删除等操作。这将严重影响软件运行的健壮性,同时,该数据库表的变化将对应用的众多代码产生影响,其软件的可变性同时受到严重影响。

  据此,建议需要对该数据库的访问路径进行重新整合规划,通过统一的数据库访问模块进行访问。

  影响应用软件性能的缺陷

  实际应用软件代码中的资源释放问题屡见不鲜。尽管大家普遍意识到该缺陷问题的严重性,但是如果不借助自动化工具,需要从源代码中发现这样的问题并非易事。

  图5为AIP的实际扫描分析结果,轻松而且明确地发现了代码中存在的资源未释放问题。AIP同时定位了出现问题的源代码,使得问题的修复非常容易。

 

  影响应用软件安全性的缺陷

  CWE(通用缺陷枚举)是软件行业较常用的软件安全漏洞标准,市场上已经有多种静态代码扫描工具依据CWE进行安全漏洞的检测。CASTAIP独到的联系软件上下文语境的分析检测方式,使得其依据CWE进行的安全漏洞检查更加准确,有效地避免了局部代码分析所产生的大量误报。

  图6即是针对某银行客户的网银应用进行分析所发现的严重安全漏洞:CWE-117日志伪造漏洞。

 

 

  CASTAIP除了内置CISQ/OMG/CWE/OWASP/PCI等软件行业流行和公认的安全及结构化标准规则外,还支持客户自定义规则。客户可依据需要在工具中非常方便地定义各种架构规则,其后AIP将可以依据客户自定义规则对应用代码进行检查,发现应用软件违反客户规则的代码段。这对于客户进行软件架构合规性检查带来了极大的便利性。

  作者单位:开斯特(北京)软件技术有限公司

 

  CASTAIP典型应用场景

  CASTAIP已经得到全球众多各行业客户的实际应用和一致好评,客户的实际应用场景多种多样。以下为较常见的客户应用场景:

  1.关键应用软件有源代码但缺乏详细文档,团队不了解软件内部构造,如何增加新业务或修复问题?

  CASTAIP通过对源代码扫描,自动生成系统架构蓝图,生成详细的架构文档,帮助团队快速掌握软件内部结构,轻松进行相关程序修改。修改后的再次扫描,将使不同版本间变化一目了然,缺陷是否增加或者减少全然已知。

  2.软件代码经过单元测试、集成测试、功能测试和压力测试等常规测试,为何上线运行仍然出现重大的故障?

  常规测试手段并不能发现软件系统结构上的问题,尤其是采用多种技术混合实现的应用,如果没有工具进行上下文关联的分析,了解各个程序组件之间的交互关系,其内在结构上的缺陷难以发现,而这部分问题一旦在生产中爆发将会造成严重的业务损失。CASTAIP通过支持对跨多种技术的代码扫描,帮助发现软件系统结构缺陷或违反架构设计要求的问题点,给出代码修改的明确目标。通过对修改后的代码再次扫描,清楚了解问题修复的进展情况。避免修复问题的同时带出更多其他问题,进一步保障软件运行可靠性。

  3.采用其他安全漏洞扫描工具(例如Fortify)发现的大量软件安全漏洞,都需要全面修复吗?

  通常的安全漏洞扫描工具对软件进行代码层的分析,比对CWE/OWASP等规则发现安全漏洞。由于缺乏对软件结构和代码上下文关系的了解,只看局部代码势必造成大量的误报;CASTAIP进行的安全漏洞分析基于软件架构的上下文关系,在每个交易处理的全路径上分析并发现安全漏洞,从而有效地避免了误报。使开发团队可以关注修复真正的漏洞问题,大大缩短开发交付周期。

  4.您知道您的各个应用软件的大小及复杂度吗?

  CASTAIP自动化功能点可以实现基于程序源代码的自动化分析,计算生成功能点(包括功能点和增强功能点等),提供软件度量的科学方法。使得软件度量快速、便捷和一致。您可以方便地利用自动化功能点计算结果进行成本分析、开发管理、绩效考核等各项应用。

  5.业务变化频繁,软件版本快速迭代,如何有效测试,避免版本质量恶化?

  通过由CASTAIP扫描源代码,发现前后版本的结构变化及其影响,帮助清晰制定功能测试范围。同时,版本迭代后的其他健康度(安全性、稳健性、性能等)的变化情况也一目了然,避免版本质量恶化。

  6.IT管理者是否了解您的全部应用软件家底?

  CASTHighlight快速全面掌握银行应用软件的组合,图形方式直观展现所有应用的业务影响度和健康度分布,方便您准确判断需要关注的焦点,为制定应用重构、质量及性能提升确立了清晰的投资重点。

首页投稿广告关于我们联系我们

版权:《高科技与产业化》编辑部版权所有 京ICP备12041800号

地址:北京市海淀区中关村北四环西路33号 邮编:100080

联系电话:(010)82626611-6618 传真:(010)82627674 联系邮箱:hitech@mail.las.ac.cn