GB/T30279基于漏洞产生或触发的技术原因,将漏洞划分为代码问题、配置错误和环境问题等类型。代码问题是指代码开发过种中产生的漏洞,可细分为资源管理错误、输入验证错误、数字错误、竞争条件问题、处理逻辑错误、加密问题、授权问题、数据 转换问题和未声明功能。配置错误是指在使用过程中因不当配置产生的漏洞,如采用了默认的不安全配置。环境问题指由运行环境原因导致的安全问题,又分为信息泄露(如通过日志、调试输出或侧信道)和故障注入(通过改变物理环境触发故障)。
对于一个通用型漏洞而言,它的生命周期会经历几个重要时刻--发现时刻、报告时刻、披露时刻,每个时刻的到来都意味着它的“洞生”进入了新的阶段。漏洞可能 会被 白帽发现,也可能会被黑帽发现,后果迥然不同。黑帽会用其扩充自己的武器库,闷声发大财,某些西方情报机构更是漏洞收藏方面的“名家巨擘”。白帽中的好同志则会报告监管或厂商,但也有人会私藏几年用于打比赛。很难知道谁是最早的发现者,只能假设坏人早在你我之前就得知了漏洞的利用方式,并且已经钻进了我方网络潜伏多时了。报告时刻是白帽将漏洞告知厂商的那一刻,之后厂商多半会积极开展验证、修复,使漏洞在劫难逃。漏洞的披露一般由厂商做出,他们还会同时提醒用户安装补丁;某些白帽会把厂商置之不理的漏洞公之于众,希望利用舆论压力迫使厂商有所行动;也不管研究者和媒体纯粹为求新闻热度而爆料。官方的漏洞缓解措施一般伴随漏洞本身同步披露,但有时会晚几天问世,或者就没打算问世--这些厂商期待有能耐的用户可以先行自救。漏洞一旦披露,好人和坏人都会知道,一场追跑比赛由此开始。坏人们将抓信“商机”,磨刀霍霍,将魔爪伸向无冤无仇的可怜用户。
漏洞的“0day”、"1day"、“nday"标签反映了它的生命周期阶段,标签内容取决于此刻距漏洞披露时刻之后已经历的天数。如果某漏洞被小明发现,但尚未公开披露,这个漏洞就是小明的“零日漏洞(0day)”,风险用户大概率没有对这个漏洞采取预防措施。攻击极易得手。1day一般是指漏洞披露后1-3天的时间窗口,此时仅有少量用户完成了修复,漏洞利用仍然会有较好的成功率,攻击者的数量也骤然升高,风险不可小看。nday不容易攻击得手。有能力掌握0day的攻击者并不常见,因此对普通用户而言0day不等于高风险。0day的掌握者绝非善类,多半是目的明确的APT团伙,对于军队机关等敏感用户而言0day的风险反倒很高。
有一个与漏洞相关的概念是攻击载体,也可称作攻击媒介,是指对漏洞进行触发的途径。一个给定的网络环境中所有攻击载体的总和称作攻击面,它是攻击者视角下的作用点集合。由于载体和向量对应同一英文单词,攻击载体也常被译作“攻击向量”,但实际 上载体的说法来自流行病学中传播载体的概念,与数字向量无关。