一、什么是代码审计?
是由具备丰富编码经验并对安全编码原则及应用安全具有深刻理解的安全服务人员对系统的源代码和软件架构的安全性、可靠性进行全面的安全检查。
目的在于充分挖掘当前代码中存在的安全缺陷以及规范性缺陷,从而让开发人员了解其开发的应用系统可能会面临的威胁,并指导开发人员正确修复程序缺陷。
二、做源代码审计的必要性
程序的安全性是否有保障很大程度上取决于源程序代码的安全性,而保证源代码质量最快捷有效的手段就是源代码审计。
在风险评估过程中,源代码审计是一般脆弱性评估的一种很好的补充,源代码审计服务的代码覆盖率为100%,能够找到一些安全测试所无法发现的安全漏洞。
同时,由于主持源代码审计的安全服务人员一般都具备丰富的安全编码经验和技能,所以其针对性比常见的脆弱性评估手段会更强、粒度也会更为细致。
三、哪些业务场景需要做代码审计工作?
- 即将上线的新系统平台;
- 存在大量用户访问、高可用、高并发请求的网站;
- 存在用户资料等敏感机密信息的企业平台;
- 互联网金融类存在业务逻辑问题的企业平台;
- 开发过程中对重要业务功能需要进行局部安全测试的平台;
四、代码审计服务范围
源代码审计服务的范围包括使用ASP、 ASP.NET(VB/C#)、JSP(JAVA)、PHP等主流语言开发的B/S应用系统、使用C++、JAVA、C#、VB等主流语言开发的C/S应用系统,以及使用XML语言编写的文件、SQL语言和数据库存储过程等。
五、入侵者可以利用的漏洞有
软件编写存在bug
系统配置不当
口令失窃
嗅探未加密通讯数据
设计存在缺陷
系统攻击
六、应用代码关注漏洞
跨站脚本漏洞
跨站请求伪装漏洞
SQL注入漏洞
命令执行漏洞
日志伪造漏洞
参数篡改
明文密码存储
配置文件缺陷
路径操作错误
资源管理
信息系统泄漏
…
七、代码审计服务流程
代码审计服务主要分为四个阶段,包括源代码审计前期准备阶段、源代码审计阶段实施、复查阶段实施以及成果汇报阶段:
前期准备阶段
在实施源代码审计工作前,技术人员会和客户对源代码审计服务相关的技术细节进行详细沟通。由此确认源代码审计的方案,方案内容主要包括确认的源代码审计范围、最终对象、审计方式、审计要求和时间等内容。
源代码审计阶段实施
在源代码审计实施过程中,源代码审计服务人员首先使用源代码审计的扫描工具对源代码进行扫描,完成初步的信息收集,然后由人工的方式对源代码扫描结果进行人工的分析和确认。
根据收集的各类信息对客户要求的重要功能点进行人工源代码审计。
结合自动化源代码扫描和人工源代码审计两方的结果,源代码审计服务人员需整理源代码审计服务的输出结果并编制源代码审计报告,最终提交客户和对报告内容进行沟通。
复测阶段实施
经过第一次源代码审计报告提交和沟通后,等待客户针对源代码审计发现的问题整改或加固。经整改或加固后,源代码审计服务人员进行回归检查,即二次检查。检查结束后提交给客户复查报告和对复查结果进行沟通。
成果汇报阶段
根据一次源代码审计和二次复查结果,整理源代码审计服务输出成果,最后汇报项目领导。
八、代码审计频率有什么建议
定期且间隔时间切勿过长,但还是根据客户自身情况来决定。
(1)单次代码审计
单次代码审计是指一次性为客户的被审计系统开展代码审计服务,服务完成后提交源代码审计报告并指导客户针对安全漏进行修复。单次服务仅能够发现目前源代码中可能存在的各种安全问题,对于系统后续开发产生的安全问题无能为力。
进行单次代码审计的客户有以下几种情况:
1)信息系统上线前进行代码审计,确保系统安全后,后续不再进行代码审计工作;
2)客户为甲方开发系统,为证明系统安全无问题交付,而进行的单次代码审计,后续甲方不再进行代码审计工作;
3)为应付安全检查而进行的单次代码审计工作,后续不再进行安全检测工作;
4)等保测评要求项中要求开展代码审计工作,通过等保后,后续不再进行代码审计工作;
…
(2)年度代码审计
年度代码审计是指以一定的时长(可以是半年、年等)为单位向客户开展有限次数(每月/双月/季度/半年)的代码审计工作,每次源代码审计均会提供详细的源代码审计报告。年度服务能够持续跟进系统的安全情况,在服务期限内最大限度保证系统的安全。
九、开展代码审计最佳阶段
信息系统在接入互联网之前、交付信息系统甲方验收前、更改系统功能点后、信息系统使用中等等都是进行代码审计的最佳时间。
十、代码审计交付物
代码审计工作结束后审计人员将出示一份代码审计报告。在报告中,审计人员将会根据审计结果针对代码中的每个安全弱点进行详细描述,描述内容至少包括安全弱点所在的代码页名、代码行数、问题代码片段以及弱点可能导致的安全问题等。除此之外,审计人员还将针对各种具体的安全弱点提供解决方案和相关的安全建议,为管理/开发人员的维护和问题修复工作提供参考。