最近心血来潮,对安全这些略感兴趣,就买了本 白帽子讲web安全 看看 ,这里做个读书笔记吧!方便啥时候忘了再看一下。
exploit——漏洞利用代码
Script kids ——脚本小子,利用exploit到处破坏的家伙,对漏洞及编程原理没有多深的理解。
0day——即时发布
安全三要素:安全的基本组成要素(CIA)——机密性(confidentiality)、完整性(Integrity)、可用性(Available)。
C ——要求保护数据内容不能泄露,加密是实现机密性要求常见的手段
I——要求保护数据内容是完整的,没有被篡改的。常见的保持一致性的手段是数字签名
A——要求保护资源是“随需而得”,DoS(Denial of Service)是破坏的安全的可用性
安全评估过程:
Threat(威胁)——可能造成为危险的来源
Risk(风险)——可能会出现的损失
可以简单划分为4个阶段:资产等级划分,威胁分析,风险分析,确认解决方案(这个实施过程是层层递进的,前后之间是因果关系)
1.互联网安全的核心问题,是数据安全的问题。对互联网公司拥有的资产进行等级划分,就是对数据进行等级划分,
2.完成资产等级划分之后,对保护的目标有一个大概的了解,接下来就是要划分信任域和信任边界,
3.威胁建模 :使用某种方法,帮助去想,在哪些方面有可能存在威胁,这个过程能避免漏洞,这就是威胁建模(STRIDE——最早由MS提出来的一种建模方法);
在进行威胁分析的时候,要尽可能地不遗漏威胁,头脑风暴的过程可以确定攻击面(AttackSurface)
威胁 | 定义 | 对应的安全属性 |
Spoofing (伪装) | 冒充他人身份 | 认证 |
Tampering(篡改) | 修改数据或者代码 | 完整性 |
Repudiation(抵赖) | 否认做过的事情 | 不可抵赖性 |
InformationDisclosure(信息泄露) | 机密信息泄露 | 机密性 |
Denial of Service(拒绝服务) | 拒绝服务 | 可用性 |
Elevation of Privilege(提升权限) | 未经授权获得许可 | 授权 |
4.风险分析 :风险有以下因素组成: Risk = Probability * Damage Protential 发生的可能性和损失大小;
DREAD模型,也是有MS提出,它指导我们应该从哪些方面去判断的威胁的风险程度。
等级 | 高(3) | 中(2) | 低(1) |
Damage Protential | 获取安全验证权限;执行管理员操作,非法上传文件 | 泄露敏感信息 | 泄露其他信息 |
Reproducibility | 攻击者可以随意再次攻击 | 攻击者可以重复攻击,但有时间限制 | 攻击者很难重复攻击过程 |
Exploitability | 初学者在短期内能掌握攻击方法 | 熟练的攻击者才能完成攻击 | 漏洞利用条件非常苛刻 |
Affected users | 所有用户,默认配置,关键用户 | 部分用户,非默认配置 | 极少数用户,匿名用户 |
Discoverability | 漏洞很明显,攻击条件很容易获得 | 在私有区域,部分人能看到,需要深入挖掘漏洞 | 发现该漏洞极其困难 |
********************************模型是死的,只能起一个辅助作用,最终作出决策的还是人。
5.设计安全方案 :安全评估的产出物。一个优秀的安全方案应该具备以下特点——能够有效解决问题、用户体验好、高性能、低耦合、易于扩展和升级
白帽子兵法(一些思想):
1.Secure By Default(最基本也最重要的原则):白名单和黑名单、最小权限原则
2.纵深防御原则(Defense in Depth):1)在各个不同层面,不同方面实施安全方案,避免出现疏漏,不同安全方案之间需要相互配合,构成一个整体; 2)要在正确的地方做正确的事
3.数据与代码分离原则 :这个原则广泛用于各种由于“注入”而引发安全问题的场景
4.不可预测性原则 :从克服攻击方法的绝度看问题,能有效地对抗基于篡改、伪造的攻击,可以巧妙地用于一些敏感数据上,不可预测性的实现往往需要用到加密算法、随机数算法、哈希算法