1. 安全基础与威胁建模

各位同学,欢迎来到《漏洞排查与安全加固实战指南》的第一章。

做安全这么多年,我见过太多团队一上来就拿着扫描器到处扫,扫出一堆漏洞列表就开始修。结果呢?修了又犯,犯了再修,永远在救火。说白了,就是没打好地基。

这一章,我们就来聊聊这个“地基”——安全基础与威胁建模。你想想看,连敌人是谁、从哪来、想干什么都不知道,你怎么防?

1.1 漏洞生命周期:从出生到消亡

一个漏洞,不是凭空出现的。它有自己的生命周期。理解这个周期,你才能知道在哪个阶段该做什么事。

核心观点: 漏洞管理不是一次性工作,而是一个持续改进的闭环。

我个人习惯把漏洞生命周期分成六个阶段:

  1. 发现 —— 可能是白帽子提交的,可能是内部测试发现的,也可能是黑客已经在利用了你才知道。
  2. 确认与评估 —— 这个漏洞是真的吗?影响范围多大?危害等级多高?
  3. 修复 —— 打补丁、改配置、加WAF规则,选哪种方式?
  4. 验证 —— 修复完了,真的修好了吗?有没有引入新问题?
  5. 复盘 —— 为什么会出现这个漏洞?流程上怎么避免再犯?
  6. 关闭 —— 确认无误,归档记录。

我在项目中遇到过最典型的反面教材:某团队发现了一个SQL注入漏洞,开发同学直接在生产库上改了段代码,没测试就上线了。结果呢?修是修了,但把另一个正常功能搞崩了,线上故障两小时。这就是跳过了“验证”阶段的后果。

避坑指南: 我曾经见过一个公司,漏洞库里有三年前的“已修复”漏洞,结果一复查,根本没修。为什么?因为当初负责修复的人离职了,没人跟进。所以,漏洞生命周期必须有系统记录和定期审计,不能靠人肉记忆。

1.2 常见攻击类型:OWASP Top 10 实战解读

说到攻击类型,OWASP Top 10 是绕不开的。但我不建议你死记硬背那十个名字。你得知道它们在实际业务里长什么样。

下面这张表,是我根据实战经验整理的,把 Top 10 和常见业务场景对应起来:

排名 漏洞类型 实战场景举例 我踩过的坑
A01 失效的访问控制 普通用户通过修改URL中的ID,访问了管理员的后台 曾经有个电商项目,用户A能看到用户B的订单详情,就是因为后端没校验用户身份
A02 加密机制失效 密码用MD5存储,或者HTTPS证书过期了还在用 某金融APP,敏感数据传输用的还是HTTP,抓包直接看明文
A03 注入 登录框输入 ' OR 1=1 -- 直接绕过认证 我见过最离谱的,是开发把SQL查询拼在存储过程里,参数化查询形同虚设
A04 不安全的设计 密码重置逻辑:只验证密保问题,不验证用户身份 某社交平台,通过生日和宠物名字就能改密码,这设计本身就有问题
A05 安全配置错误 默认密码没改、目录列表开启、错误信息暴露堆栈 Tomcat 管理后台默认密码 admin/admin,我扫到过不下20次
A06 易受攻击和过时的组件 用了 Log4j 2.14 版本,或者 jQuery 1.7 Log4j 漏洞爆发那晚,我通宵给客户排查,发现有人还在用 2.0 版本
A07 身份认证和会话管理失效 Session 没过期、Token 硬编码在前端 某内部系统,退出后Session还在,别人直接用原链接就能进去
A08 软件和数据完整性失效 CI/CD 流水线被篡改,或者依赖包被投毒 有次客户系统被植入后门,查了半天,发现是第三方库被篡改了
A09 安全日志和监控不足 攻击者扫了三天,日志里一条记录都没有 某公司被勒索,想溯源,结果日志只保留24小时,啥也没留下
A10 服务端请求伪造(SSRF) 攻击者让服务器去访问内网资源,比如 http://127.0.0.1:6379 云上环境特别常见,元数据服务(169.254.169.254)经常被利用

