注:读书笔记中存在大段引用原文内容,但是投转载和翻译都不合适,故分类为原创
我的安全世界观
1.1 web安全简史
1.1.1中国黑客简史
1990s——2000s 启蒙时代
2000s——2005 黄金时代
2005——2010 黑暗时代
SSH为Secure Shell的缩写, 由IETF的网络小组(Network Working Group)所指定;SSH为建立在应用层基础上的安全协议。SSH是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台都可以运行SSH。
1.1.2黑客技术的发展历程
由于更容易获得root权限,在早期,黑客们主要的攻击目标是网络、操作系统以及软件等领域,web安全领域的攻击和防御技术均处于非常原始的阶段。
后来由于防火墙技术的兴起和网络安全公共事件引起的运营商对端口的封锁,使得暴露在互联网上的非web服务越来越少,且web技术的成熟使得web应用的功能越来越强大,最终成为了互联网的主流。黑客们也逐渐被web吸引。
在此阶段,还有另一个重要的分支,桌面软件安全,或者叫客户端软件安全。其代表是浏览器攻击。常见的针对桌面软件的攻击目标,还包括微软的office系列软件、adobe acrobat reader、多媒体播放软件、压缩软件等装机量大的流行软件。但是这种攻击,和本书讨论的web安全还有着本质的区别,所以即使浏览器安全是web安全的重要组成部分,但是本书中,也只会讨论浏览器和web安全有关的部分。
1.1.3 web安全的兴起
在web1.0时代,人们更多的是关注服务器端动态脚本的安全问题(webshell)
SQL注入的出现是web安全史上的一个里程碑,它最早出现大概是1999年,并很快就成为web安全的头号大敌。
XSS的出现则是web安全史上的另一个里程碑。XSS的出现时间和SQL注入差不多,但是真正引起人们重视则是在大概2003年以后。
随着web2.0的兴起,XSS,CSRF等攻击已经变得更为强大。web攻击的思路也从服务器端转向了客户端,转向了浏览器和用户。
1.2 黑帽子、白帽子
从看待问题的角度来看,黑帽子为了完成一次入侵,需要利用各种不同漏洞的组合来达到目的,是在不断地组合问题;而白帽子在设计解决方案时,如果只看到各种问题组合后产生的效果,就会把事情变复杂,难以细致入微地解决根本问题,所以白帽子必然是在不断地分解问题,再对分解后的问题逐个予以解决。
1.3 返璞归真,揭秘安全的本质
安全是什么?什么样第情况下会产生安全问题?我们要如何看待安全问题?只有搞明白了这些最基本的问题,才能明白一切防御技术的出发点,才能明白为什么我们要这样做,要那样做。
通过一个安全检查(过滤、净化)的过程,可以梳理未知的人或物,使其变得可信任。被划分出来的具有不同信任级别的区域,我们称为信任域,划分两个不同信任域之间的边界,我们成为信任边界。
作者认为,安全问题的本质是信任的问题。
一切安全方案设计的基础,都是建立在信任关系上的。我们必须相信一些东西,必须有一些最基本的假设,安全方案才能得以建立;如果我们否定一切,安全方案就会无法设计,也无法完成。
对条件的信任程度,是确定对象是否安全的基础。
在现实生活中,我们很少设想最极端的前提条件,因为极端的条件往往意味着小概率以及高成本,因此在成本有限的情况下,我们往往会根据成文来设计安全方案,并将一些可能性较大的条件作为决策的主要依据。
从另一个角度来说,一旦我们作为决策依据的条件被打破,被绕过,那么就会导致安全假设的前提条件不再可靠,变成一个伪命题。因此,把握住信任条件的度,使其恰到好处,正式设计安全方案的难点所在,也是安全这门学问的艺术魅力所在。
1.4 破除迷信,没有银弹
在现代的互联网产品中,自动升级功能已经成为一个标准配置,一个有活力的产品总是会不断地改进自身
Pwn2Own是全世界最著名、奖金最丰厚的黑客大赛,由美国五角大楼网络安全服务商、惠普旗下TippingPoint的项目组ZDI(Zero Day Initiative)主办,谷歌、微软、苹果、Adobe等互联网和软件巨头都对比赛提供支持,通过黑客攻击挑战来完善自身产品。大赛自2007年举办至今,每年三月在加拿大温哥华举办的CanSecWest安全峰会上举行。
Pwn2Own攻击目标包括IE、Chrome、Safari、Adobe Flash和Adobe Reader的最新版本。对安全研究人员来说,如果能在Pwn2Own上获奖,这象征着其安全研究水平已经达到世界领先的水平。Pwn2Own上各参赛团队的表现,也代表其国家网络攻防技术的实力。
参赛者如能够攻破上述广泛应用的产品,将获得ZDI提供的现今和非现金奖励,Google Project Zero也对本届比赛提供了额外奖励。而ZDI也会将产品漏洞反馈给相关厂商,帮助厂商进行修复。
1.5 安全三要素
安全方案的设计也有着一定的思路和方法可循
因为信任关系被破坏,从而产生了安全问题。我们可以通过信任域的划分、信任边界的确定,来发现问题是在何处产生的。这个过程可以让我们明确目标。
安全三要素是安全的基本组成元素,分别是机密性(Confidentiality)、完整性(Intergrity)、可用性(Availability)
机密性要求保护数据内容不能泄露,加密是实现机密性要求的常见手段。
完整性则要求保护数据内容是完整、没有被篡改的。常见的保证一致性的技术手段是数字签名。
可用性要求保护资源是“随需而得”的
在设计安全方案时,要以这三个要素为基本的出发点,去全面地思考所面对的问题。
1.6 如何实施安全评估
一个安全评估的过程,可以简单地分为4个阶段:资产等级划分、威胁分析、风险分析、确认解决方案。
一般来说,按照这个过程来实施安全评估,在结果上不会出现较大的问题。这个实施的过程是层层递进的,前后之间有因果关系。
在这几个阶段中,上一个阶段将决定下一个阶段的目标,需要实施到什么程度。
1.6.1 资产等级划分
资产等级划分是所有工作的基础,这项工作能够够帮助我们明确目标是什么,要保护什么
在互联网的基础设施已经比较完善的今天,互联网的核心其实是由用户数据驱动的——用户产生业务,业务产生数据。互联网公司除了拥有一些固定资产,如服务区等死物外,最核心的价值就是其拥有的用户数据,所以——互联网安全的核心问题,是数据安全的问题
做资产等级划分的过程,需要与各个业务部门的负责人一一沟通,了解公司最重要的资产是什么,他们最看重的数据是什么。通过访谈的形式,安全部门才能熟悉、了解公司的业务,公司所拥有的数据,以及不同数据的重要程度,为后续的安全评估过程指明方向。
当完成资产等级划分后,对要保护的目标已经有了一个大概的了解,接下来就是要划分信任域和信任边界了。通常我们用一种最简单的划分方式,就是从网络逻辑上来划分。比如最重要的数据放在数据库里,那么把数据库的服务器圈起来;web应用可以从数据库中读/写数据,并对外提供服务,那再把web服务器圈起来;最外面是不可信任的internet。
这是最简单的例子,在实际中会遇到比这复杂许多的情况。比如同样是两个应用,相互之间存在数据交互业务,那么就要考虑这里的数据交互对于各自应用来说是否是可信的,是否应该在两个应用之间划一个边界,然后对流经边界的数据做安全检查。
1.6.2威胁分析
信任域划好之后,我们如何才能确定危险来自哪里呢?
在安全领域里,我们把可能造成危害的来源成为威胁(Threat),而把可能会出现的损失成为风险(Risk)。风险一定是和损失联系在一起的。
什么是威胁分析?威胁分析就是把所有的威胁都找出来。怎么着?一般是采用头脑风暴法。当然,也有一些比较科学的方法,比如使用威胁建模帮助思考。
STRIDE模型,最早由微软提出
在进行威胁分析时,要尽可能地不遗漏威胁,头脑风暴的过程可以确定攻击面(Attack Surface)
在维护系统安全时,最让安全工程师沮丧的事情就是花费很多的时间与精力实施安全方案,但是攻击者却利用了事先完全没有想到的漏洞(漏洞的定义:系统中可能被威胁利用以造成危害的地方。)完成入侵。这往往是由于在确定攻击面时,想的不够全面而导致的。
所以威胁分析时非常重要的一件事,很多时候还需要经常回顾和更新现有的模型。