代码审计 基础概念

源代码审计学习

  • 源代码审计主要分成人工和工具扫描两种
  • 代码审计的目的是为了发现代码中的安全漏洞
  • 代码审计人员需要具备一定的编程能力,并对安全漏洞有一定的了解,是比较难的一种安全工作

工具

fortify 我觉得不太好用,倒不是从技术的角度,而是中文注释在里面都变成乱码了。让审计变得麻烦。

我推荐使用gpt作为源代码审计辅助工具!

黑盒与白盒

  • 黑盒:不知道源代码的情况下,通过测试来发现漏洞(渗透测试)
    • 速度快
    • 渗透测试发现问题,代码审计确认原因
  • 白盒:知道源代码的情况下,通过阅读源代码来发现漏洞(源代码审计)
    • 全面深入的发现漏洞
    • 代码审计的问题,通过渗透测试来验证可利用性

代码审计的基本流程

  • 配置分析环境-> 熟悉业务逻辑 -> 分析程序架构-> 工具自动扫描-> 人工代码审计 -> 代码审计报告

在审计过程中,可以主要观察以下内容:

  • SQL注入:检查是否存在使用不安全的SQL查询语句的地方,例如拼接字符串而不使用参数化查询。

  • 跨站点脚本攻击(XSS):确保不会将未经转义的用户输入插入HTML或JavaScript中。

  • 不安全的文件上传:验证上传的文件类型和内容,避免任意代码执行。

  • 认证和授权问题:确保正确地实现了身份验证和授权策略,并限制敏感数据或操作的访问。

  • 敏感信息泄露:确保不会以明文形式存储密码、令牌或其他敏感信息。

  • 内存泄漏和不安全对象引用:确保没有未释放的资源或不安全的对象引用,以防止恶意方利用它们。

  • 密码破解和暴力攻击:确保密码哈希和加密算法足够安全,以防止破解和暴力攻击。


Mysql渗透基础
代码审计-Java