更新时间:2023-05-04 13:50
顾名思义就是检查源代码中的安全缺陷,检查程序源代码是否存在安全隐患,或者有编码不规范的地方,通过自动化工具或者人工审查的方式,对程序源代码逐条进行检查和分析,发现这些源代码缺陷引发的安全漏洞,并提供代码修订措施和建议。
代码审计(Code audit)是一种以发现程序错误,安全漏洞和违反程序规范为目标的源代码分析。软件代码审计是对编程项目中源代码的全面分析,旨在发现错误,安全漏洞或违反编程约定。 它是防御性编程范例的一个组成部分,它试图在软件发布之前减少错误。 C和C ++源代码是最常见的审计代码,因为许多高级语言(如Python)具有较少的潜在易受攻击的功能(例如,不检查边界的函数)。
我们的代码审计对象包括并不限于对Windows和Linux系统环境下的以下语言进行审核:java、C、C#、ASP、PHP、JSP、.NET。
1.前后台分离的运行架构
2.WEB服务的目录权限分类
3.认证会话与应用平台的结合
4.数据库的配置规范
5.SQL语句的编写规范
6WEB服务的权限配置
7.对抗爬虫引擎的处理措施
审核软件时,应对每个关键组件进行单独审核,并与整个程序一起进行审核。 首先搜索高风险漏洞并解决低风险漏洞是个好主意。 高风险和低风险之间的漏洞通常存在,具体取决于具体情况以及所使用的源代码的使用方式。 应用程序渗透测试试图通过在可能的访问点上启动尽可能多的已知攻击技术来尝试降低软件中的漏洞,以试图关闭应用程序。这是一种常见的审计方法,可用于查明是否存在任何特定漏洞,而不是源代码中的漏洞。 一些人声称周期结束的审计方法往往会压倒开发人员,最终会给团队留下一长串已知问题,但实际上并没有多少改进; 在这些情况下,建议采用在线审计方法作为替代方案。
由于使用以下原因,可能存在一些常见的高风险漏洞:
以下是审计代码时应该找到的低风险漏洞列表,但不会产生高风险情况。
源代码审计工具通常会查找常见漏洞,仅适用于特定的编程语言。 这种自动化工具可用于节省时间,但不应依赖于深入审计。 建议将这些工具作为基于政策的方法的一部分。
如果设置为低阈值,则大多数软件审计工具会检测到许多漏洞,尤其是在以前未审核过代码的情况下。 但是,这些警报的实际重要性还取决于应用程序的使用方式。 可能与恶意代码链接的库(并且必须对其免疫)具有非常严格的要求,例如克隆所有返回的数据结构,因为有意破坏系统的尝试是预期的。 只能暴露于恶意输入(如Web服务器后端)的程序必须首先关心此输入(缓冲区溢出,SQL注入等)。 对于仅受保护基础结构中的授权用户内部使用的程序,可能永远不会发生此类攻击。