随着软件规模的日益增大,系统的逻辑结构越来越复杂,从起初几万行的代码数量,发展至今几十万行的代码数量已屡见不鲜,甚至还有几百万行的代码规模。网络攻击中的SQL注入攻击,就是利用了代码中存在的漏洞,在查询语句的参数传递时跟上额外的删除或者修改的SQL语句。
源代码审计是由具备丰富编码经验并对安全编码原则及应用安全具有深刻理解的安全服务人员对系统的源代码和软件架构的安全性、可靠性进行全面的安全检查。
源代码审计是通过静态分析程序源代码,找出代码中存在的安全性问题,常用于由安全厂商或企业的安全部门发起的代码安全性检查工作,其目的在于充分挖掘当前代码中存在的安全缺陷以及规范性缺陷,从而让开发人员了解其开发的应用系统可能会面临的威胁,并指导开发人员正确修复程序缺陷。
源代码审计的类别
源代码审计分为两类,一是整体源代码审计,二是功能点人工源代码审计,二者区别在于针对源代码整体或部分进行安全审计工作。
整体源代码审计是指源代码审计服务人员对被审计系统的所有源代码进行整体的安全审计,代码覆盖率为100%,整体源代码审计采用源代码扫描和人工分析确认相结合的方式进行分析,发现源代码存在的安全漏洞。但整体源代码审计属于白盒静态分析,仅能发现代码编写存在的安全漏洞,无法发现业务功能存在的缺陷。
功能点人工源代码审计是对某个或某几个重要的功能点的源代码进行人工源代码审计,发现功能点存在的代码安全问题。功能点人工源代码审计需要收集系统的设计文档、系统开发说明书等技术资料,以便源代码审计服务人员能够更好的了解系统业务功能。由于人工源代码审计工作量极大,所以需要分析并选择重要的功能点,有针对性的进行人工源代码审计。