这节讲解某些主要的代码审计对策。假如说代码审计是1场战斗,那样势必要注重战略和战术。这或许仅仅古人的经验分享,但的确是1种立竿见影的科学方法论。
代码审计对策有多种多样,可是常常种对策都相似的特性,意味着这类对策的特点。例如:
起始点:源代码追踪的起始点;
终点站:该对策的目标,或是追踪源代码的终止点;
方法:源代码追踪方法,追踪故障树分析、控制流,追踪方向是前向追踪或是反方向追踪;
目标:该审计对策所应对的有哪些种类的漏洞;
难度系数:表明该审计对策的实行难度系数,通常从1星到5星表明难度系数增长;
速度:表明该审计对策的实行速度,也是以1星到5星表明由慢到快;
了解:表明该审计对策所产生的源代码了解。通常能产生大量了解的对策难度系数都是会更大某些,但与此同时也可以帮助科研技术人员发觉更为错综复杂的漏洞;
也有相匹配优点和缺点等,下边是某些主要的审计对策。
对策一:自顶向下
第一个代码审计对策便是根据直接分析源代码去挖掘漏洞,这类方法通常要浏览源代码并了解源代码,须要更为集中精力,但与此同时也产生对源代码更为深层次的了解。自然正面交锋也不是抄起臂膀就干,可以更进一步细分化为下列实行对策。
数据统计分析
最先是故障树分析,根据追踪客户的(恶意)键入数据信息去寻找不确定性的漏洞点。数据统计分析可能是大多数人所觉得的代码审计方法,其关键是以恶意键入为起始点,在源代码中根据控制流开展前向审计,通常佐以比较有限的故障树分析。在审计过程中根据纪录一连串传递的数据信息并开展追踪,并相互配合安全边界分析和常见的漏洞种类去标记漏洞。
该方法是分析源代码的合理方法,可是须要某些附加的经验用于判定应当跟进什么功能模块解析函数,不然途径会在很短的时间内支系发生爆炸。并且在一定时间的审计非常容易走神并错过某些重要支系,随后和漏洞擦身而过。在应对类似Java或是C++等语言的项目情况下,数据分析方法通常更为艰难,由于通常追踪原始键入会通过好几个中间类,造成你打开了十多个文件以后都还没抵达真真正正处理数据信息的源代码。在这样的事情下最好是有设计文档的帮助,用于搭建相对性完备的威胁实体模型,不然最好是或是先选用别的对策去了解系统。
还没有评论,来说两句吧...