博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
读《白帽子讲Web安全》之安全意识篇(一)
阅读量:6986 次
发布时间:2019-06-27

本文共 5226 字,大约阅读时间需要 17 分钟。

hot3.png

写在开始:

这是一本以建设者的角度去解决安全问题的书。

一直以来安全行业都不缺少所谓的技术和毫无思想的说明书式文字,缺少的是对于安全本质的分析,关于如何更好地结合实际情况解决问题的思考,以及对这些思考的分享。吴翰清正在尝试做这个事情,而且做到了。

    ---乌云漏洞平台创始人  方小顿(剑心)0

其他章节见“Web安全”系列笔记。

【序言,前言】

1、互联网公司安全,与传统的网络安全、信息安全技术的区别。

就如同开发者会遇到的挑战一样,有很多问题,不放到一个海量用户的环境下,是难以暴露出来的。由于量变引起质变,所以管理10台服务器,和管理1万台服务器的方法肯定会有所区别;同样的,评估10名工程师的代码安全,和评估1000名工程师的代码安全,方法肯定也要有所不同。

互联网公司安全还有一些鲜明的特色,比如注重用户体验、注重性能、注重产品发布时间,因此传统的安全方案在这样的环境下可能完全行不通。

2、互联网公司安全可能会成为一门新的学科,或者说应该把安全技术变得更加工业化

现在市面上安全类目的书,要么是极为“学术化”的,一般人看不懂的教科书,要么是极为“娱乐化”的,比如一些黑客工具说明书。

这本书,是一本阐述安全技术在企业级应用中实践的书,是一本大型互联网公司的工程师能够真正用得上的安全参考书。

3、掌握了以正确的思路去看待安全问题,在解决他们时,都将无往而不利。

4、安全工程师的核心竞争力不在于他能拥有多少个0day,掌握多少种安全技术,而是在于他对安全理解的深度,以及由此引申的看待安全问题的角度和高度

5、最可贵的不是那一个个工业化的解决方案,而是在解决这些问题时,背后的思考过程。我们不是要做一个能够解决问题的方案,而是要做一个能够“漂亮地”解决问题的方案。

6、2011年底的暴库事件,网站只是在为以前的不作为买单。

7、要解决“拖库”的问题,其实是要解决整个互联网公司的安全问题,远非保证一个数据库的安全那么简单。

8、当网站的安全做到一定程度后,黑客可能难以再找到类似注入攻击、脚本执行等高风险的漏洞,从而可能将注意力转移到客户端脚本上。

9、如果一个网站的安全刚刚从0开始,那么“服务器应用安全”是优先级更高的安全问题,相比于客户端安全。

10、黑帽子是指那些造成破坏的黑客,而白帽子则是研究安全,但不造成破坏的黑客。白帽子均已建设更安全的互联网为己任。

11、Web是互联网的核心,是未来云计算和移动互联网的最佳载体,因为Web安全也是互联网公司安全业务中最重要的组成部分。

【第一篇  世界观安全】

【第一章  我的安全世界观】

1、互联网本来是安全的,自从有了研究安全的人之后,互联网就变得不安全了。

2、现在的计算机系统,在用户态的最高权限就是root(administrator)。“root”对黑客的吸引,就像大米对老鼠的吸引,美女对色狼的吸引。

3、黑客使用的漏洞利用代码,被称为“exploit”。

4、在黑客的世界里,有的黑客,精通计算机技术并且能自己挖掘漏洞,然后编写exploit;而有的黑客,则只对攻击本身感兴趣,对计算机原理和各种编程技术的了解比较粗浅,因此只懂得编译别人的代码,自己并没有动手能力,这种黑客被称为“Script Kids”,即“脚本小子”。

而现实中,真正造成破坏的,往往是脚本小子。在今天已经形成产业的计算机犯罪、网络犯罪中主要的也是脚本小子们。

5、【中国黑客简史】可分为启蒙时代(20世纪90年代)、黄金时代(2000年中美黑客大战)、黑暗时代(前几年到现在,可能会一直持续)

黑客精神:崇尚分享、自由、免费的互联网精神,并热衷于分享自己的最新研究成果

也许黑客精神所代表的Open、Free、Share真的一去不复返了。

伴随着安全产业的发展,黑客的功利性越来越强。黑色产业链开始成熟。上一个时期技术还不成熟的黑客们,凡是坚持下来的,都已经成长为安全领域的高级人才,有的在安全公司贡献自己的专业技能,有的则带着非常强的技术进入了黑色产业。

此时期的黑客群体因为互相之间缺乏信任已经不再具有开放和分享的精神,最为纯粹的黑客精神实质上已经死亡。

6、早期互联网中,Web并非互联网的主流应用,相对来说,基于SMTP、POP3、FTP、IRC等协议的服务拥有者绝大多数的用户。因此黑客们主要的攻击目标是网络、操作系统以及软件等领域,Web安全领域的攻击与防御技术均处于非常原始的阶段。

    相对于那些系统软件的exploit 而言,基于Web的攻击,一般只能让黑客获得一个比较低权限的账户,对黑客的吸引力远远不如直接攻击系统软件。

