什么是虚拟编译器?
虚拟编译器可以读取任何源代码,并把它转换为一种常见的编程语言形式,然后对漏洞进行彻底的扫描。虚拟编译器可以处理非编译代码或任何项目的子集,并且通过补偿语法错误和补齐遗失的连接部分来对其进行虚拟编译。此外,它以已公布的用来确定计算机语言确切的背景和行为的标准为基础。使用这种方法,编译器就能够使用源代码本身来进行分析,并且绕过正式的编译和链接程序,使编译器与平台不产生关联,避免所有的兼容性问题。它可以轻松地关联到需要补救的代码,同时也很容易增加语言和方言来创建真正的语言不可知平台。
虚拟编译器采用了Java虚拟机创新的概念,并且更进了一步。在Java中,对于操作环境来说语言是不可知的,虚拟编译器中对于语言的复杂性也是不可知的。它处理所有的语言和方言的方法是一样的,都把它们变成常见的语言形式。二进制级别上实现的常见语言形式现在已经被成功地转化为源代码级别语言形式。值得注意的是,来源不需要完全一样,甚至不完整也可以:虚拟编译器可以接受开发人员在编译和链接方面出现错误。此外,标准编译器所展现的旁路缺陷加强了代码,这也提高了分析的准确性。虽然对不完整代码进行扫描之初不能
发现后期可能出现的所有问题,但事实证明已经能够发现很大一部分问题,并且被用于开发周期的初期也使得效率被提高的优点显现出来。
它是如何工作的?
虚拟编译器可以处理任何源代码,并将其转换成统一的形式,然后进行漏洞扫描。
以下是虚拟编译器的图解:
虚拟编译器按以下步骤工作:
1. 语言适配器—第一步基于市场上所有编译器所使用的出版标准分析源代码。
2. 语法补偿-—Checkmarx识别出语法错误并且将程序里附近未被解决的那部分隔离出来,同时促使进行全面处理。
3. 链接分解-—Checkmarx识别出遗失的和尚未解决的链接,补充遗失的链
接部分,促使对整个已解决流程进行检测。
4. 代码增强器—编译是运行时刻所专有的过程并且要在此时优化,因此要在问题解决过程中创建Checkmarx代码增强器所避免的缺陷:
o 增加遗失的控制流元素
o 区别歧义性数据元素
o 避免由编译器优化所造成的曲解
o 解决运行时刻虚拟函数的调用
5. 常见的语言形式-将语言虚拟成为一种包含到结构和数据流属性的常见形式。
6. 详尽的流扫描仪(EFS)-最终,扫描的复杂性和精度与应用程序图表的深度相关联。Checkmarx正在申请专利的算法,通过详尽的流扫描仪来执行,从而在一个流程图内扫描所有路径的缺陷,避免其他代码分析仪从中途简化操作。因此,除了一般优点之外,EFS的做法还具有精准的优势。Checkmarx代码分析器是当今唯一的几乎为零误报的产品。虽然其他产品用起来有冲击治疗的表现,但由于其较长的配置和较高的误报率,Checkmarx用户的体验将是较短时间就能够上手,并且使用开销也较低。
来源扫描一经完成,所有代码和流动特性都被存储在一个数据库中,可以通过开放的查询语言来检查漏洞。现成的查询再加上为企业标准和业务逻辑的量身定做,确保会对整体进行全面的漏洞检查
虚拟编译的影响
以编译器为基础的方法其主要风险是:第一,构建可能经常会失败,关键的安全漏洞没有报告;第二,静态分析没有在开发的初期被部署到桌面上。
虚拟编译器为在开发过程中影响安全性的所有利益相关者提供了妥善的解决办法。
· 审查人员:虚拟编译意味着审计师能够在任何时候对任何代码库进行检查。审计师应当有能力迅速进入代码级审查,随后审查高级别的趋势。由于不对以编译器为基础的办法存在依赖,审计师就不会受到编译器或平台兼容性问题的阻碍,他们所需要的就是来源。较快的审计指的是在较短的时间内审查较多的代码。最后,审计师很少会访问一个完整项目的所有代码,对于虚拟编译器来说,这就不再成为障碍。
· 安全负责人:静态分析仪的存在使开发人员更关注其采用的技术和生产力问题。虚拟编译器的出现意味着代码分析将被更广泛地使用,来使首席信息安全官更快速更准确地了解其“危险的工厂”,使他们能够实施有效管制来遏制危险。
· 开发人员:扫描未构建代码的能力会把静态分析进一步推回到开发生命周期,在这种能力有用的时候。虚拟编译对开发人员和审计师的桌面可用性影响最大。代码分析就是为了在开发过程中最便宜的阶段削减错误的发生。此外,由于代码增强和详尽的流扫描程序,用户可以获得更为准确的结果。
结论:虚拟编译器以显着降低的总成本提供了一个坚实的投资回报率
虚拟编译为企业组织提供了最佳途径来实施安全开发,同时系统地消除了软件的风险。虚拟编译简化了在软件开发过程中的关键利益相关者的工作流程,提高其发现问题的效率,并减少对昂贵的专业服务的需求。虚拟编译器,使开发人员和审计师能够随时随地扫描代码。对于首席信息安全官而言,这意味着在企业中保障应用程序的安全终于是实际可行的了。
Checkmarx虚拟编译器提供了:
·强大的投资回报率:虚拟编译器能够使问题在SDLC初期被发现,与正式测试中部署的解决方案相比,精确度提高了,并且降低了查找和修复缺陷的成本。
· 较低的总体拥有成本,有利于快速、频繁的代码扫描:虚拟编译器与平台相互独立,可在任何环境下快速安装,您只需要有源代码。无论开发人员使用的是Linux、Windows、苹果还是Solaris操作系统都没关系。改名了编译和构建应用程序的复杂性和系统开销。
测试方法越快越方便,就越有可能被经常彻底地使用,来确保代码的牢固和安全。