Java代码审计(入门篇)
上QQ阅读APP看书,第一时间看更新

1.3 代码审计的常用思路

为了在应用代码中寻找目标代码的漏洞,需要有明确的方法论做指导。方法论的选择则要视目标程序和要寻找的漏洞类型而定,以下是一些常用思路。

(1)接口排查(“正向追踪”):先找出从外部接口接收的参数,并跟踪其传递过程,观察是否有参数校验不严的变量传入高危方法中,或者在传递的过程中是否有代码逻辑漏洞(为了提高排查的全面性,代码审计人员可以向研发人员索要接口清单)。  

(2)危险方法溯源(“逆向追踪”):检查敏感方法的参数,并查看参数的传递与处理,判断变量是否可控并且已经过严格的过滤。

(3)功能点定向审计:根据经验判断该类应用通常会在哪些功能中出现漏洞,直接审计该类功能的代码。

(4)第三方组件、中间件版本比对:检查Web应用所使用的第三方组件或中间件的版本是否受到已知漏洞的影响。

(5)补丁比对:通过对补丁做比对,反推漏洞出处。

(6)“黑盒测试”+“白盒测试”:我认为“白盒测试少直觉,黑盒测试难入微”。虽然代码审计的过程须以“白盒测试”为主,但是在过程中辅以“黑盒测试”将有助于快速定位到接口或做更全面的分析判断。交互式应用安全测试技术IAST就结合了“黑盒测试”与“白盒测试”的特点。

(7)“代码静态扫描工具”+“人工研判”:对于某些漏洞,使用代码静态扫描工具代替人工漏洞挖掘可以显著提高审计工作的效率。然而,代码静态扫描工具也存在“误报率高”等缺陷,具体使用时往往需要进一步研判。

(8)开发框架安全审计:审计Web应用所使用的开发框架是否存在自身安全性问题,或者由于用户使用不当而引发的安全风险。

Java代码审计预备知识拓展

扫描二维码

正式学习前需要哪些预备知识

学习Java代码审计时的4个常见问题