基于代码语义分析的电力信息系统安全防护方法及装置制造方法及图纸

技术编号:29790547 阅读:16 留言:0更新日期:2021-08-24 18:09
本发明专利技术提出了一种基于代码语义分析的电力信息系统安全防护方法及装置,所述方法包括:采集电网信息系统的运行代码和相关的运行态信息,并提取关键信息的信息;对采集的关键信息进行词法分析和语法分析,得到抽象语法树;根据预设的安全模型对预处理后的抽象语法树的代码逻辑进行判断检测,识别代码漏洞;根据漏洞攻击行为判定情况,对源代码进行语义修复。本发明专利技术以函数作为攻击监测的切入点,通过词法、语法等分析过程对SQL攻击的负载进行检测,对缺失语法进行补全。达到提前预估可能存在的漏洞并发出告警,对常见的漏洞进行修复,可以有效加强电力信息系统的安全防护,有效发现应用过程中安全漏洞,保证电网的信息安全。

【技术实现步骤摘要】
基于代码语义分析的电力信息系统安全防护方法及装置
本专利技术涉及信息安全应用领域,具体涉及一种基于代码语义分析的电力信息系统安全防护方法及装置。
技术介绍
在电力应用领域,电力网络安全成为电网业务使命的重要基础性战略。Web是目前网络应用的主要载体,信息化的发展给电网的工作和电力用户都带来了极大的便利。但是在信息化的过程中,对电力网络安全的攻击也愈演愈烈。攻击者利用Web应用存在的漏洞进行相关数据的获取造成信息系统的破坏和电力网络安全事件频发,而每起安全事件都离不开代码数据泄露的威胁。针对电网信息系统的传统安全防护方法作用于程序输入输出端,通过在输入和输出端使用数据流监测系统,实时对攻击行为进行告警和拦截,这种传统的方法能很好地防御Web攻击。但在互联网技术发展迅猛的今天,Web应用程序面临的威胁也在不断变化与升级。基于互联网衍生出来的云计算、大数据、物联网、移动计算等新技术与新模式,让Web应用程序的开发框架、运行环境、流量入口、服务器部署都发生了很大的变化,传统的Web数据流监测方法已不能应对日益严峻的网络安全态势,针对经变形混淆后绕过检测进入程序内部执行的恶意代码对电力信息系统的安全防护提出了更高的要求。同时电力企业目前采用内外网隔离的信息系统防御体系,仅仅通过内外网物理隔离装置、企业防火墙、流量规则防御工具方法只能进行边界安全防御,对于应用级别的安全防护无法满足。
技术实现思路
专利技术目的:针对现有技术的不足,本专利技术提供一种基于代码语义分析的电力信息系统安全防护方法,通过精细化的语义分析帮助提升运行态信息系统的自我保护能力。本专利技术的另一目的是提供一种基于代码语义分析的电力信息系统安全防护装置。技术方案:根据本专利技术的第一方面,提供一种基于代码语义分析的电力信息系统安全防护方法,包括以下步骤:采集电网信息系统的运行代码和相关的运行态信息,并提取关键信息的信息;对采集的关键信息进行词法分析和语法分析,得到抽象语法树;根据预设的安全模型对预处理后得到的抽象语法树的代码逻辑进行判断检测,识别代码漏洞;根据漏洞攻击行为判定情况,对源代码进行语义修复。其中,采集信息通过基于Web应用程序的外部输入,采集电网信息系统的运行代码和相关的运行态信息,进行关键信息提取,形成用户请求信息文件,作为后续处理的输入。对采集的关键信息进行词法分析和语法分析包括:词法分析器依次读取包含代码关键信息的用户请求信息文件中的字符,进行字符集合分析,按照预定的规则将字符合并成标记token,将整个用户请求信息文件分割进一个token列表,并选取当前Web解释器使用的分析器,提取解释器标准定义规则文件;语法分析器根据标准定义语法规则还原语法中的程序逻辑,构建完整的抽象语法树AST。根据预设的安全模型对预处理后的抽象语法树的代码逻辑进行判断检测,识别代码漏洞包括:根据Adaboost算法得到最佳的单层决策树,再利用FP-growth算法基于所述最佳的单层决策树进行关联分析,实现通过上下逻辑的分析,检测出是否存在SQL注入攻击行为。进一步地,所述根据Adaboost算法得到最佳的单层决策树包括:基于建立的常规抽象语法树,利用深度优先遍历进一步得到序列化AST;对代码文件进行向量转化,所述代码文件指的是用户输入的经过预处理后的数据;通过数字映射与填充、词嵌入方法获取代码的深层语义,实现代码的深度表示;通过深度优先遍历方法遍历抽象语法树将其映射为向量,并通过构建映射的方式,将向量的元素转换为整数形式,该部分整数作为向量元素的唯一标识;通过Adaboost算法得到一个最佳的单层决策树。进一步地,所述利用FP-growth算法基于所述最佳的单层决策树进行关联分析,实现通过上下逻辑的分析,检测出是否存在SQL注入攻击行为包括:扫描电力信息系统中用户输入的经过预处理后的数据,得到所有频繁项集的的计数;删除支持度低于阈值的项,将频繁项集放入项头表,并按照支持度降序排列;将读到的用户输入的经过预处理后的数据剔除非频繁项集,并按照支持度降序排列,循环扫描信息,查找满足最小支持度的关联项集;读入排序后的数据集,插入基于Adaboost算法得到的最佳的单层决策树,插入时按照排序后的顺序插入树中,其中排序靠前的节点是祖先节点,而靠后的是子孙节点。如果有共用的祖先,则对应的公用祖先节点计数加1,插入后,如果有新节点出现,则项头表对应的节点会通过节点链表链接上新节点,直到所有的数据都插入到树中;从项头表的底部项依次向上找到项头表项对应的条件模式基;从条件模式基递归挖掘得到项头表项项的频繁项集;如果不限制频繁项集的项数,则返回之前的所有的频繁项集,否则只返回满足项数要求的频繁项集;筛选出其中最小支持度的关项集,最终达到所有关联项集都被挖掘出,得出关联规则,进行排序更新树,最终输出漏洞攻击行为的检测结果。进一步地,对源代码进行语义修复包括:从历史代码库中搜索与源程序相似的bug代码,并找到与其相关的修复代码;将修复代码转换为抽象语法树,生成候选补丁;使用基于给定测试用例的适应度函数来验证候选补丁是否有效;根据通过验证的补丁生成输出补丁修复源错误代码。根据本专利技术的第二方面,提供一种基于代码语义分析的电力信息系统安全防护装置,包括:用于采集电网信息系统的运行代码和相关的运行态信息,并提取关键信息的信息采集模块;用于对信息采集模块输出的关键信息进行词法分析和语法分析,得到抽象语法树的信息预处理模块;用于根据预设的安全模型对预处理后得到的抽象语法树的代码逻辑进行判断检测,识别代码漏洞的语义分析模块;以及用于根据漏洞攻击行为判定情况,对源代码进行语义修复的语义修复模块。其中,信息采集模块通过基于Web应用程序的外部输入,采集电网信息系统的运行代码和相关的运行态信息,进行关键信息提取,形成用户请求信息文件,作为后续处理的输入。信息预处理模块包括词法分析单元和语法分析单元,词法分析单元依次读取包含代码关键信息的用户请求信息文件中的字符,进行字符集合分析,按照预定的规则将字符合并成标记token,将整个用户请求信息文件分割进一个token列表,并选取当前Web解释器使用的分析器,提取解释器标准定义规则文件;语法分析单元根据标准定义语法规则还原语法中的程序逻辑,构建完整的抽象语法树AST。其中词法分析单元通过生成的Token完成了抽象语法树中的节点分类。抽象语法树通过自底向上的方式建立,先将词法单元建立对应的叶子节点,由词法单元叶子节点产生新的父节点,进行规约,直到起始单元,完成整颗语法树的建立。所述语义分析模块包括第一分析模块,用于根据Adaboost算法得到最佳的单层决策树;所述语义分析模块还包括第二分析模块,用于通过FP-growth算法进行关联分析,实现通过上下逻辑的分析,检测出是否存在SQL注入攻击行为。本文档来自技高网...

