Security By Default
资产等级划分
资产等级划分是安全工作的基础,它能够让我们明确目标是什么? 要保护什么?
资产等级划分其实可以理解为数据等级划分,那些数据对我们来说是私密的,那些信息是可以公开的,根据侧重点的不同,做资产等级的划分。
这个过程需要安全部门和各个业务部分交流,熟悉公司的业务、数据、以及其重要程度,为后续的安全工作的重心指明方向。
信任域和信任边界:
- 信任域:通常是用网络逻辑来分割信任域,例如安全区、DMZ区。
- 信任边界:不同域间数据交互的边界,如果两个应用在不同的域,同时无法确保双方数据是可信的,就可以在这个信任边界对双方的数据交互做安全检查等工作。
威胁分析
微软提出了一个威胁建模方法,叫做STRIDE模型,STRIDE是由六个于安全相关的单词组成的
威胁 | 定义 | 对应的安全属性 |
---|---|---|
Spoofing(伪装) | 冒充他们身份 | 认证 |
Tampering(篡改) | 修改数据或代码 | 完整性 |
Repudiation(抵赖) | 否认做过的事情 | 不可抵赖性 |
Information Disclosure(信息泄露) | 机密信息泄露 | 机密性 |
Denial of Service(拒绝服务) | 拒绝(无法提供)服务 | 可用性 |
Elevation of Privileges(提升权限) | 未经授权获得更高授权 | 提权 |
伪装
- 客户端伪装:XSS盗取cookie,以被害者身份登录系统
- 服务端伪装:钓鱼网站
篡改
- HTTP: 中间人篡改传输数据
抵赖
- 操作可Track(追踪):what、who、when、how
信息泄露
- IDE注释(编写者信息,名称,邮箱,时间等)
- SQL注入
拒绝服务
- DDos:通过大量的请求让服务方无法提供服务
- CC:通过发送大量消耗性能的请求来使服务器方无法提供服务
提权
- 数据库:读取mysql库
- 系统:普通用户提升到root
风险分析
等级 | 高(3) | 中(2) | 低(1) |
---|---|---|---|
Damage Potential | 获取最高权限,执行管理员操作,上传Webshell | 敏感信息泄露 | 泄露其他信息 |
Reproducibility | 攻击者可以随意再次攻击 | 攻击可重复 | 攻击条件苛刻 |
Exploitability | 攻击门槛低(人狗都会用) | 攻击门槛较高 | 攻击门槛极高,极少数人能够攻击 |
Affected users | 所有用户、关键用户 | 部分用户 | 极少用户,匿名用户 |
Discoverability | 漏洞极容易被发现,攻击条件容易获得 | 发现难度中,需要深入挖掘 | 发现难度高 |
从上面的表格可以总结几个关键点,漏洞暴露程度,攻击的实施门槛,攻击可重复性,攻击后影响面积
Security By Default
黑、白名单
黑名单
常见的例子:
- 现实社会中:没交作业名单上的同学都不允许进教室上课!
- 计算机世界:限制特定IP不允许访问服务器,带有木马病毒特征的禁止运行
白名单
常见的例子:
- 现实社会中:只有本校学生才能入内
- 计算机世界:限制特定IP允许访问服务器,仅允许运行信任列表中的程序
黑白优缺对比
黑名单:
- 优点:可以通过已知的信息禁止(解决)一些隐患,例如过滤XSS,SQL注入等
- 缺点:仅能针对已知的隐患和威胁,不能防御新的威胁,例如0day
白名单:
- 优点:解决0day,相较于黑名单更轻量
黑白适用场景
- 黑名单:信任域大的适合用黑名单,例如接入层的
WAF
根据某些IP的恶意请求禁止此IP - 白名单:信任域小的适合用白名单,例如数据库服务器仅允许特定IP地址、网段的客户端来连接它
纵深防御
安全贯穿整条全链路,从客户端发出请求到落地入库,再到返回数据
不可预测性
不可预测性
建模
Microsoft Threat Modeling Tool 2016
通过这个工具可以构建出简单的架构模型,并且生成架构中的安全隐患