但是时代在发展,运营商、防火墙对于网络的封锁,使得暴露在互联网上的非Web服务越来越少,且Web技术的成熟使得Web应用的功能越来越强大,最终成为了互联网的主流。黑客们的目光,也渐渐转移到了Web这块大蛋糕上。

7、桌面软件安全(或者叫客户端软件安全)也是一个重要的分支。

    代表是浏览器攻击,还有微软的Office系列软件,Adobe,多媒体播放软件,压缩软件等装机量大的流行软件。

    这种攻击和Web安全有着本质的区别。

8、早期,比如在web1.0 时代,人们更多的是关注服务器端动态脚本的安全问题,对Web安全的认知不足导致很多学血案,同时也遗留下很多历史问题,比如PHP语言至今仍然只能靠较好的代码规范来保证没有文件包含漏洞

9、SQL注入(大概1999年出现)的出现是Web安全史的一个里程碑。

10、XSS也是另一个里程碑。(99年出现,在经历MySpace的XSS蠕虫事件之后才引起重视)

11、Web攻击的思路从服务器端转向了客户端。

12、Web技术催生了很多新兴脚本语言,比如Python、Ruby、NodeJS等敏捷开发成为互联网的主旋律。

13、白帽子一般为企业或安全公司服务,工作的出发点就是要解决所有的安全问题,因此所看所想必然更加全面、宏观

  黑帽子的主要目的是入侵系统,找到有价值的数据,要以点突破,因此思考问题的出发点往往是有选择性的、微观的。

   “破坏永远比建设容易”

    黑帽子为了完成一次入侵,需要利用各种不同漏洞的组合来达到目的,是在不断地组合问题。

    白帽子在设计解决方案时,如果只看到各种问题组合后产生的效果,就会把事情变复杂,难以细致入微地解决根本问题。所以白帽子必然是在不断地分解问题,再对分解后的问题逐个解决。

    一般来说,白帽子选择的方法,是克服某种攻击方法,而并非抵御单次的攻击。

14、No Patch For Stupid!    最大的漏洞是人。

patch  英[pætʃ] 美[pætʃ]

n. 眼罩;斑点;碎片;小块土地

vt. 修补;解决;掩饰

vi. 打补丁

15、现状是,如果新技术不在一开始就考虑安全设计的话,防御技术就必然会落后于攻击技术,导致历史不断地重复。

16、在武侠小说中,一个真正的高手,对武功有着最透彻、最本质的理解,达到了返璞归真的境界。

17、安全的本质是信任的问题。

  一切的安全方案设计的基础,都是建立在信任关系上的。我们必须相信一些东西,必须有一些最基本的假设,安全方案才能得以建立;如果我们否定一切,安全方案就会如无源之水,无根之木,无法设计,也无法完成。

18、现实中,登机前要进行安检。因为飞机是一个高度敏感和重要的区域,任何有危害的物品都不应该进入这一区域。

19、通过一个安全检查(过滤、净化)的过程,可以梳理未知的人或物,使其变得可信任。

   被划分出来的具有不同信任级别的区域,我们称为信任域,划分两个不同信任域之间的边界,我们称为信任边界

20、现实生活中,我们很少设想最极端的前提条件,因为极端条件意味着小概率和高成本。因为成本有限,我们会根据成本将一些可能性较大的条件作为决策的主要依据。

    另一个角度,一旦我们作为决策依据的条件被打破、被绕过,那么就会导致安全假设的前提条件不再可靠,变成一个伪命题。

    因此,把握住信任条件的度,使其恰到好处,正是设计安全方案的难点所在,也是安全这门学问的艺术魅力所在。

21、安全是一个持续的过程

22、攻击和防御技术在不断碰撞与对抗的过程中得到发展。

    微观上,在某一时期可能某一方占据了上风;但宏观上,某一时期的攻击或防御技术都不可能永远有效。因为两者是相互促进的辩证关系

23、产品本身需要一个新陈代谢的过程,否则就会被淘汰,自动升级功能是必须。

24、安全三要素:机密性(Confidentiality)、完整性(Integrity)、可用性(Availability)

更多:可审计性,不可抵赖性等。

25、实施安全评估4个阶段:资产等级划分、威胁分析、风险分析、确认解决方案。

26、互联网安全的核心问题,是数据安全的问题

    在互联网基础设施已经比较完善的今天,互联网的核心其实是由用户数据驱动的--用户产生业务,业务产生数据。互联网公司最核心的价值就是其拥有的用户数据

27、完成资产等级划分后,接下来要划分信任域信任边界。一种最简单的划分方式,从网络逻辑划分。

  比如,最重要的数据放在数据库里,然后把数据库的服务器圈起来,是最里边的一个信任域;Web应用可以读写数据库,并对外提供服务,那么把Web服务器圈起来;最外边是不可信任的Internet。