【技术保护点】
1.一种基于代码语义分析的电力信息系统安全防护方法,其特征在于,所述方法包括以下步骤:/n采集电网信息系统的运行代码和相关的运行态信息,并提取关键信息的信息;/n对采集的关键信息进行词法分析和语法分析,得到抽象语法树;/n根据预设的安全模型对预处理后的抽象语法树的代码逻辑进行判断检测,识别代码漏洞;/n根据漏洞攻击行为判定情况,对源代码进行语义修复。/n

【技术特征摘要】
1.一种基于代码语义分析的电力信息系统安全防护方法,其特征在于,所述方法包括以下步骤:
采集电网信息系统的运行代码和相关的运行态信息,并提取关键信息的信息;
对采集的关键信息进行词法分析和语法分析,得到抽象语法树;
根据预设的安全模型对预处理后的抽象语法树的代码逻辑进行判断检测,识别代码漏洞;
根据漏洞攻击行为判定情况,对源代码进行语义修复。


2.根据权利要求1所述的基于代码语义分析的电力信息系统安全防护方法,其特征在于,所述对采集的关键信息进行词法分析和语法分析包括:词法分析器依次读取包含代码关键信息的用户请求信息文件中的字符,进行字符集合分析,按照预定的规则将字符合并成标记token,将整个用户请求信息文件分割进一个token列表,并选取当前Web解释器使用的分析器,提取解释器标准定义规则文件;语法分析器根据标准定义语法规则还原语法中的程序逻辑,构建完整的抽象语法树AST。


