《白帽子讲Web安全》笔记

4步:资产等级划分->威胁分析->风险分析->确认解决方案

一、资产等级划分

为什么要划分?

  • 资产等级划分是所有工作的基础,这项工作能够帮助我们明确目标是什么,要保护什么。

什么是资产?

  • 在互联网的基础设施已经比较完善的今天,互联网的核心其实是由用户数据驱动的——用户产生业务,业务产生数据。互联网公司除了拥有一些固定资产,如服务器等死物外,最核心的价值就是其拥有的用户数据。互联网安全的核心问题,是数据安全的问题。

如何实施?

  • 每个公司因为业务不同对数据的侧重也不同。做资产等级划分的过程,需要与各个业务部门的负责人一一沟通,了解公司最重要的资产是什么,他们最看重的数据是什么。通过访谈的形式,安全部门才能熟悉、了解公司的业务,公司所拥有的数据,以及不同数据的重要程度,为后续的安全评估过程指明方向。

划分信任域和信任边界

  • 最简单的划分方式,就是从网络逻辑上来划分。比如最重要的数据放在数据库里,那么把数据库的服务器圈起来;Web 应用可以从数据库中读/写数据,并对外提供服务,那再把 Web 服务器圈起来;最外面是不可信任的 Internet
    《白帽子讲Web安全》笔记

二、威胁分析

  • 造成危害的来源称为威胁(Threat),而把可能会出现的损失称为风险(Risk)。两者紧密联系

什么是威胁分析?

  • 威胁分析就是把所有的威胁都找出来。怎么找?一般是采用头脑风暴法。当然,也有一些比较科学的方法,比如使用一个模型,帮助我们去想,在哪些方面有可能会存在威胁,这个过程能够避免遗漏,这就是威胁建模

  • 一种威胁建模的方法,它最早是由微软提出的,叫做 STRIDE 模型。

  • STRIDE 是 6 个单词的首字母缩写,我们在分析威胁时,可以从以下 6 个方面去考虑。

    威 胁 定 义 对应的安全属性
    Spoofing(伪装) 冒充他人身份 认证
    Tampering(篡改) 修改数据或代码 完整性
    Repudiation(抵赖) 否认做过的事情 不可抵赖性
    InformationDisclosure(信息泄露) 机密信息泄露 机密性
    Denial of Service(拒绝服务) 拒绝服务 可用性
    Elevation of Privilege(提升权限) 未经授权获得许可 授权
  • 在进行威胁分析时,要尽可能地不遗漏威胁,头脑风暴的过程可以确定攻击面(Attack
    Surface)。

  • 在维护系统安全时,最让安全工程师沮丧的事情就是花费很多的时间与精力实施安全方
    案,但是攻击者却利用了事先完全没有想到的漏洞(漏洞的定义:系统中可能被威胁利用以造
    成危害的地方。)完成入侵。这往往就是由于在确定攻击面时,想的不够全面而导致的。

三、风险分析

  • 风险由以下因素组成:
    Risk = Probability * Damage Potential (风险=概率*潜在损害)

  • 科学地衡量风险
    DREAD 模型,它也是由微软提出的

    等 级 高(3) 中(2) 低(1)
    Damage Potential 获取完全验证权限;执行管理员操作;非法上传文件 泄露敏感信息 泄露敏感信息
    Reproducibility 攻击者可以随意再次攻击 攻击者可以重复攻击,但有时间限制 攻击者很难重复攻击过程
    Exploitability 初学者在短期内能掌握攻击方法 熟练的攻击者才能完成这次攻击 漏洞利用条件非常苛刻
    Affected users 所有用户,默认配置,关键用户 部分用户,非默认配置 极少数用户,匿名用户
    Discoverability 漏洞很显眼,攻击条件很容易获得 在私有区域,部分人能看到,需要深入挖掘漏洞 发现该漏洞极其困难
  • 风险分析例子
    以《智取华山》为例,如果国民党在威胁建模后发现存在两个主要威胁:第一个威胁是从
    正面入口强攻,第二个威胁是从后山小路爬悬崖上来。那么,这两个威胁对应的风险分别计算
    如下:
    走正面的入口:
    Risk = D(3) + R(3) + E(3) + A(3) + D(3) = 3+3+3+3+3=15
    走后山小路:
    Risk = D(3) + R(1) + E(1) + A(3) + D(1) = 3+1+1+3+1=9
    如果我们把风险高低定义如下:
    高危:12~15分 中危:8~11分 低危:0~7分
    那么,正面入口是最高危的,必然要派重兵把守;而后山小路竟然是中危的,因此也不能
    忽视。之所以会被这个模型判断为中危的原因,就在于一旦被突破,造成的损失太大,失败不
    起,所以会相应地提高该风险值。

  • 在任何时候都应该记住——模型是死的,人是活的,再好的模型也是需要人来使用的,在
    确定攻击面,以及判断风险高低时,都需要有一定的经验,这也是安全工程师的价值所在。

四、设计安全方案

  • 安全评估的产出物,就是安全解决方案。解决方案一定要有针对性,这种针对性是由资产
    等级划分、威胁分析、风险分析等阶段的结果给出的。
  • 设计解决方案不难,难的是如何设计一个好的解决方案。设计一个好的解决方案,是真正
    考验安全工程师水平的时候。
  • 很多人认为,安全和业务是冲突的,因为往往为了安全,要牺牲业务的一些易用性或者性
    能,笔者不太赞同这种观点。从产品的角度来说,安全也应该是产品的一种属性。一个从未考
    虑过安全的产品,至少是不完整的。
  • 作为安全工程师,要想的就是如何通过简单而有效的方案,解决遇到的安全问题。安全方
    案必须能够有效抵抗威胁,但同时不能过多干涉正常的业务流程,在性能上也不能拖后腿。
  • 最终,一个优秀的安全方案应该具备以下特点:
    能够有效解决问题;
    用户体验好;
    高性能;
    低耦合;
    易于扩展与升级。