文章前言
在SDL安全测试环节的代码审计部分我们通常会使用代码审计工具对源代码进行安全扫描并对扫描结果进行审核从而筛选出其中存在的安全问题并以安全单的形式提交给研发人员进行修复,代码审计工具的好处在于快速全量,但是也会存在很多的误报和漏报问题,故而部分企业在有时间的情况下还会采用人工审核的方式对源代码进行二次安全审计,但是人工审计也存在一个普遍的安全问题就是耗时长且难以保证代码的完全覆盖
审计思路
下面以JAVA项目代码审计为例给出其审计思路:
代码层面
审计人员可以通过对项目代码中存在的不安全编码和使用不安全函数进行检索来查找存在的常见风险,例如:OWASP TOP 10漏洞
XXE
SQL注入
命令执行
文件上传
文件读取
JNID注入
反序列化漏洞
......
业务层面
审计人员可以通过查阅项目文件夹目录、文件名称以及文件源码中关于代码功能的注释来猜解该部分代码对应的业务功能,之后寻找常见的业务功能设计缺陷:
用户登录
用户注册
密码找回
账号充值
修改个人资料
......
组件框架
审计人员可以通过查阅项目pom文件确定是否使用不安全的第三方开源组件,并通过查看项目文档等说明书确定项目是否有使用不安全的框架:
框架类漏洞
第三方库类漏洞
......