CN115391780A - 应用代码的安全加固方法、系统、设备及存储介质 - Google Patents
应用代码的安全加固方法、系统、设备及存储介质 Download PDFInfo
- Publication number
- CN115391780A CN115391780A CN202211073395.9A CN202211073395A CN115391780A CN 115391780 A CN115391780 A CN 115391780A CN 202211073395 A CN202211073395 A CN 202211073395A CN 115391780 A CN115391780 A CN 115391780A
- Authority
- CN
- China
- Prior art keywords
- attack
- threat
- information
- security
- dependency
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 72
- 238000003860 storage Methods 0.000 title claims abstract description 27
- 230000002787 reinforcement Effects 0.000 title claims abstract description 17
- 238000012795 verification Methods 0.000 claims abstract description 42
- 230000003068 static effect Effects 0.000 claims abstract description 40
- 238000004458 analytical method Methods 0.000 claims abstract description 19
- 238000010586 diagram Methods 0.000 claims description 24
- 238000004140 cleaning Methods 0.000 claims description 8
- 239000000284 extract Substances 0.000 claims description 4
- 230000003014 reinforcing effect Effects 0.000 description 18
- 230000008569 process Effects 0.000 description 10
- 230000006870 function Effects 0.000 description 8
- 238000012545 processing Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 5
- 230000001419 dependent effect Effects 0.000 description 4
- 238000001514 detection method Methods 0.000 description 4
- 238000004880 explosion Methods 0.000 description 4
- 230000007123 defense Effects 0.000 description 3
- 238000001914 filtration Methods 0.000 description 3
- 238000002372 labelling Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 239000000470 constituent Substances 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 238000005111 flow chemistry technique Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 238000005201 scrubbing Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000013329 compounding Methods 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 230000005284 excitation Effects 0.000 description 1
- 238000005206 flow analysis Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000011478 gradient descent method Methods 0.000 description 1
- 238000010921 in-depth analysis Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000005728 strengthening Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Computer Security & Cryptography (AREA)
- Biophysics (AREA)
- Computer Hardware Design (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Virology (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供了应用代码的安全加固方法、系统、设备及存储介质,其中,方法包括:收集攻击信息和应用源代码;基于攻击信息提取攻击点,基于静态输入的应用源代码,构建静态调用依赖图,基于攻击点和依赖图进行反向传播的依赖搜索,将与攻击点具有直接或间接依赖关系的节点标记为可能的威胁点;对威胁点信息和攻击值信息,进行基于输入和约束的威胁原因分析,并对威胁原因进行记录;将基于威胁点信息和威胁原因生成的安全校验策略加入安全校验策略库;将安全校验策略库合并到应用代码。本发明能够基于动态攻击信息和静态代码上下文依赖信息,进行攻击威胁点标记和威胁原因分析,实现全面准确的代码威胁点识别。
Description
技术领域
本发明涉及代码检测领域,具体地说,涉及应用代码的安全加固方法、系统、设备及存储介质。
背景技术
应用代码安全校验不足是运行时应用安全面临的难点之一,代码安全校验不足将降低攻击者针对应用实施攻击行为的成本,威胁应用系统安全。
静态源代码扫描是近年被人提及较多的软件应用安全解决方案之一。它是指在软件工程中,程序员在写好源代码后,无需经过编译器编译,而直接使用一些扫描工具对其进行扫描,找出代码当中存在的一些语义缺陷、安全漏洞的解决方案。静态扫描技术已经从90年代时候的,编码规则匹配这种由编译技术拓展过来的分析技术向程序模拟全路径执行的方向发展,由此,这种模拟执行相对的执行路径比动态执行更多,能够发现很多动态测试难以发现的缺陷。
当前针对于代码安全校验和加固的工作,通常是考虑开发人员在编码阶段将检测逻辑嵌入应用代码实现的。然而此方法无法识别全文代码的威胁点,导致应用安全运行时防御的漏报率高。在进行代码安全校验和加固时,往往涉及大量的威胁检测点。该方法无法对威胁检测点进行自动识别,全面准确地针对脆弱代码进行安全校验。
有鉴于此,本发明提出了一种应用代码的安全加固方法、系统、设备及存储介质。
需要说明的是,上述背景技术部分公开的信息仅用于加强对本发明的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
针对现有技术中的问题,本发明的目的在于提供应用代码的安全加固方法、系统、设备及存储介质,克服了现有技术的困难,能够基于动态攻击信息和静态代码上下文依赖信息,进行攻击威胁点标记和威胁原因分析,实现全面准确的代码威胁点识别。
本发明的实施例提供一种应用代码的安全加固方法,包括以下步骤:
收集攻击信息和应用源代码;
基于所述攻击信息提取攻击点,基于静态输入的应用源代码,构建静态调用依赖图,基于所述攻击点和依赖图进行反向传播的依赖搜索,将与所述攻击点具有直接或间接依赖关系的节点标记为可能的威胁点;
对所述威胁点信息和攻击值信息,进行基于输入和约束的威胁原因分析,并对威胁原因进行记录;
将基于所述威胁点信息和威胁原因生成的安全校验策略加入安全校验策略库;以及
将所述安全校验策略库合并到应用代码。
优选地,所述基于所述攻击信息提取攻击点,基于静态输入的应用源代码,构建静态调用依赖图,基于所述攻击点和依赖图进行反向传播的依赖搜索,将与所述攻击点具有直接或间接依赖关系的节点标记为可能的威胁点,包括:
基于所述攻击信息获得攻击溯源信息,提取本次攻击的调用栈信息和变量值信息,获取攻击的爆发点位置和攻击值;
基于所述应用源代码进行数据流、控制流分析,构造静态的方法调用数据流图;
将所述攻击点和攻击值输入到所述静态调用数据流图,进行基于图的反向传播搜索;
将收集到的与攻击点有直接依赖关系或间接依赖关系的约束节点,标记为威胁点信息。
优选地,所述基于所述攻击信息获得攻击溯源信息,提取本次攻击的调用栈信息和变量值信息,获取攻击的爆发点位置和攻击值,还包括:
所述调用数据流图的图节点为代码基本块信息,边为依赖信息。
优选地,所述将所述攻击点和攻击值输入到所述静态调用数据流图,进行基于图的反向传播搜索,还包括:
收集与攻击点相关的约束节点信息,约束节点类型为直接依赖或间接依赖。
优选地,所述对所述威胁点信息和攻击值信息,进行基于输入和约束的威胁原因分析,并对威胁原因进行记录,包括:
当所述攻击点含有特殊字符,则将威胁原因标记为含有特殊字符;
当所述攻击点含有约束条件,则将威胁原因追加标记为含有约束条件。
优选地,所述将基于所述威胁点信息和威胁原因生成的安全校验策略加入安全校验策略库,包括:
基于所述威胁点信息和威胁原因,分别生成对应的安全校验策略;
将所述安全校验策略加入安全校验策略库。
优选地,所述将所述安全校验策略库合并到应用代码,包括:将所述安全校验策略加入到所述应用代码中生成清理规则。
本发明的实施例还提供一种应用代码的安全加固系统,用于实现上述的应用代码的安全加固方法,所述应用代码的安全加固系统包括:
信息采集模块,收集的攻击信息和应用源代码;
依赖搜索模块,基于所述攻击信息提取攻击点,基于静态输入的应用源代码,构建静态调用依赖图,基于所述攻击点和依赖图进行反向传播的依赖搜索,将与所述攻击点具有直接或间接依赖关系的节点标记为可能的威胁点;
威胁原因模块,对所述威胁点信息和攻击值信息,进行基于输入和约束的威胁原因分析,并对威胁原因进行记录;
校验策略模块,将基于所述威胁点信息和威胁原因生成的安全校验策略加入安全校验策略库;以及
代码合并模块,将所述安全校验策略库合并到应用代码。
本发明的实施例还提供一种应用代码的安全加固设备,包括:
处理器;
存储器,其中存储有所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行上述应用代码的安全加固方法的步骤。
本发明的实施例还提供一种计算机可读存储介质,用于存储程序,所述程序被执行时实现上述应用代码的安全加固方法的步骤。
本发明的目的在于提供应用代码的安全加固方法、系统、设备及存储介质,能够基于动态攻击信息和静态代码上下文依赖信息,进行攻击威胁点标记和威胁原因分析,实现全面准确的代码威胁点识别。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显。
图1是本发明的应用代码的安全加固方法的流程图。
图2是本发明的应用代码的安全加固方法的施例中步骤S120的流程示意图。
图3是本发明的应用代码的安全加固方法的施例中步骤S130的流程示意图。
图4是本发明的应用代码的安全加固方法的施例中步骤S140的流程示意图。
图5、6、7是实施本发明的应用代码的安全加固方法的过程步骤示意图。
图8是实施本发明的应用代码的安全加固方法的系统的模块示意图。
图9是本发明的应用代码的安全加固系统的实施例中依赖搜索模的模块示意图。
图10是本发明的应用代码的安全加固系统的实施例中威胁原因模块的模块示意图。
图11是本发明的应用代码的安全加固系统的实施例中校验策略模块的模块示意图。
图12是本发明的应用代码的安全加固设备的示意图。
具体实施方式
以下通过特定的具体实例说明本申请的实施方式,本领域技术人员可由本申请所揭露的内容轻易地了解本申请的其他优点与功效。本申请还可以通过另外不同的具体实施方式加以实施或应用系统,本申请中的各项细节也可以根据不同观点与应用系统,在没有背离本申请的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
下面以附图为参考,针对本申请的实施例进行详细说明,以便本申请所属技术领域的技术人员能够容易地实施。本申请可以以多种不同形态体现,并不限定于此处说明的实施例。
在本申请的表示中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的表示意指结合该实施例或示例表示的具体特征、结构、材料或者特点包括于本申请的至少一个实施例或示例中。而且,表示的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本申请中表示的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于表示目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本申请的表示中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
为了明确说明本申请,省略与说明无关的器件,对于通篇说明书中相同或类似的构成要素,赋予了相同的参照符号。
在通篇说明书中,当说某器件与另一器件“连接”时,这不仅包括“直接连接”的情形,也包括在其中间把其它元件置于其间而“间接连接”的情形。另外,当说某种器件“包括”某种构成要素时,只要没有特别相反的记载,则并非将其它构成要素排除在外,而是意味着可以还包括其它构成要素。
当说某器件在另一器件“之上”时,这可以是直接在另一器件之上,但也可以在其之间伴随着其它器件。当对照地说某器件“直接”在另一器件“之上”时,其之间不伴随其它器件。
虽然在一些实例中术语第一、第二等在本文中用来表示各种元件,但是这些元件不应当被这些术语限制。这些术语仅用来将一个元件与另一个元件进行区分。例如,第一接口及第二接口等表示。再者,如同在本文中所使用的,单数形式“一”、“一个”和“该”旨在也包括复数形式,除非上下文中有相反的指示。应当进一步理解,术语“包含”、“包括”表明存在的特征、步骤、操作、元件、组件、项目、种类、和/或组,但不排除一个或多个其他特征、步骤、操作、元件、组件、项目、种类、和/或组的存在、出现或添加。此处使用的术语“或”和“和/或”被解释为包括性的,或意味着任一个或任何组合。因此,“A、B或C”或者“A、B和/或C”意味着“以下任一个:A;B;C;A和B;A和C;B和C;A、B和C”。仅当元件、功能、步骤或操作的组合在某些方式下内在地互相排斥时,才会出现该定义的例外。
此处使用的专业术语只用于言及特定实施例,并非意在限定本申请。此处使用的单数形态,只要语句未明确表示出与之相反的意义,那么还包括复数形态。在说明书中使用的“包括”的意义是把特定特性、区域、整数、步骤、作业、要素及/或成份具体化,并非排除其它特性、区域、整数、步骤、作业、要素及/或成份的存在或附加。
虽然未不同地定义,但包括此处使用的技术术语及科学术语,所有术语均具有与本申请所属技术领域的技术人员一般理解的意义相同的意义。普通使用的字典中定义的术语追加解释为具有与相关技术文献和当前提示的内容相符的意义,只要未进行定义,不得过度解释为理想的或非常公式性的意义。
图1是本发明的应用代码的安全加固方法的流程图。如图1所示,本发明的应用代码的安全加固方法,本发明的流程包括:
S110、收集攻击信息和应用源代码。
S120、基于攻击信息提取攻击点,基于静态输入的应用源代码,构建静态调用依赖图,基于攻击点和依赖图进行反向传播的依赖搜索,将与攻击点具有直接或间接依赖关系的节点标记为可能的威胁点。程序依赖图(Program Dependence Graph)是程序的一种图形表示,它是带有标记的有向多重图。程序依赖图能够表示程序的控制依赖和数据依赖关系。程序依赖图(Program Dependence Graph)是关于源代码的一种图模型。源代码的图模型包括流程图(Control Flow Graph)、控制依赖图(Control Dependence Graph)、数据流程图(dataDependence Graph)、程序依赖图(Program Dependency Graph)。
S130、对威胁点信息和攻击值信息,进行基于输入和约束的威胁原因分析,并对威胁原因进行记录。
S140、将基于威胁点信息和威胁原因生成的安全校验策略加入安全校验策略库。以及
S150、将安全校验策略库合并到应用代码。
本发明通过结合动态攻击信息和静态代码上下文,进行反向传播的依赖搜索,实现威胁点标记;结合威胁点信息和攻击值信息,进行基于输入和约束的威胁原因分析;结合获取的威胁点信息和威胁原因,自动生成对应的清理策略;将清理策略库应用至代码中,进行应用代码安全的加固;实现应用代码安全性的提升,解决了运行时应用防御漏报率高的问题。
本发明的应用代码的安全加固方法能够基于动态攻击信息和静态代码上下文依赖信息,进行攻击威胁点标记和威胁原因分析,实现全面准确的代码威胁点识别。
图2是本发明的应用代码的安全加固方法的施例中步骤S120的流程示意图。图3是本发明的应用代码的安全加固方法的施例中步骤S130的流程示意图。图4是本发明的应用代码的安全加固方法的施例中步骤S140的流程示意图。图2至4所示,在图1的实施例中,步骤S110、S120、S130、S140、S150的基础上,通过S121、S122、S123、S124替换了步骤S120,通过S131、S132替换了步骤S130,通过S141、S142替换了步骤S140,通过S151替换了步骤S150,以下针对每个步骤进行说明:
S110、收集攻击信息和应用源代码。
S121、基于攻击信息获得攻击溯源信息,提取本次攻击的调用栈信息和变量值信息,获取攻击的爆发点位置和攻击值,调用数据流图的图节点为代码基本块信息,边为依赖信息。程序依赖图(Program Dependence Graph)是程序的一种图形表示,它是带有标记的有向多重图。系统程序依赖图是软件程序间控制依赖关系和数据依赖关系的图形表示。面向方面的程序是基于面向方面的思想,使用相关的框架或语言工具,实现系统中横切关注点的清晰模块化的程序。系统依赖图是分析和理解程序的基础工具之一,其在面向对象的程序上的研究渐趋成熟,而在面向方面的程序上的研究才刚刚开始。处理方法是以程序的控制流图为基础,去掉CFG的控制流边,加入数据和控制流边,包括了数据依赖图和程序依赖图。数据依赖图定义了数据之间的约束关系,控制依赖图定义了语句执行情况的约束关系。程序依赖图是一个有向图。在建立在SAST技术上的静态分析技术,将程序依赖图算法应用于动态切片,从而达到缩小程序分析范围的目的。其中,控制流图(Control Flow Graph,CFG)也叫控制流程图,是一个过程或程序的抽象表现,是用在编译器中的一个抽象数据结构,由编译器在内部维护,代表了一个程序执行过程中会遍历到的所有路径。它用图的形式表示一个过程内所有基本块执行的可能流向,也能反映一个过程的实时执行过程。SAST(Static Application Security Testing)是静态应用程序安全测试技术,通常在编码阶段分析应用程序的源代码或二进制文件的语法、结构、过程、接口等来发现程序代码存在的安全漏洞。本实施例中,可以采用现有技术提取本次攻击的调用栈信息和变量值信息,从而获取攻击的爆发点位置和攻击值,但不以此为限。
S122、基于应用源代码进行数据流、控制流分析,构造静态的方法调用数据流图。数据流图用于表示业务信息系统中的数据流,它表达了系统中的据传从输入到存储间所涉及的程序。数据流图的结构比较单一,其存在的约束比较多所以很多数据流图比较类似。数据流图(DFD)用于表示业务信息系统中的数据流,它表达了系统中的据传从输入到存储间所涉及的程序。数据流图可以分为逻辑形和物理形。逻辑数据流图描述了用以完成某业务功能所涉及的、业务层面的数据流动,物理数据流图则描述系统层面的数据流动。数据流图以将用以寻找、编辑、存储和分发数据的功能或过程图像化,方便用户和系统设计人员沟通。数据流图的结构也容让开发人员从高点分析系统,继而生成一系列用以深入分析的图表。数据流图被广泛应用,用于表达系统的逻辑信息流、用于寻找系统需求、简单、以理解的图形符号、建立手动和自动系统需求。本实施例中,可以采用现有技术构造静态的方法调用数据流图,但不以此为限。
S123、将攻击点和攻击值输入到静态调用数据流图,进行基于图的反向传播搜索,收集与攻击点相关的约束节点信息,约束节点类型为直接依赖或间接依赖。如果A依赖B,B依赖C,那么A→B和B→C都是直接依赖,而A→C是间接依赖。反向传播算法适合于多层神经元网络的一种学习算法,它建立在梯度下降法的基础上。反向传播算法网络的输入输出关系实质上是一种映射关系:一个n输入m输出的BP神经网络所完成的功能是从n维欧氏空间向m维欧氏空间中一有限域的连续映射,这一映射具有高度非线性。反向传播算法主要由两个环节(激励传播、权重更新)反复循环迭代,直到网络的对输入的响应达到预定的目标范围为止。反向传播算法的信息处理能力来源于简单非线性函数的多次复合,因此具有很强的函数复现能力。这是BP算法得以应用的基础。反向传播算法被设计为减少公共子表达式的数量而不考虑存储的开销。反向传播避免了重复子表达式的指数爆炸。本实施例中,可以采用现有技术来进行反向传播搜索,但不以此为限。
S124、将收集到的与攻击点有直接依赖关系或间接依赖关系的约束节点,标记为威胁点信息。
S131、当攻击点含有特殊字符,则将威胁原因标记为含有特殊字符。本实施例中的特殊字符是相对于传统或常用的符号外,使用频率较少字符且难以直接输入的符号。比如数学符号;单位符号;制表符等。种类繁多,有些符号要安装MS Gothic字体(日文字体)才可显示。
S132、当攻击点含有约束条件,则将威胁原因追加标记为含有约束条件。本实施例中的约束条件是对于决策方案的各项限制,常以不等式或方程式的形式出现。对目标函数常常要在一定约束条件下求最大值(或最小值),它们包含着用来代表决策方案的变量,借以对决策方案施加限制范围。
S141、基于威胁点信息和威胁原因,分别生成对应的安全校验策略。
S142、将安全校验策略加入安全校验策略库。
S151、将安全校验策略加入到应用代码中生成清理规则,从而实现源码级安全自动化加固流程。
图5、6、7是实施本发明的应用代码的安全加固方法的过程步骤示意图。如图5所示,首先,收用户请求。进行安全引擎防护的应用。输入记录的攻击信息和应用的源代码。
接着,基于输入的动态攻击信息,提取攻击点和攻击值信息。基于静态输入的应用代码,构建静态调用依赖图。基于攻击点和依赖图,进行反向传播的依赖搜索,将与攻击点具有直接或间接依赖关系的节点标记为可能的威胁点。参见图6中的S1区域的步骤,威胁点标记:基于应用的源代码,进行数据流、控制流分析,构造静态的方法调用数据流图。图节点为代码基本块信息,边为依赖信息。基于收集的攻击溯源信息,提取本次攻击的调用栈信息和变量值信息,获取攻击的爆发点位置和攻击值。输入攻击点和攻击值至静态调用数据流图,进行基于图的反向传播搜索,收集与攻击点相关的约束节点信息。约束节点类型主要包括直接依赖和间接依赖,如赋值语句、分支语句、循环语句等。将收集到的与攻击点有直接依赖关系或间接依赖关系的约束节点,标记为可能的威胁点信息。
然后,基于可能的威胁点信息和攻击值信息,进行基于输入和约束的威胁原因分析,并对威胁原因进行记录。参见图6中的S2区域的步骤,威胁原因分析:威胁原因包括但不限于:特殊输入和约束异常。基于可能的威胁点信息,结合攻击值,判断攻击值中是否含有特殊字符,如果有,则标记当前攻击点威胁原因之一为特殊输入造成。基于可能的威胁点信息,判断威胁点中是否含有约束类型节点,如果有,则追加标记当前威胁点处威胁原因之一为约束异常造成。如果没有,则基于获取的威胁点信息和威胁原因,分别生成对应的安全校验策略,并加入安全校验策略库。将生成的安全校验策略库,应用至代码中,实现应用代码安全的加固和提升。并且,使用安全策略生成模块基于威胁点相关信息,在威胁点处进行基于特殊字符过滤和约束条件优化的策略规则建立。基于威胁点产生原因信息,如果是由于特殊输入造成,则在威胁点处针对特殊字符继进行无害化处理。如果是由于约束异常造成,则在威胁点处强化约束条件。如选取更小的约束子集作为约束条件等。
最后,将安全策略应用至源代码,并将加固后的代码合并到安全引擎中。通过安全策略应用模块(参见图7),基于威胁点信息以及攻击代码子块,结合步清理策略规则,通过字节码操纵框架或Agent等方式,将策略合并应用至代码中生效。
通过上述步骤,本实施例能够基于动态攻击信息和静态代码上下文依赖信息,进行攻击威胁点标记和威胁原因分析,实现全面准确的代码威胁点识别。并且,基于威胁产生原因,结合特殊字符过滤和约束条件优化的清理规则自动生成。基于威胁点识别及分析、策略生成与应用的源码级安全自动化加固流程。该方法提高了应用代码的安全性,实现了结合动态攻击信息和静态代码上下文依赖的安全校验策略生成,从而降低了运行时应用防御的漏报率。
本发明的应用代码的安全加固方法能够基于动态攻击信息和静态代码上下文依赖信息,进行攻击威胁点标记和威胁原因分析,实现全面准确的代码威胁点识别;并且,基于威胁产生原因,结合特殊字符过滤和约束条件优化的清理规则自动生成;还能基于威胁点识别及分析、策略生成与应用的源码级安全自动化加固流程。
图8是实施本发明的应用代码的安全加固方法的系统的模块示意图。如图8所示,本发明的应用代码的安全加固系统,包括但不限于:
信息采集模块51,收集的攻击信息和应用源代码。
依赖搜索模块52,基于攻击信息提取攻击点,基于静态输入的应用源代码,构建静态调用依赖图,基于攻击点和依赖图进行反向传播的依赖搜索,将与攻击点具有直接或间接依赖关系的节点标记为可能的威胁点。
威胁原因模块53,对威胁点信息和攻击值信息,进行基于输入和约束的威胁原因分析,并对威胁原因进行记录。
校验策略模块54,将基于威胁点信息和威胁原因生成的安全校验策略加入安全校验策略库。以及
代码合并模块55,将安全校验策略库合并到应用代码。
上述模块的实现原理参见应用代码的安全加固方法中的相关介绍,此处不再赘述。
本发明的应用代码的安全加固系统能够基于动态攻击信息和静态代码上下文依赖信息,进行攻击威胁点标记和威胁原因分析,实现全面准确的代码威胁点识别。
图9是本发明的应用代码的安全加固系统的实施例中依赖搜索模的模块示意图。图10是本发明的应用代码的安全加固系统的实施例中威胁原因模块的模块示意图。图11是本发明的应用代码的安全加固系统的实施例中校验策略模块的模块示意图。图9至11所示,在图8装置实施例的基础上,本发明的应用代码的安全加固系统,通过信息提取模块521、数据流图模块522、传播搜索模块523、约束节点模块524替换了依赖搜索模块52。通过特殊字符模块531、约束条件模块532替换了威胁原因模块53。通过安全校模块541、策略加入模块542替换了校验策略模块54。通过清理规则模块551替换了代码合并模块55。以下针对每个模块进行说明:
信息采集模块51,被配置为收集攻击信息和应用源代码。
信息提取模块521,被配置为基于攻击信息获得攻击溯源信息,提取本次攻击的调用栈信息和变量值信息,获取攻击的爆发点位置和攻击值,调用数据流图的图节点为代码基本块信息,边为依赖信息。
数据流图模块522,被配置为基于应用源代码进行数据流、控制流分析,构造静态的方法调用数据流图。
传播搜索模块523,被配置为将攻击点和攻击值输入到静态调用数据流图,进行基于图的反向传播搜索,收集与攻击点相关的约束节点信息,约束节点类型为直接依赖或间接依赖。
约束节点模块524,被配置为将收集到的与攻击点有直接依赖关系或间接依赖关系的约束节点,标记为威胁点信息。
特殊字符模块531,被配置为当攻击点含有特殊字符,则将威胁原因标记为含有特殊字符。
约束条件模块532,被配置为当攻击点含有约束条件,则将威胁原因追加标记为含有约束条件。
安全校模块541,被配置为基于威胁点信息和威胁原因,分别生成对应的安全校验策略。
策略加入模块542,被配置为将安全校验策略加入安全校验策略库。
清理规则模块551,被配置为将安全校验策略加入到应用代码中生成清理规则。
上述步骤的实现原理参见应用代码的安全加固方法中的相关介绍,此处不再赘述。
本发明实施例还提供一种应用代码的安全加固设备,包括处理器。存储器,其中存储有处理器的可执行指令。其中,处理器配置为经由执行可执行指令来执行的应用代码的安全加固方法的步骤。
如上所示,该实施例本发明的应用代码的安全加固系统能够基于动态攻击信息和静态代码上下文依赖信息,进行攻击威胁点标记和威胁原因分析,实现全面准确的代码威胁点识别。
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“平台”。
图12是本发明的应用代码的安全加固设备的示意图。下面参照图12描述根据本发明的这种实施方式的电子设备600。图12所示的电子设备600仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图12所示,电子设备600以通用计算设备的形式表现。电子设备600的组件可以包括但不限于:至少一个处理单元610、至少一个存储单元620、连接不同平台组件(包括存储单元620和处理单元610)的总线630、显示单元640等。
其中,存储单元存储有程序代码,程序代码可以被处理单元610执行,使得处理单元610执行本说明书上述电子处方流转处理方法部分中描述的根据本发明各种示例性实施方式的步骤。例如,处理单元610可以执行如图1中所示的步骤。
存储单元620可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)6201和/或高速缓存存储单元6202,还可以进一步包括只读存储单元(ROM)6203。
存储单元620还可以包括具有一组(至少一个)程序模块6205的程序/实用工具6204,这样的程序模块6205包括但不限于:处理系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线630可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备600也可以与一个或多个外部设备700(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备600交互的设备通信,和/或与使得该电子设备600能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口650进行。并且,电子设备600还可以通过网络适配器660与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。网络适配器660可以通过总线630与电子设备600的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备600使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储平台等。
本发明实施例还提供一种计算机可读存储介质,用于存储程序,程序被执行时实现的应用代码的安全加固方法的步骤。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在终端设备上运行时,程序代码用于使终端设备执行本说明书上述电子处方流转处理方法部分中描述的根据本发明各种示例性实施方式的步骤。
如上所示,该实施例本发明的应用代码的安全加固系统能够基于动态攻击信息和静态代码上下文依赖信息,进行攻击威胁点标记和威胁原因分析,实现全面准确的代码威胁点识别。
根据本发明的实施方式的用于实现上述方法的程序产品800,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明处理的程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
综上,本发明的目的在于提供应用代码的安全加固方法、系统、设备及存储介质,能够基于动态攻击信息和静态代码上下文依赖信息,进行攻击威胁点标记和威胁原因分析,实现全面准确的代码威胁点识别。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
Claims (10)
1.一种应用代码的安全加固方法,其特征在于,包括以下步骤:
收集攻击信息和应用源代码;
基于所述攻击信息提取攻击点,基于静态输入的应用源代码,构建静态调用依赖图,基于所述攻击点和依赖图进行反向传播的依赖搜索,将与所述攻击点具有直接或间接依赖关系的节点标记为可能的威胁点;
对所述威胁点信息和攻击值信息,进行基于输入和约束的威胁原因分析,并对威胁原因进行记录;
将基于所述威胁点信息和威胁原因生成的安全校验策略加入安全校验策略库;以及
将所述安全校验策略库合并到应用代码。
2.如权利要求1所述的应用代码的安全加固方法,其特征在于,所述基于所述攻击信息提取攻击点,基于静态输入的应用源代码,构建静态调用依赖图,基于所述攻击点和依赖图进行反向传播的依赖搜索,将与所述攻击点具有直接或间接依赖关系的节点标记为可能的威胁点,包括:
基于所述攻击信息获得攻击溯源信息,提取本次攻击的调用栈信息和变量值信息,获取攻击的爆发点位置和攻击值;
基于所述应用源代码进行数据流、控制流分析,构造静态的方法调用数据流图;
将所述攻击点和攻击值输入到所述静态调用数据流图,进行基于图的反向传播搜索;
将收集到的与攻击点有直接依赖关系或间接依赖关系的约束节点,标记为威胁点信息。
3.如权利要求2所述的应用代码的安全加固方法,其特征在于,所述基于所述攻击信息获得攻击溯源信息,提取本次攻击的调用栈信息和变量值信息,获取攻击的爆发点位置和攻击值,还包括:
所述调用数据流图的图节点为代码基本块信息,边为依赖信息。
4.如权利要求2所述的应用代码的安全加固方法,其特征在于,所述将所述攻击点和攻击值输入到所述静态调用数据流图,进行基于图的反向传播搜索,还包括:
收集与攻击点相关的约束节点信息,约束节点类型为直接依赖或间接依赖。
5.如权利要求1所述的应用代码的安全加固方法,其特征在于,所述对所述威胁点信息和攻击值信息,进行基于输入和约束的威胁原因分析,并对威胁原因进行记录,包括:
当所述攻击点含有特殊字符,则将威胁原因标记为含有特殊字符;
当所述攻击点含有约束条件,则将威胁原因追加标记为含有约束条件。
6.如权利要求1所述的应用代码的安全加固方法,其特征在于,所述将基于所述威胁点信息和威胁原因生成的安全校验策略加入安全校验策略库,包括:
基于所述威胁点信息和威胁原因,分别生成对应的安全校验策略;
将所述安全校验策略加入安全校验策略库。
7.如权利要求1所述的应用代码的安全加固方法,其特征在于,所述将所述安全校验策略库合并到应用代码,包括:将所述安全校验策略加入到所述应用代码中生成清理规则。
8.一种应用代码的安全加固系统,其特征在于,包括:
信息采集模块,收集的攻击信息和应用源代码;
依赖搜索模块,基于所述攻击信息提取攻击点,基于静态输入的应用源代码,构建静态调用依赖图,基于所述攻击点和依赖图进行反向传播的依赖搜索,将与所述攻击点具有直接或间接依赖关系的节点标记为可能的威胁点;
威胁原因模块,对所述威胁点信息和攻击值信息,进行基于输入和约束的威胁原因分析,并对威胁原因进行记录;
校验策略模块,将基于所述威胁点信息和威胁原因生成的安全校验策略加入安全校验策略库;以及
代码合并模块,将所述安全校验策略库合并到应用代码。
9.一种应用代码的安全加固设备,其特征在于,包括:
处理器;
存储器,其中存储有所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1至7中任意一项所述应用代码的安全加固方法的步骤。
10.一种计算机可读存储介质,用于存储程序,其特征在于,所述程序被处理器执行时实现权利要求1至7中任意一项所述应用代码的安全加固方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211073395.9A CN115391780B (zh) | 2022-09-02 | 2022-09-02 | 应用代码的安全加固方法、系统、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211073395.9A CN115391780B (zh) | 2022-09-02 | 2022-09-02 | 应用代码的安全加固方法、系统、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115391780A true CN115391780A (zh) | 2022-11-25 |
CN115391780B CN115391780B (zh) | 2024-02-02 |
Family
ID=84124841
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211073395.9A Active CN115391780B (zh) | 2022-09-02 | 2022-09-02 | 应用代码的安全加固方法、系统、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115391780B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104573547A (zh) * | 2014-10-21 | 2015-04-29 | 江苏通付盾信息科技有限公司 | 一种信息交互的安全防范体系及其操作实现方法 |
KR102079687B1 (ko) * | 2019-07-12 | 2020-02-20 | 한화시스템(주) | 공격 그래프 기반의 사이버 위협 예측 시스템 및 그 방법 |
CN114726557A (zh) * | 2020-12-18 | 2022-07-08 | 华为技术有限公司 | 一种网络安全防护方法及装置 |
-
2022
- 2022-09-02 CN CN202211073395.9A patent/CN115391780B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104573547A (zh) * | 2014-10-21 | 2015-04-29 | 江苏通付盾信息科技有限公司 | 一种信息交互的安全防范体系及其操作实现方法 |
KR102079687B1 (ko) * | 2019-07-12 | 2020-02-20 | 한화시스템(주) | 공격 그래프 기반의 사이버 위협 예측 시스템 및 그 방법 |
CN114726557A (zh) * | 2020-12-18 | 2022-07-08 | 华为技术有限公司 | 一种网络安全防护方法及装置 |
Non-Patent Citations (2)
Title |
---|
许艳萍 等: "Android智能终端安全综述", 通信学报, vol. 37, no. 06, pages 169 - 181 * |
谢佳筠 等: "Android防护技术研究进展", 计算机工程, vol. 44, no. 02, pages 163 - 176 * |
Also Published As
Publication number | Publication date |
---|---|
CN115391780B (zh) | 2024-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111639344B (zh) | 一种基于神经网络的漏洞检测方法及装置 | |
US11157272B2 (en) | Automatic identification of appropriate code reviewers using machine learning | |
CN106557695A (zh) | 一种恶意应用检测方法和系统 | |
US10084819B1 (en) | System for detecting source code security flaws through analysis of code history | |
Alrabaee et al. | On leveraging coding habits for effective binary authorship attribution | |
JP4951416B2 (ja) | プログラム検証方法、プログラム検証装置 | |
Benomrane et al. | An ontologist feedback driven ontology evolution with an adaptive multi-agent system | |
Saheb Nasagh et al. | A fuzzy genetic automatic refactoring approach to improve software maintainability and flexibility | |
JP2018169693A (ja) | 情報処理装置、情報処理方法および情報処理プログラム | |
CN115391780B (zh) | 应用代码的安全加固方法、系统、设备及存储介质 | |
US11995192B2 (en) | System for static analysis of binary executable code and source code using fuzzy logic and method thereof | |
US20240012953A1 (en) | Ai advisor for incorporation of hardware constraints into design | |
CN114925757A (zh) | 多源威胁情报融合方法、装置、设备和存储介质 | |
Melnik et al. | Enforcing secure coding rules for the C programming language using the eclipse development environment | |
Joshi et al. | Smart Contract Vulnerability detection using Natural Language Processing | |
US20210279614A1 (en) | Abductive inference apparatus, abductive inference method, and computer readable recording medium | |
CN117349803B (zh) | 代码解混淆方法、装置、电子设备及计算机可读存储介质 | |
CN116305131B (zh) | 脚本静态去混淆方法及系统 | |
RU2783152C1 (ru) | Система и способ статического анализа исполняемого двоичного кода и исходного кода с использованием нечеткой логики | |
Zhou et al. | Software Vulnerability Detection via Multimodal Deep Learning | |
US20240045955A1 (en) | Identifying security events in programming code for logging | |
Lam | A Framework-Driven Comparison of Automata-Based Tools for Identifying Business Rule Conflicts | |
CN118133016A (zh) | 面向合约中间表示的智能合约安全检测模型的训练方法、检测方法、装置和设备 | |
CN117992060A (zh) | 基于深度学习的智能合约状态缺陷检测方法及系统 | |
CN118094561A (zh) | 一种基于代码属性图学习的代码漏洞检测方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |