一、漏洞基础认知:从“什么是漏洞”到“怎么评它有多严重”
大家好,我是你们这门课的老朋友。今天咱们正式开篇,聊聊漏洞的基础认知。说实话,我干了十几年安全,见过太多因为基础不牢、概念不清而踩坑的案例。所以这一章,咱们把地基打扎实。
漏洞是什么?说白了,就是系统里一个“不该有的小缝”。攻击者能顺着这个缝溜进来,干点坏事。可能是偷数据,可能是让系统瘫痪,也可能是控制你的服务器。嗯,就这么简单。
1.1 什么是漏洞?
漏洞的官方定义是:系统在设计、实现或运维中存在的缺陷,能被威胁利用,破坏安全策略。但我觉得,更接地气的说法是——代码里一个没考虑到的边界情况。
举个例子。我记得刚入行时,排查过一个电商网站的漏洞。用户输入商品数量时,后端没做校验。有人输入了负数,结果订单金额变成了负的,系统反而给他打钱。你想想看,这就是典型的“逻辑漏洞”——开发只考虑了正常用户,没想过有人会故意捣乱。
核心三要素:
- 缺陷:代码或配置里的错误
- 威胁:能利用这个缺陷的人或程序
- 影响:被利用后造成的损失
三者缺一不可。光有缺陷没人用,那叫“潜在风险”;有人用但没影响,那叫“白忙活”。
1.2 漏洞的生命周期
每个漏洞从出生到消亡,都有个完整的过程。我个人习惯把它分成六个阶段,画成图更好理解。
每个阶段我都踩过坑。比如“披露”阶段,我曾经见过一个团队,发现漏洞后直接发公告,结果补丁还没出,攻击者就顺着公告里的细节开始批量扫描。那叫一个惨。所以我的建议是:披露前,先确保补丁就绪。
个人经验:在“发现”阶段,如果你用的是自动化扫描工具,记得先验证结果。我遇到过好几次误报,浪费了团队一整天去排查一个根本不存在的漏洞。
1.3 常见漏洞类型:OWASP Top 10
说到漏洞类型,OWASP Top 10 是绕不开的。它每三四年更新一次,代表了Web应用最普遍、最危险的10类漏洞。我直接给你列个表,方便对照。
| 排名 | 漏洞类型 | 一句话解释 | 我见过的真实案例 |
|---|---|---|---|
| 1 | 失效的访问控制 | 用户能访问不该看的数据或功能 | 某后台系统,普通用户改URL参数就能看到管理员面板 |
| 2 | 加密机制失效 | 敏感数据没加密或用弱加密 | 某App传输用户密码用HTTP明文,抓包直接看到 |
| 3 | 注入 | 攻击者把恶意代码塞进输入里执行 | SQL注入:登录框输入 ' OR 1=1 -- 直接绕过认证 |
| 4 | 不安全的设计 | 架构层面就有缺陷,不是代码bug | 密码重置流程没做身份验证,谁都能改别人密码 |
| 5 | 安全配置错误 | 默认密码、目录列表、调试接口没关 | 某云存储桶权限设为公开,几万条用户数据被爬 |
| 6 | 易受攻击和过时的组件 | 用了有已知漏洞的第三方库或框架 | Struts2漏洞,多少大厂因此被拖库 |
| 7 | 身份识别和认证失败 | 登录机制有漏洞,容易被爆破或绕过 | 某系统没做登录失败次数限制,密码被暴力猜解 |
| 8 | 软件和数据完整性失效 | 更新或数据没做校验,被篡改 | 供应链攻击:第三方SDK被植入后门 |
| 9 | 安全日志和监控不足 | 出了事才发现,或者根本发现不了 | 某公司被入侵半年后才从备份日志里找到痕迹 |
| 10 | 服务端请求伪造(SSRF) | 攻击者让服务器去访问内网资源 | 某图片处理功能,传入内网IP就能读取云元数据 |
你想想看,这10类里,哪一类最容易被忽视?我个人觉得是“安全配置错误”。因为很多开发觉得“默认设置没问题”,结果默认密码、默认端口、默认权限,全成了攻击者的后花园。
避坑指南:我曾经接手过一个项目,代码写得挺规范,但生产环境的Tomcat管理后台用的是默认密码 admin/admin。攻击者登录后直接部署了WebShell。所以记住:默认配置就是最大的漏洞。
1.4 漏洞评级标准:CVSS
漏洞有轻有重,怎么量化?业界通用的是CVSS(通用漏洞评分系统)。目前主流是CVSS v3.1,评分范围0到10,分数越高越危险。
CVSS的评分维度有三个:
- 基础指标:漏洞本身的固有属性,比如攻击复杂度、是否需要权限、影响范围等
- 时间指标:随时间变化的因素,比如补丁是否已发布、利用代码是否公开
- 环境指标:跟具体部署环境相关的,比如资产价值、安全措施强弱
我一般只看基础指标,因为它是客观的。时间指标和环境指标需要你自己根据实际情况调整。
下面这个表,是CVSS v3.1的评级等级:
| 评分范围 | 严重等级 | 含义 |
|---|---|---|
| 9.0 - 10.0 | 严重 | 能远程、无需认证、直接控制整个系统 |
| 7.0 - 8.9 | 高危 | 能造成较大影响,但需要一定条件 |
| 4.0 - 6.9 | 中危 | 有影响,但利用难度高或影响范围有限 |
| 0.1 - 3.9 | 低危 | 影响很小,或者几乎无法利用 |
| 0.0 | 无 | 没有安全影响 |
举个例子。Log4j那个漏洞(CVE-2021-44228),CVSS评分10.0,满分。为什么?因为它能远程、无需认证、直接执行任意代码。你想想看,只要你的应用用了Log4j,攻击者发一条日志消息就能控制你的服务器。这就是“严重”级别的典型代表。
我的习惯:拿到一个漏洞报告,先看CVSS分数。如果大于等于7.0,我会立刻拉群讨论修复方案。如果小于4.0,我会先确认是不是误报,再决定是否排期。这样能有效避免“狼来了”效应——别让团队疲于奔命处理低危漏洞。
1.5 本章小结
这一章咱们把漏洞的基础概念捋了一遍。从“什么是漏洞”到它的生命周期,再到OWASP Top 10的常见类型,最后是CVSS评级标准。说白了,就是让你知道:漏洞是什么、怎么来的、长什么样、有多严重。
嗯,基础打牢了,后面咱们才能聊怎么排查、怎么修复。记住一句话:不懂漏洞的本质,你连排查的方向都找不到。