3.根据权利要求1所述的基于代码语义分析的电力信息系统安全防护方法,其特征在于,所述根据预设的安全模型对预处理后的抽象语法树的代码逻辑进行判断检测,识别代码漏洞包括:根据Adaboost算法得到最佳的单层决策树,再利用FP-growth算法基于所述最佳的单层决策树进行关联分析,实现通过上下逻辑的分析,检测出是否存在SQL注入攻击行为。


4.根据权利要求3所述的基于代码语义分析的电力信息系统安全防护方法,其特征在于,所述根据Adaboost算法得到最佳的单层决策树包括:
基于建立的常规抽象语法树,利用深度优先遍历进一步得到序列化AST;
对代码文件进行向量转化,所述代码文件指的是用户输入的经过预处理后的数据;
通过数字映射与填充、词嵌入方法获取代码的深层语义,实现代码的深度表示;
通过深度优先遍历方法遍历抽象语法树将其映射为向量,并通过构建映射的方式,将向量的元素转换为整数形式,该部分整数作为向量元素的唯一标识;
通过Adaboost算法得到一个最佳的单层决策树。


5.根据权利要求3所述的基于代码语义分析的电力信息系统安全防护方法,其特征在于,所述利用FP-growth算法基于所述最佳的单层决策树进行关联分析,实现通过上下逻辑的分析,检测出是否存在SQL注入攻击行为包括:
扫描电力信息系统中用户输入的经过预处理后的数据,得到所有频繁项集的的计数;
删除支持度低于阈值的项,将频繁项集放入项头表,并按照支持度降序排列;
将读到的用户输入的经过预处理后的数据剔除非频繁项集,并按照支持度降序排列,循环扫描信息,查找满足最小支持度的关联项集;
读入排序后的数据集,插入基于Adaboost算法得到的最佳的单层决策树,插入时按照排序后的顺序插入树中,其中排序靠前的节点是祖先节点,而靠后的是子孙节点。如果有共用的祖先,则对应的公用祖先节点计数加1,插入后,如果有新节点出现,则项头表对应的节点会通过节点链表链接上新节点,直到所有的数据都插入到树中;
从项头表的底部项依次向上找到项头表项对应的条件模式基;
从条件模式基递归挖掘得到项头表项项的频繁项集;
如果不限制频繁项集的项数,则返回之前的所有的频繁项集,否则只返回满足项数要求的频繁项集;
筛选出其中最小支持度的关项集,最终达到所有关联项集都被挖掘出,得出关联规则,进行排序更新树,最终输出漏洞攻击行为的检测结果。


6.根据权利要求1所述的基于代码语义分析的电力信息系统安全防护方法,其特征在于,所述根据漏洞攻击行为判定情况,对源代码进行语义修复包括:
从历史代码库中搜索与源程序相似的bug代码,并找到与其相关的修复代码;
将修复代码转换为抽象语法树,生成候选补丁;
使用基于给定测试用例的适应度函数来验证候选补丁是否有效;
根据通过验证的补丁生成输出补丁修复源错误代码。


7....

【专利技术属性】
技术研发人员:沈伍强温柏坚沈桂泉裴求根陈敏何明东黄小强龙震岳黄敬志张小陆刘晔
申请(专利权)人:广东电网有限责任公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1