当前位置:   article > 正文

认识代码审计,流程、方式、范围等一篇了解_代码审计和源代码审计

代码审计和源代码审计

一、什么是代码审计

源代码审计(Code Review)是由具备丰富编码经验并对安全编码原则及应用安全具有深刻理解的安全服务人员对系统的源代码和软件架构的安全性、可靠性进行全面的安全检查。

源代码审计服务的目的在于充分挖掘当前代码中存在的安全缺陷以及规范性缺陷,从而让开发人员了解其开发的应用系统可能会面临的威胁,并指导开发人员正确修复程序缺陷。

二、代码审计方式

整体源代码审计是指源代码审计服务人员对被审计系统的所有源代码进行整体的安全审计,代码覆盖率为100%,整体源代码审计采用源代码扫描和人工分析确认相结合的方式进行分析,发现源代码存在的安全漏洞。但整体源代码审计属于白盒静态分析,仅能发现代码编写存在的安全漏洞,无法发现业务功能存在的缺陷。

功能点人工源代码审计是对某个或某几个重要的功能点的源代码进行人工源代码审计,发现功能点存在的代码安全问题。功能点人工源代码审计需要收集系统的设计文档、系统开发说明书等技术资料,以便源代码审计服务人员能够更好的了解系统业务功能。由于人工源代码审计工作量极大,所以需要分析并选择重要的功能点,有针对性的进行人工源代码审计。

三、代码审计流程

天磊卫士源代码审计服务主要分为四个阶段,包括源代码审计前期准备阶段、源代码审计阶段实施、复查阶段实施以及成果汇报阶段:

前期准备阶段

在实施源代码审计工作前,技术人员会和客户对源代码审计服务相关的技术细节进行详细沟通。由此确认源代码审计的方案,方案内容主要包括确认的源代码审计范围、最终对象、审计方式、审计要求和时间等内容。

源代码审计阶段实施

在源代码审计实施过程中,天磊卫士源代码审计服务人员首先使用源代码审计的扫描工具对源代码进行扫描,完成初步的信息收集,然后由人工的方式对源代码扫描结果进行人工的分析和确认。

根据收集的各类信息对客户要求的重要功能点进行人工源代码审计。

结合自动化源代码扫描和人工源代码审计两方的结果,源代码审计服务人员需整理源代码审计服务的输出结果并编制源代码审计报告,最终提交客户和对报告内容进行沟通。

复测阶段实施

经过第一次源代码审计报告提交和沟通后,等待客户针对源代码审计发现的问题整改或加固。经整改或加固后,源代码审计服务人员进行回归检查,即二次检查。检查结束后提交给客户复查报告和对复查结果进行沟通。

成果汇报阶段

根据一次源代码审计和二次复查结果,整理源代码审计服务输出成果,最后汇报项目领导。

四、代码审计范围

天磊卫士源代码审计服务的范围包括使用ASP、ASP.NET(VB/C#)、JSP(JAVA)、PHP等主流语言开发的B/S应用系统、使用C++、JAVA、C#、VB等主流语言开发的C/S应用系统,以及使用XML语言编写的文件、SQL语言和数据库存储过程等。

五、代码审计清单

定义通用的审计检查清单,清单应覆盖如下最关键的安全控制及漏洞区域:

数据验证

身份鉴别

会话管理

授权

密码学

异常处理

日志审计

安全配置

网络架构

六、代码审计报告

报告应包含关键信息:

1.审计日期

2.应用程序名称、版本号、审计的代码模块。

3.审计人员姓名

4.任务或特征名称 (TFS、 GIT、 Subversion、 Trouble Ticket 等)。

5.修复建议,需要一段概要描述来对软件漏洞进行分类和排序。

6.提供链接或相关的文档,包括需求、设计、测试和威胁建模文件.

7.代码审计清单

8.使用的工具

七、静态代码扫描工具优缺点

优点

1.降低人工成本

对于应用程序,扫描模式是通用的,计算机比人类更擅长这类扫描。在这种情况下,扫描器在扫描大型代码库漏洞时扮演着重要角色

2.发现漏洞的所有实例

扫描器可以非常有效地识别特定漏洞的所有实例及具体位置。跟踪大型代码库中所有文件的缺陷很难,扫描器对于这种情况很有帮助

3.源库分析

一些分析器通过源库分析的方式跟踪代码并识别漏洞。分析器识别可能的应用输入,并在所有源代码中彻底追踪输入,直到发现所有不符合安全代码模式的应用输入。源库分析能够帮助开发人员更好地理解代码缺陷和获得代码缺陷的根本原因

4.详细的报告格式

扫描器能够提供详细的分析报告,包括具体代码段的漏洞、漏洞的风险等级和详细描述。

缺点

1.未涉及业务逻辑缺陷

扫描器不能识别应用程序的业务逻辑、事务处理和敏感数据。通常,扫描器不能发现应用程序中需要实现的特定于某些功能和设计的安全控制。这些被认为是静态代码分析器的最大限制

2.范围有限

通常,静态代码分析器被设计用于特定的框架或语言,并且能够在一定范围内搜索特定漏洞模式的集合。在此范围之外,静态代码分析器并不能解决在搜索模式库中未涵盖的问题

3.不能发现设计缺陷

代码框架的设计缺陷没有固定模式,静态代码扫描器专注于代码层面。需要人工查看代码才能识别设计问题

4.误报

被扫描器标记的问题并非完全真实,需要有经验、了解安全编码的技术人员理解问题缺陷并对其进行分类。

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/257784
推荐阅读
相关标签
  

闽ICP备14008679号