一、什么是代码审计?
是检查源代码中的安全缺陷,检查程序源代码是否存在安全隐患,或者有编码不规范的地方,通过自动化工具或者人工审查的方式,对程序源代码逐条进行检查和分析,发现这些源代码缺陷引发的安全漏洞,并提供代码修订措施和建议。
二、做代码审计有什么好处?
满足上线合规需求
据实践证明,程序/系统的安全性保障很大程度上是源于程序代码的质量,而代码审计就是能够最快捷高效保证代码质量的方法之一。
满足日常系统安全性需求
1.即将新上线的系统
很多企业通过购买通用软件模板或组织自主开发应用系统,导致应用系统中包含 XSS 跨站脚本风险、CSRF 跨站请求伪造风险、平行越权风险、任意用户密码重置风险等一系列在开发过程中由于开发人员安全意识薄弱,编码不规范从而形成的安全风险,通过在系统上线前进行安全审计并及时对这些安全风险进行修复,从而加强系统安全性,保证系统安全运行。
2.已在运行阶段的系统
若在应用系统上线前没有进行源代码审计,也可在运行期间对应用系统源代码进行审计,从而优先发现系统的安全风险,并进行相关风险修复,节省事后修复成本。
提升开发人员技能及安全意识
代码审计通常会对程序/系统的关键组件进行“重点关注”,因此对于可能存在的安全隐患点、可较为明确地切入并加以验证。
同时,代码审计是验证开发人员是否认真遵循安全编码规范的重要步骤,通过代码审计以及安全人员、开发人员间的沟通,开发人员能够更好完善代码安全开发规范,降低整体风险。
哪些业务场景需要做代码审计工作?
- 即将上线的新系统平台;
- 存在大量用户访问、高可用、高并发请求的网站;
- 存在用户资料等敏感机密信息的企业平台;
- 互联网金融类存在业务逻辑问题的企业平台;
- 开发过程中对重要业务功能需要进行局部安全测试的平台;
代码审计服务范围
源代码审计服务的范围包括使用ASP、ASP.NET(VB/C#)、JSP(JAVA)、PHP等主流语言开发的B/S应用系统、使用C++、JAVA、C#、VB等主流语言开发的C/S应用系统,以及使用XML语言编写的文件、SQL语言和数据库存储过程等。
应用代码关注漏洞
跨站脚本漏洞
跨站请求伪装漏洞
SQL注入漏洞
命令执行漏洞
日志伪造漏洞
参数篡改
明文密码存储
配置文件缺陷
路径操作错误
资源管理
信息系统泄漏
......
代码审计服务流程
代码审计服务主要分为四个阶段,包括源代码审计前期准备阶段、源代码审计阶段实施、复查阶段实施以及成果汇报阶段:
前期准备阶段
在实施源代码审计工作前,技术人员会和客户对源代码审计服务相关的技术细节进行详细沟通。由此确认源代码审计的方案,方案内容主要包括确认的源代码审计范围、最终对象、审计方式、审计要求和时间等内容。
源代码审计阶段实施
在源代码审计实施过程中,源代码审计服务人员首先使用源代码审计的扫描工具对源代码进行扫描,完成初步的信息收集,然后由人工的方式对源代码扫描结果进行人工的分析和确认。
根据收集的各类信息对客户要求的重要功能点进行人工源代码审计。
结合自动化源代码扫描和人工源代码审计两方的结果,源代码审计服务人员需整理源代码审计服务的输出结果并编制源代码审计报告,最终提交客户和对报告内容进行沟通。
复测阶段实施
经过第一次源代码审计报告提交和沟通后,等待客户针对源代码审计发现的问题整改或加固。经整改或加固后,源代码审计服务人员进行回归检查,即二次检查。检查结束后提交给客户复查报告和对复查结果进行沟通。
成果汇报阶段
根据一次源代码审计和二次复查结果,整理源代码审计服务输出成果,最后汇报项目领导。
代码审计频率有什么建议
定期且间隔时间切勿过长,但还是根据客户自身情况来决定。
(1)单次代码审计
单次代码审计是指一次性为客户的被审计系统开展代码审计服务,服务完成后提交源代码审计报告并指导客户针对安全漏进行修复。单次服务仅能够发现目前源代码中可能存在的各种安全问题,对于系统后续开发产生的安全问题无能为力。
进行单次代码审计的客户有以下几种情况:
1)信息系统上线前进行代码审计,确保系统安全后,后续不再进行代码审计工作;
2)客户为甲方开发系统,为证明系统安全无问题交付,而进行的单次代码审计,后续甲方不再进行代码审计工作;
3)为应付安全检查而进行的单次代码审计工作,后续不再进行安全检测工作;
4)等保测评要求项中要求开展代码审计工作,通过等保后,后续不再进行代码审计工作;
......
(2)年度代码审计
年度代码审计是指以一定的时长(可以是半年、年等)为单位向客户开展有限次数(每月/双月/季度/半年)的代码审计工作,每次源代码审计均会提供详细的源代码审计报告。年度服务能够持续跟进系统的安全情况,在服务期限内最大限度保证系统的安全。