本博客地址:https://security.blog.youkuaiyun.com/article/details/82941427
一、前言
在代码审计工作中,我们常常要借助一些自动化的工具来解决部分显式的问题,而人工审计更多的是在于弥补工具的不足。
代码审计过程中首先需要根据用户提供的测试环境、设计文档、使用手册,对应用系统的业务功能进行学习,对业务数据流进行梳理,检查关键环节是否进行了业务安全控制,检测完成后,需要从业务角度对威胁进行分析并归类。
二、代码审计概念
源代码安全审计是依据CVE公共漏洞字典表、OWASP十大Web漏洞,以及设备、软件厂商公布的漏洞库,结合专业源代码扫描工具对各种程序语言编写的源代码进行安全审计。能够为客户提供包括安全编码规范咨询、源代码安全现状测评、定位源代码中存在的安全漏洞、分析漏洞风险、给出修改建议等一系列服务。
自动化扫描器原理:
1、通过调用语言的编译器或者解释器把前端的语言代码转换成一种中间代码,将其源代码之间的调用关系、执行环境、上下文等分析清楚。
2、语义分析:分析程序中不安全的函数、方法的使用的安全问题。
3、数据流分析:跟踪、记录并分析程序中的数据传递过程所产生的安全问题。
4、控制流分析:分析程序特定时间、状态下执行操作指令的安全问题。
5、配置分析:分析项目配置文件中的敏感信息和配置缺失的安全问题。
6、结构分析:分析程序上下文环境、结构中的安全问题。
7、结合2~6的结果,匹配所有规则库中的漏洞特征,一旦发现漏洞就抓取出来。
8、形