一、说下平时怎么做代码安全审计的,具体思路?
代码审计的核心思想就是追踪参数,而追踪参数的步骤就是程序执行的步骤,说白了代码审计就是一个跟踪程序执行步骤的一个过程:
1、逐条读代码,了解整个框架的流程过后,从我一般是先阅读权限控制模块,然后直接通读Controller模块,然后跟踪看看, 后面你会发现很多类似的代码,从而提高通读的速度的。
2、敏感函数回溯(使用工具审计;Fortify SCA扫描),结合业务场景,逐个功能点进行测试,根据输入来追踪变量的最终形态;一些不在显示页面的功能点所存在的漏洞可能就会挖掘不到
3、定向功能分析
二、你做代码审计有没有找过比较经典的漏洞Java代码审计可以发现的漏洞分为两类:
1、程序员由于编码不当产生的漏洞,典型包括后门、SQL注入、文件上传、任意文件下载、接口非授权访问、垂直越权。对于水平越权、XSS、CSRF、逻辑类漏洞也可以检测;
2、第三方组件使用不当产生的漏洞,从POM文件中可以找到使用了低版本的组件。从应用配置文件中可以找到配置不当问题。
1、硬编码漏洞成因
如果将敏感信息(包括口令和加密密钥)硬编码在程序中,可能会将敏感信息暴露给攻击者。任何能够访问到class文件的人都可以反编译class文件并发现这些敏感信息。因此,不能将信息硬编码在程序中。
审计策略
审计源代码中是否有硬编码敏感信息:
password
pass
jdbc
auth