本篇文章针对漏洞分类问题进行深入的理解和分析。
在《网络安全漏洞分类分级指南》(GB/T 30279-2020)中,对漏洞分了4大类。
第一类 代码问题
简单来说,就是程序员在写代码的时候,因为知识的局限性导致代码没有写正确。代码问题是非常的常见,常见是写程序设计的逻辑问题。针对这个大类,细分了好多个小类:
1、输入验证错误
输入验证错误,简单来讲,就是程序没有对用户的输入进行校验,或者没有进行正确的校验,导致产生的漏洞。这里面又细分了好多类:
- 缓冲区溢出错误:在内存执行操作的时候,对用户的输入没有做正确的边界验证,会存在用户输入过长或者特殊,导致向其他的内存位置执行了错误的读写操作。缓冲区溢出、堆溢出漏洞就是指的这类漏洞。
- 注入:用户构造输入(命令、数据结构、字符串等)的时候,缺乏对用户输入数据的正确验证,导致没有过滤掉用户输入中一些特殊的元素,从而引发解析或者解释错误。注入又分为好几类:字符串注入(用户的恶意输入是个字符串)、命令注入(用户的恶意输入是一个命令)、代码注入(用户的恶意输入是一个代码)、SQL注入(用户的恶意输入是一个SQL语句)、跨站脚本(用户的恶意输入是一个脚本)。
- 路径遍历:用户的输入中包含了某个特殊的路径,因为没有正确的过滤资源或者路径中的特殊元素,导致访问了受限目录之外的位置。
- 后置链接:用户的输入中包含了某个特殊的文件名因为没有正确的过滤非预期资源的链接或者文件名,导致访问了错误、非授权的文件路径。
- 跨站请求伪造:在WEB应用中,没有充分验证请求是否来自可信/真实用户,导致服务器执行了伪造成客户端后发来的恶意请求/代码。跨站请求伪造这块可以再深入了解一下
2、授权问题
- 信任管理问题:系统存在默认密码、直接写死在程序内的密码(硬编码密码)、直接写死在程序内的证书(硬编码证书),导致存在被攻击者获取、利用的可能。
- 权限许可和访问控制问题:没有做有效的访问控制或者权限许可导致的问题。
3、数字错误
没能正确计算、转换所产生的数字,导致的整数溢出、符号错误等漏洞。
4、竞争条件问题
并发运行环境中,一段并发的代码需要互斥的访问共享资源,没有做好互斥导致的问题。
5、加密问题
没有正确的使用密码算法,导致内容未正确加密、弱密码、铭文存储敏感信息等问题。
6、资源管理错误
对系统资源(如内存、磁盘、文件、CPU等)的错误管理导致的漏洞。
7、处理逻辑问题
写代码过程中,因为处理逻辑实现问题或者分支覆盖不全面导致的问题。
8、数据转换问题
程序处理上下文因对数据类型、编码、格式、含义等理解不一致导致的安全问题。
9、未声明功能
通过测试接口、调试接口等可执行未授权功能导致的安全问题。例如测试接口在测试阶段可用,到了正式上线之后依然可用,最常见的是swagger未授权访问漏洞,可能会被攻击者用来显示一些敏感信息。
第二类 配置错误
在使用过程中,因为配置参数、配置文件不当,或者采取不安全的默认配置导致的安全漏洞。
第三类 环境问题
因受影响组件部署运行环境的原因导致的安全问题。这个其实每台看明白
其他
暂无法将漏洞归入上述任何类别,或者没有足够充分的信息对其进行分类,或者漏洞细节暂未指明。