电力信息系统软件代码漏洞检测系统的设计与实现.pdf
《电力信息系统软件代码漏洞检测系统的设计与实现.pdf》由会员分享,可在线阅读,更多相关《电力信息系统软件代码漏洞检测系统的设计与实现.pdf(4页珍藏版)》请在咨信网上搜索。
1、Microcomputer Applications Vol.39,No.11,2023文章编号:10 0 7-7 57 X(2 0 2 3)11-0 118-0 4电力信息系统软件代码漏洞检测系统的设计与实现王国峰1.2,唐云善1.2,徐立飞1(1.南瑞集团有限公司(国网电力科学研究院有限公司),江苏,南京2 10 0 0 3;2.南京南瑞信息通信科技有限公司,江苏,南京2 10 0 0 3摘要:电力信息系统软件代码的自身安全对整个电力信息系统的安全性、稳定性以及可靠性有着举足轻重的影响。为了提高电力信息系统软件代码的安全水平,设计并实现了一套代码漏洞静态检测系统。该系统以代码静态分析技术为
2、基础,支持漏洞检测规则定制、漏洞检测算法与检测引擎扩展以及多线程技术,并通过Java语言编程实现。系统测试结果表明,该系统能够准确、有效地检测出测试程序中的安全漏洞,验证了系统的有效性。关键词:电力信息系统;软件代码漏洞;代码静态检测中图分类号:TP309Design and Implementation of Code Vulnerabilities Detection System(l.NARI Group Corporation(State Grid Electric Power Research Institute),Nanjing 210003,China;2.Nanjing NAR
3、I Information&Communication Technology Co.,Ltd.,Nanjing 210003,China)Abstract:The security of power information system software code has a decisive impact on the security,stability and reliabilityof the whole power information system.In order to improve the security level of power information system
4、 software code,acode vulnerability static detection system is designed and implemented.Based on the static code analysis technology,the systemsupports the customization of vulnerability detection rules,the expansion of vulnerability detection algorithm and detection en-gine and multithreading techno
5、logy,and is programmed in Java language.The test results show that the system can accuratelyand effectively detect the security vulnerabilities in the test program,and the effectiveness of the system is verified.Key words:electric power information system;software code vulnerability;code static dete
6、ction0引言随着电力系统朝着数字化、智能化方向不断发展,电力电网与计算机、软件技术的结合越加紧密1。越来越多的电力终端设备接入电网,使得电网的封闭性受到了挑战,而以隔离为主的传统安全防控手段也逐渐难以满足当前智能电网日益增高的安全防控需求 2-3。此时,若是电力系统软件内部存在固有的代码安全漏洞,一旦电网遭受外部网络攻击而被攻入时,这些软件中潜在的代码漏洞将会成为极大的安全隐惠4。此外,电力系统软件自身的代码缺陷也会诱发软件出现各种意外故障,如若出现故障的连锁反应,将会给整个电网带来不可估量的损失。例如,根据著名杀毒软件公司ESET证实,2 0 16 年乌克兰电网的大规模停电,正是黑客利用
7、乌克兰电力系统的漏洞植人恶意软件 5-6 ,破坏电力系统的正常运行所导致制的。鉴于此,本文设计并实现了一套代码漏洞静态检测系统,来提升电力信息系统软件代码的安全水平,作者简介:王国峰(19 9 6 一),男,硕士,研究方向为代码静态分析;唐云善(19 7 5一),男,博士,研究员,研究方向为软件分析;徐立飞(19 9 7 一),男,硕士,研究方向为代码静态分析。研究与设计文献标志码:Afor Power Information System SoftwareWANG Guofengl-2,TANG Yunshan2,XU Lifeil1系统总体设计1.1系统概述电力信息系统软件代码的检测有两个
8、特点:一是电力信息系统软件一般应用于封闭的电力信息系统环境中,软件代码漏洞修复的成本高、难度大;二是电力信息系统软件的功能、软件结构以及业务逻辑都十分复杂,使得其内部源码中可能存在的漏洞种类同样繁杂7。针对这两个特点,本文设计并实现了一套面向电力信息系统软件代码安全漏洞静态检测系统,命名为 Asca-Java。Asca-Java是一套以代码静态分析技术为基础,支持检测算法与检测引擎扩展、支持规则定制和多线程技术的代码漏洞静态检测系统。其中,采用代码静态检测技术是因为该技术可以在软件开发的周期内,尽早地发现并修复可能存在的代码安全漏洞,降低单个漏洞修复的成本 8 。检测算法与检测引擎的可扩展性和
9、规则的可定制性能够提升Asca-Java.118.微型电脑应用2 0 2 3年第39 卷第11期且通过测试验证了该系统的有效性。Microcomputer Applications Vol.39,No.11,2023对于复杂代码中安全漏洞的检测准确率。多线程技术的支持,则能够提高Asca-Java 多任务检测的效率。1.2系统框架设计本文设计的面向电力信息系统软件的代码漏洞检测系规则定制模块图1Asca-java系统框架结构图(1)交互模块。该模块主要功能是接收用户的输入指令,并根据指令分情况启动漏洞检测任务。Asca-Java支持命令参数和配置文件两种方式启动检测,用户可以在交互的shell
10、终端或者配置文件中,提供待检测项目的名称、路径、编码格式、JDK版本以及线程池的设置参数,即可进行代码安全漏洞的检测。检测过程中的日志流信息也会在终端显示台上打印出来,并在检测任务终止后存储在指定的日志文件中。(2)命令行解析模块。该模块主要用于解析用户输入的参数或者配置文件中填写的参数,根据参数加载对应的项目文件和规则文件,同时将一些项目的基本信息暂时写人内存缓冲池中。(3)任务模块。该模块的工序分为三步,首先是检测规则的解析,形成与每个项目相匹配的规则过滤文件,然后生成每个项目的检测任务,并给每个任务标上唯一的检测编号,最后启动任务线程池中的多个线程,异步并行启动所有检测任务。(4)线程管
11、理模块。Asca-Java配置有2 个线程池,分别是任务线程池和引擎线程池。该模块的主要任务是2 个线程池的管理。例如,当用户同时输入5个检测项目时,线程管理模块则会根据任务模块的命令在任务线程池里启动5个任务线程,每个任务线程则会根据规则过滤文件在对应的引擎线程池中,启动对应的引擎线程来进行代码安全漏洞的检测,具体流程如图2 所示。(5)报告模块。该模块的主要功能是收集每个任务的漏洞检测结果,并根据规则过滤文件,分类整理检测出的代码安全漏洞,同时给出漏洞整改的建议,最后将上述信息全部写入xml文件中,形成每个项目的检测报告。(6)规则定制模块。该模块用于将用户自定义的检测规则存入整个系统的规
12、则库中。(7)算法定制与引擎集成模块。Asca-Java既支持集成用户自定义的漏洞检测算法,又支持集成新的检测引擎。用户只需在系统规则库中按照指定的API接口,添加与自定义研究与设计统总体框架如图1所示。该系统框架一共由7 大模块组成,分别是交互模块、命令行解析模块、任务模块、线程管理模块、报告模块、规则定制模块和算法定制与引擎集成模块,每个模块功能的设计如下。交互模块命令行解析模块:Shell解析输终端人参数配置文件加载配1.项目名称置文件2.项目路径3.编码格式4.JDK版本5.规则路径6.线程池配置微型电脑应用2 0 2 3年第39 卷第11期任务模块线程管理模块启动任任务线程池务线程执
13、行任务线程生成检测任务解析规则文件自定义规则规则库算法或检测引擎相匹配的漏洞检测规则,即可在项目检测过程中完成调用。主线程启动任务线程池里的一个任务线程获取任务线程1的结果任务结束图2 Asca-Java多线程任务执行流程图此外,检测规则决定检测引擎的调用。为了提升整个系统的漏洞检测效率,本系统整理、归纳、预设了数百条安全漏洞的检测规则,且为每条漏洞检测规则制定了与检测引擎之间的映射关系表(见表1),最终形成一套完整的检测规则库。表1Asca-Java内部规则映射表IDNameAdopted1ARule2CRule3BRulenNRule表1中ID为每条检测规则唯一身份标识,通过它即可快速地识
14、别出具体的规则内容。Name是规则的名称,A-dopted表示该规则是否在检测过程中被采用,默认是False即未采用,Engine表示此条规则将会调用的检测引擎名称,MainType表示规则的大分类,SubType表示规则具体的小分类。从而,每个项目的规则过滤文件即可通过此规则映射表调用对应的检测引擎完成漏洞检测任务。.119.报告模块报告生成引擎线程池执行检测引擎线程算法1算法定制与引擎集成模块FalseFalseFalseFalse结果收集分析合并算法检测:引擎任务线程池一个任务线程启动任务线程1启动擎线程池里的三个引擎线程获取3个引擎线程结果EngineAEngAEngBEngNEng引
15、擎线程池三个引擎线程启动引擎线程线程12O引擎线程3SubType代码注人SQL注人语句操控SQL注人基于 DOMXss注人规则小分类规则大分类MainTypeMicrocomputer Applications Vol.39,No.11,20232系统实现及其关键技术2.1漏洞检测实现Asca-Java代码漏洞检测的实现流程如图3所示。首先当系统接收到用户提交的.java文件时,Asca-Java会通过词法分析和语法分析将.java文件转换成抽象语法树模型,然后通过遍历抽象语法树模型生成代码的中间表示,即三地址码。接着通过遍历三地址码来构建程序的控制流图(CFG)和调用图(CG)。最后在CF
16、、CG 和三地址码的基础上,结合设计的检测算法,即可分析出源码中的指定漏洞,并输出得到代码的检测报告。java文件词法语法三地检测检测报告分析分析址码算法调用图控制流图图3Asca-Java漏洞检测流程图2.2开发视图Asca-Java的开发视图如图4所示。图中ServiceLogic指整个程序的服务逻辑,按照功能进行划分。main模块是框架的主函数入口,负责处理所有的外部请求,并调用util模块中的相关工具类进行处理,其中ArgsUtil类负责解析用户输人的参数,ConfigUtil类负责解析配置文件参数,RuleUtil类负责规则文件的解析。另外main模块中的taskCallable类负
17、责任务线程池的+callo研究与设计管理,它会根据预处理的项目信息调用util模块中的Mult-ThreadToolUtil类去启动service模块中不同引擎实现类EngImpl去完成漏洞的检测工作。漏洞检测的结果会反馈给ReportImpl类,它会进一步调用util中的 ReportUtil类完成检测报告的撰写工作,并把检测报告反馈给main模块。common为所有模块提供公共服务,例如xml文件的处理,源码的编译,命令交互的实现以及文件IO处理等服务。Exter-nal Libraries指的是整个程序的外部依赖包,包含处理命令参数的jcommander包、提供日志服务的log4j包、解
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电力 信息系统 软件 代码 漏洞 检测 系统 设计 实现
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【自信****多点】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【自信****多点】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。