用于分析源代码的方法
阅读说明:本技术 用于分析源代码的方法 (Method for analyzing source code ) 是由 M·S·P·斯托廷格 R·佩里奇 于 2019-07-25 设计创作,主要内容包括:本发明涉及一种用于分析源代码(10)的方法,其具有以下步骤:识别易受实施攻击影响的源代码漏洞(14),其中,在主动源代码开发期间识别源代码漏洞(14),而无需进行程序编译。(The invention relates to a method for analyzing source code (10), comprising the following steps: a source code vulnerability (14) susceptible to an implementation attack is identified, wherein the source code vulnerability (14) is identified during active source code development without requiring program compilation.)
技术领域
本发明涉及一种用于分析源代码/源文本的方法,包括以下步骤:识别易受实施攻击影响的源代码漏洞。
此外,本发明还涉及一种用于数据处理的装置、一种计算机程序产品和一种计算机可读的数据载体。
背景技术
在例如使用集成开发环境开发源代码时,在源代码的生成中定期支持源代码开发人员,以便加速源代码开发并降低后期软件的出错率。现有技术中已知的开发者支持强调语法,其中在主动源代码开发期间对源代码进行语法检查,使得在主动源代码开发期间能够识别源代码错误。在主动源代码开发期间,通过视觉上突显所识别的源代码段落,使源代码开发者注意该源代码段落。通过语法强调,减少在编译阶段中出现的错误,从而加速软件开发。
除了语法突显之外,还已知源代码实时检查,在主动源代码开发期间针对不安全的标准函数(如strcpy或printf)检查源代码。在此,可以将源代码例如与一种预先定义的不安全的标准函数的字典进行匹配。这仅是静态的检查,通过该检查不能识别易受实施攻击影响的源代码漏洞。
对易受实施攻击影响的源代码漏洞迄今为止只能在程序运行期间、也就是在编程和实施结束之后才能被识别。为此,例如软件仿真或测试系统的分析是必要的。因此,为了识别相应的源代码漏洞,需要程序编译或者二进制文件。因此,如果识别出这种类型的源代码漏洞,需要再次进行源代码开发,因此需要耗时且昂贵的开发周期来修复所识别的漏洞。
此外,用于分析二进制文件的已知方法通常不会出现源代码开发者对相应的漏洞模式的敏感性。因此,已知方法不会导致源代码开发者的学习进步。
发明内容
因此,本发明的目的在于,加速和/或简化地开发出不易受实施攻击影响的源代码。
该目的通过开头所述类型的方法来实现,其中在主动源代码开发期间在不需要程序编译的情况下就识别出源代码漏洞。
本发明利用以下知识:通过在主动源代码开发期间识别出易受到实施攻击影响的源代码漏洞,可以避免涉及仿真软件或测试系统分析的、耗时且昂贵的开发周期。此外,在主动源代码开发期间对于相应源代码漏洞的识别实现了向源代码开发者的直接反馈,由此能够实现源代码开发者对相应的源代码漏洞的敏感化。
因此,源代码分析涵盖了源代码的动态实施行为,而不仅仅是针对诸如strcpy或printf的不安全的标准函数。因此,在本发明的意义上,术语“实施攻击”不包括仅在软件层面上进行的攻击。
优选地,该方法部分或完全在集成开发环境中执行。特别地,不需要产生二进制文件来识别相应的源代码漏洞。总之,实现了开发过程的显著加速,并显著降低了源代码对实施攻击的敏感性。
在本发明方法的一个优选实施方式中,识别易受实施攻击影响的源代码漏洞包括:识别易受边信道攻击影响的源代码漏洞和/或识别易受错误注入攻击影响的源代码漏洞。边信道攻击和错误注入攻击代表了实施攻击的子类型。边信道攻击也可以被称为SideChannel Attack(SCA)。边信道攻击利用了密码系统在设备中或在软件中的物理实现。在此,在实施密码算法时观察设备并且检查在所观察的信息与所使用的密钥之间的相关性。相应的边信道攻击可以例如涉及对算法的运行时间、计算过程期间的能量消耗或电磁辐射的分析。错误注入攻击也可以被称为Fault Injection Attack(FIA)。在错误注入的情况下,例如可以将干扰(短时脉冲波干扰)引入到设备的供电电压中。另一错误注入涉及将干扰插入到设备的时钟信号中。此外,还已知如下的错误注入攻击,其中被攻击的设备暴露在辐射下。
此外,通过视觉地突显所识别的源代码漏洞,有利地改进根据本发明的方法,其中在主动源代码开发期间视觉地突显所识别的源代码漏洞,而无需对程序进行编译。例如可以通过单色背景、改变的文字颜色设定和/或改变的字体或改变的字型的设定来进行视觉突显。替代或附加地,在识别对应的源代码漏洞时,可弹出弹出窗口,该弹出窗口指示源代码开发者所识别的源代码漏洞。通过视觉上突显或者指示所识别的源代码漏洞,对源代码开发者实现了学习效果。实现了源代码开发者对易受实施攻击影响的源代码漏洞的敏感化。
在根据本发明的方法的另一个优选实施方式中,在主动源代码开发期间实时地实现源代码漏洞的识别和/或所识别的源代码漏洞的视觉突显。以这种方式,可以由源代码开发者直接在编程时即时地修改或替换相应源代码漏洞。整个开发过程以这种方式被显著加速。
此外,根据本发明的方法还通过以下方式有利地改进,即自动加载针对被识别的源代码漏洞所存储的说明。替代或附加地,自动产生对所识别的源代码漏洞的说明。根据所识别的源代码漏洞的复杂性,足够的是:用所存储的说明来使源代码开发者注意到源代码漏洞和/或通过所存储的说明向源代码开发者提供针对所识别的源代码漏洞的补充信息。在其它情况下,可以使用所识别的源代码漏洞来产生相应的说明,使得所产生的说明包括了与由源代码开发者实际所表述的源代码相关的源代码特定的元素。替代或附加地,该方法可以包括自动显示针对所识别的源代码漏洞所加载的或所产生的说明。
在根据本发明的方法的一个有利的实施方式中,自动产生针对所识别的源代码漏洞的替代源代码和/或自动显示针对所识别的源代码漏洞所产生的替代源代码。优选地,替代源代码优选不包括易受实施攻击影响的源代码漏洞。特别地,替代源代码可以具有新的源代码结构。
此外,根据本发明的方法是优选的,其中基于源代码开发者输入的校正命令,通过产生的替代源代码自动地替换所识别的源代码漏洞。以这种方式,无需为了消除所识别的源代码漏洞而对源代码进行费事的手动匹配。以这种方式进一步加速源代码开发。
根据本发明的方法可以用于分析在车辆、尤其是汽车中使用的源代码。特别地,源代码用于车辆内部的控制装置。其它应用领域包括智能卡软件的开发、与物联网相关的开发、工业4.0以及设备彼此交互并且需要高度安全性的领域的其它开发。
本发明的目的还通过一种用于数据处理的装置来实现,该装置包括处理器,该处理器被配置为执行根据上述实施方式之一所述的用于分析源代码的方法。关于根据本发明的装置的优点和修改参见根据本发明的方法的优点和修改。
本发明的目的还通过一种计算机程序产品来实现,该计算机程序产品包括命令,这些命令在通过计算机执行程序时使计算机执行根据上述实施方式之一所述的用于分析源代码的方法。关于根据本发明的计算机程序产品的优点和修改,参考根据本发明的方法的优点和修改。
本发明的目的还通过一种计算机可读的数据载体来解决,在该数据载体上存储了之前所描述的计算机程序产品。
附图说明
下面参照附图详细说明和描述本发明的优选实施方式。附图中:
图1示出了可供用于数据处理的本发明装置调用的集成开发环境的一部分。
具体实施方式
在图1中示出的集成开发环境示意性地示出了根据本发明的用于分析源代码10的方法的实施例。
该方法由数据处理装置执行,该装置包括被配置为可以执行下面描述的方法的处理器。该方法基于计算机程序产品,该计算机程序产品包括命令,该命令在通过计算机执行程序时使该程序相应地实施该方法。
在该执行该方法期间,在由源代码开发者输入的源代码10中识别源代码漏洞14。源代码开发者通过被构造为键盘的输入装置将源代码10输入到编辑器12中。在主动源代码开发期间,实时地识别源代码漏洞14,而无需对程序进行编译。
在方法的范围内,识别易受实施攻击影响的源代码漏洞14,诸如,边信道攻击或错误注入攻击。因此,源代码分析不延伸到诸如strcpy或printf的不安全的标准函数,而是涉及到源代码10的实施行为。
当识别出易受实施攻击影响的源代码漏洞14时,视觉上突显所识别的源代码漏洞14,以便在主动源代码开发期间,使源代码开发者注意到源代码漏洞14。因此,同样也在时间上即时地、也就是在主动源代码开发期间在无需对程序进行编译的情况下实现了所识别的源代码漏洞14的视觉上的突显。
在此,源代码10包含for语句和if语句。这两种语句都被识别为易受实施攻击的且在视觉上突显。
在本方法的范围内,If语句被识别为源代码漏洞14,其易受边信道攻击。对于if语句,打开包括区段18a、18b的窗口16a。在区段18a中,向源代码开发者显示针对所识别的源代码漏洞14存储的说明,即,if语句不平衡,因此可能出现滥用的时间特性。在区段18b中,向源代码开发者显示用于消除源代码漏洞14的校正建议,即,if语句要与else语句组合。
在方法的范围内,For语句被识别为易受错误注入攻击影响的源代码漏洞14。对于for语句,打开包括区段20a、20b的窗口16b。在区段20a中,为源代码开发者显示针对所识别的源代码漏洞14存储的说明,即,没有为for循环定义结束并且因此可能出现滥用的控制流程篡改。在区段20b中,向源代码开发者显示用于消除源代码漏洞14的校正建议,即,插入检查是否已经执行了for循环的所有迭代的第二数值。此外,在区段20b中建议插入else语句以消除源代码漏洞14。
因此,所显示的替代源代码可以具有修改和/或扩展的源代码结构。源代码开发者可以通过输入相应的校正命令来使得所识别的源代码漏洞14被所显示的替换源代码替换。
附图标记列表:
10 源代码
12 编辑器
14 源代码漏洞
16a、16b 窗口
18a、18b 区段
20a、20b 区段
- 上一篇:一种医用注射器针头装配设备
- 下一篇:用于数据流图优化的系统和方法