Java代码审计(入门版)

    1)接口排查(“正向追踪”):先找出从外部接口接收的参数,并跟踪其传递过 程,观察是否有参数校验不严的变量传入高危方法中,或者在传递的过程中是否有 代码逻辑漏洞(为了提高排查的全面性,代码审计人员可以向研发人员索要接口清 单)。 2)危险方法溯源(“逆向追踪”):检查敏感方法的参数,并查看参数的传递与 处理,判断变量是否可控并且已经过严格的过滤。 3)功能点定向审计:根据经验判断该类应用通常会在哪些功能中出现漏洞, 直接审计该类功能的代码。 4)第三方组件、中间件版本比对:检查 Web 应用所使用的第三方组件或中间 件的版本是否受到已知漏洞的影响。 5)补丁比对:通过对补丁做比对,反推漏洞出处。 6)“黑盒测试”+“白盒测试”:我认为“白盒测试少直觉,黑盒测试难入微”。 虽然代码审计的过程须以“白盒测试”为主,但是在过程中辅以“黑盒测试”将有 助于快速定位到接口或做更全面的分析判断。交互式应用安全测试技术 IAST 就结合 了“黑盒测试”与“白盒测试”的特点。 7)“代码静态扫描工具”+“人工研判”:对于某些漏洞,使用代码静态扫描工 具代替人工漏洞挖掘可以显著提高审计工作的效率。然而,代码静态扫描工具也存 在“误报率高”等缺陷,具体使用时往往需要进一步研判。 8)开发框架安全审计:审计 Web 应用所使用的开发框架是否存在自身安全性 问题,或者由于用户使用不当而引发的安全风险。