28、威胁(Threat)和风险(Risk):我们把可能造成危害的来源称为威胁,而把可能会出现的损失称为风险。

29、一种威胁建模方法,微软提出:STRIDE模型。

威胁建模和 STRIDE

194936_0UlV_2008177.jpg

30、漏洞定义:系统中可能被威胁利用以造成危害的地方。

31、风险分析的一个模型:DREAD模型。

194948_xVcP_2008177.jpg

32、没有不安全的业务,只有不安全的实现方式。产品需求,尤其是商业需求,是用户真正想要的东西,是业务的意义所在,在设计安全方案时应该尽可能不改变商业需求的初衷。

33、通过简单而有效的方案解决遇到的安全问题。

34、好的安全方案对用户应该是透明的,尽可能不要改变用户的使用习惯。

比如微软的UAC,每次都弹出来问用户。如果用户能够分辨什么样的行为是安全的,那么还要安全软件做什么?

35、一个优秀的安全方案应具备一下特点:

1)能够有效解决问题

2)用户体验好

3)高性能

4)低耦合

5)易于扩展与升级

36、白帽子兵法:Secure By Default原则

1)黑名单、白名单

2)最小权限原则

3)纵深防御原则

4)数据与代码分离原则

5)不可预测性原则

37、如果更多地使用白名单,系统就会变得更安全。

38、在Linux系统中,一种良好的操作习惯是使用普通账户登录,在执行需要root权限的操作时,再通过 sudo 命令完成。

39、Defense in Depth(纵深防御)包含两层含义:

    首先,在各个不同层面、不同方面实施安全方案,避免出现疏漏,不同方案之间相互配合,形成一个整体。(解决方案有必要将风险分散到系统的各个层面)

    其次,要在正确的地方做正确的事情,即:在解决根本问题的地方实施针对性的方案。它要求我们理解威胁的本质,从而做出正确的应对措施。

40、UTM(Unified Threat Management)统一威胁管理,只是近几年安全厂商为了迎合市场的需要推出的产品。

41、数据与代码分离原则:缓冲区溢出也可以认为是程序违背了这一原则的后果。

    Web安全中,XSS、SQL Injection、CRLF Injection、X-Path Injection等,均可以根据此原则设计出真正安全的解决方案。因为这个原则抓住了漏洞形成的根本原因。

42、不可预测性原则,是从克服攻击方法的角度看问题。比如,网站问斩是按1,2,3顺序编号的,就很容易被遍历,如果是随机序列,就比较安全,防止简单猜测。

43、安全是一门朴素的学问,也是一种平衡的艺术

无论是传统安全,还是互联网安全,其内在的原理都是一样的。我们只需抓住安全问题的本质,之后无论遇到任何安全问题,都会无往而不利,因为我们已经真正地懂得了如何用安全的眼光来看待这个世界

【(附)谁来为漏洞买单?】

1、所有的程序本来也没有漏洞,只有功能,但当一些功能被用于破坏,造成损失时,也就成了漏洞。

2、我们定义一个功能是否是漏洞,只看后果,而不应该看过程

3、一个业务安全设计得好的网站,往往loginID和nickname(昵称)是分开的。登录ID使用户的私有信息,而nickname不能用于登录,但可以公开给所有人看,这是一个设计的细节,是积极防御的一种表现。

4、漏洞只是对破坏性功能的一个统称而已。

5、任何漏洞,可以在不同层面解决,但只有在源头解决,才是善莫大焉。

转载于:https://my.oschina.net/bluefly/blog/310709

你可能感兴趣的文章
探索webpack热更新对代码打包结果的影响(二)
查看>>
微信小程序_豆瓣电影
查看>>
pandas 修改 DataFrame 列名
查看>>
《2018年云上挖矿态势分析报告》发布,非Web类应用安全风险需重点关注
查看>>
leetcode409.Longest Palindrome
查看>>
蚂蚁区块链平台BaaS技术解析与实践
查看>>
Nervos 双周报第 3 期:佛系新年之后的开工大吉!
查看>>
【PHP 扩展开发】Zephir 基础篇
查看>>
字节跳动开源Go结构体标签表达式解释器,成请求参数校验的杀手锏
查看>>
怎么将在线录制的视频转为GIF动态图
查看>>
【剑指offer】顺时针打印矩阵
查看>>
怎么将图片上传封装成指令?
查看>>
leetcode讲解--861. Score After Flipping Matrix
查看>>
聊聊JavaScript和Scala的表达式 Expression
查看>>
[原]数据科学教程: 如何使用 mlflow 管理数据科学工作流
查看>>
超详细Dkhadoop虚拟机安装图文教程
查看>>
JAVA 8 函数式接口--Supplier
查看>>
Dockerfile多阶段构建原理和使用场景
查看>>
七牛云赵之健:多维度融合赋能视频 AI 的实践
查看>>
CSS3中的box-sizing
查看>>