云计算百科
云计算领域专业知识百科平台

代码审计简介

代码审计是什么

代码审计(Code Audit)是通过人工审查或者自动化工具的方式,对程序源代码进行检查和分析,发现这些源代码缺陷引发的安全漏洞,并提供代码修订措施和建议。

虽然PHP在中小型互 联网企业仍占据一席之地,但主流的大型应用中,java仍是首选的开发语言,国内外大型企业大多以 java作为核心的开发语言。因此对于安全从业者来说,java代码审计已经成为所需要掌握的关键技能。

代码审计工作流程:

常用思路

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

    黑盒测试又称为功能测试,主要检测软件的每一个功能是否能够正常使用。在测试过程中,将程序看成不能打开的黑盒子,不考虑程序内部结构和特性的基础上通过程序接口进行测试,检查程序功能是否按照设计需求以及说明书的规定能够正常打开使用。

    白盒测试也称为结构测试,主要用于检测软件编码过程中的错误。程序员的编程经验、对编程软件的掌 握程度、工作状态等因素都会影响到编程质量,导致代码错误。

    渗透测试的优点: 高速提交测试参数,通过前端进行渗透,通过发送数据包到后台服务器,快速发现多层结构的漏洞,根据漏铜的分类,大概能判断是那一层结构的问题。

    代码审计的优点: 全面,深入的发现漏洞。

    两者之间的关系:

    • 相互补充,彼此强化
    • 代码审计发现问题,渗透测试确定可利用性
    • 渗透测试发现问题,代码审计确定成因

    代码审计免费且强大的工具推荐

    通用多语言(覆盖 Java/PHP/Python 等)

    • Semgrep最新版持续迭代,规则库丰富,支持自定义规则,轻量无部署成本,命令行 / 可视化界面都能用,误报率低,适合快速批量审计。
    • CodeQL(GitHub 官方)功能极强,支持多语言深度分析,可通过 QL 语言自定义审计规则,结合 GitHub 仓库无缝审计,社区有大量现成安全规则。

    Java 专属

    • SpotBugs(FindBugs 升级版)最新维护,专注 Java 字节码 / 源码审计,能发现空指针、代码注入、不安全反射等典型漏洞,可集成 IDEA/Eclipse,适配新版 JDK。
    • OWASP Dependency-Check重点检测 Java 第三方组件 / 中间件漏洞(贴合你审计流程里的组件版本比对),最新漏洞库实时更新,支持多格式报告输出。

    轻量辅助 / 前端审计

    • ESLint + eslint-plugin-security(前端 / JS/TS)前端代码审计首选,插件化扩展安全规则,能发现 XSS、CSRF、不安全请求等前端漏洞。
    • PMD轻量多语言审计,对 Java 的代码规范和安全漏洞双检测,规则可自定义,适合快速初筛。

    代码审计的优势

    • 提高代码质量
    • 降低成本

    如果在项目上线后才发现bug 开发人员可能以及调离到其他的项目,协调成本太高,上线后被白帽子发现成也很高, 黑客利用 、数据丢失,成本更高。

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 代码审计简介
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!