小提示: 别被这十个名字吓到。实际工作中,A01(失效的访问控制)和 A03(注入) 占了漏洞总量的60%以上。先把这两个搞定,你的安全水平就能提升一大截。

1.3 威胁建模方法论:STRIDE 与 DREAD

好了,知道了漏洞长什么样,接下来就是怎么系统性地找出它们。这就用到威胁建模了。

我常用的两个方法论:STRIDE 用来分类威胁,DREAD 用来评估风险。两者配合使用,效果最好。

1.3.1 STRIDE:给威胁贴标签

STRIDE 是微软提出的,每个字母代表一类威胁:

  • Spoofing(假冒)—— 冒充他人身份。比如伪造登录请求。
  • Tampering(篡改)—— 修改数据。比如中间人改包。
  • Repudiation(抵赖)—— 否认做过的事。比如没有操作日志。
  • Information Disclosure(信息泄露)—— 敏感数据被看到。比如数据库被拖库。
  • Denial of Service(拒绝服务)—— 让服务不可用。比如DDoS攻击。
  • Elevation of Privilege(权限提升)—— 普通用户获得管理员权限。比如越权操作。

我建议你在做系统设计评审时,拿着这六个维度逐个过一遍。嗯,你会发现很多平时注意不到的问题。

1.3.2 DREAD:给威胁打分

威胁找到了,哪个先修?DREAD 就是用来排优先级的。

维度 说明 评分标准(1-10)
Damage 造成的损失有多大 1=轻微,10=系统瘫痪/数据全丢
Reproducibility 复现难度 1=极难,10=随便点一下就能触发
Exploitability 利用难度 1=需要专家级技能,10=脚本小子都能搞
Affected Users 影响用户数 1=个别人,10=所有用户
Discoverability 被发现的可能性 1=几乎不可能,10=公开的POC到处是

计算方式:总分 = (D + R + E + A + D) / 5。总分越高,优先级越高。

实战建议: 我个人习惯把 DREAD 评分和业务影响结合起来。比如一个漏洞 DREAD 评分只有 6,但它影响的是核心交易系统,那我会把它提到最高优先级。别死板地只看分数。

1.4 知识体系总览:一张图看懂本章

下面这张图,把本章的核心逻辑串起来了。从漏洞生命周期,到攻击类型,再到威胁建模,最后落到安全加固。你把它记在脑子里,后面的章节就好理解了。

第一章:安全基础与威胁建模 知识体系 漏洞生命周期(发现 → 确认 → 修复 → 验证 → 复盘 → 关闭) 输入 常见攻击类型(OWASP Top 10 实战解读) 分析 威胁建模方法论 STRIDE(分类威胁) + DREAD(评估风险) 输出 安全加固优先级清单 反馈 持续改进与复盘 核心逻辑 从发现到闭环,持续迭代 实战重点 A01 + A03 占60%以上 方法论 STRIDE 分类 + DREAD 打分

1.5 本章小结:打好地基再盖楼

这一章的内容,说白了就是三件事:

  • 漏洞生命周期 —— 让你知道漏洞从哪来、到哪去,别做“修了又犯”的蠢事。
  • OWASP Top 10 —— 让你知道敌人长什么样,别连 SQL 注入和 XSS 都分不清。
  • STRIDE + DREAD —— 让你知道怎么系统性地找漏洞、排优先级,别像个无头苍蝇。

我记得刚入行时,带我的师傅说过一句话:“安全不是靠堆工具堆出来的,是靠脑子想出来的。” 这一章,就是帮你把脑子里的“安全思维”建立起来。后面的章节,我们会深入到具体的漏洞排查和加固操作。到时候你会发现,地基打得牢,后面盖楼才快。