一、其书
| 书名 | 《安全之美》 |
|---|---|
| 作者 | Andy Oram / John Viega |
| 出版社 | 机械工业出版社 |
| 出版时间 | 2011年4月 |

二、摘录
inBox
日志管理工具将能够使用我希望在未来采纳的日志标准。当今在日志标准化方面所付出的越来越多的努力(例如MITRE的公共事件表达式CEE)首先将导致日志标准的创建,最终导致它们被采纳。这可能需要几年的时间,但是对将会混乱不堪的日志世界实现部分的有序。 但是在与日志有关的难题“改善”之前,接下来几年情况很可能会“恶化”。
- 观察缓慢出现的日志标准化行动和快速增长的新日志类型(例如各种应用程序所记录的消息日志)和新日志用户这两种趋势之间的竞争是非常有趣的。
- 开发像CEE这样的可信任的实用日志标准将需要几年的时间,并且需要很多人的努力。标准的采纳也是一个很大的困难,因为存在太多的遗留日志系统。
- 理论上,利用操作系统日志的概念听起来很重要,但遗憾的是,这些日志本身的价值非常有限。日志一般是有局限性的,系统中的大多数日志用于记录一组有限的活动以及预期的条件和错误。考虑到大多数漏洞会显式地绕过操作系统内部的一些控制,我们可以合理地预计它的日志记录肯定是不完整的,甚至根本就没有被记录。
根据我们对世界上数百个企业的监测,我们对得到验证的事件进行了检查,确定了哪些发现归功于对它们的检测。根据我们的分析,被确认的事件中只有32%来自于IDP的警告。
- 在检测安全事件时过于依赖一种技术或一种日志来源。
- 事件检测模型缺乏弹性所存在的危险是常常会无意识地忽略有些事件,而往往在自己的信息资产受到真正的损害之后才会发现检测的覆盖率上的空隙。下面是一些真实的事件例子,它们可以测试出安全从业人员在事件检测模型上的弹性:
- 攻击者通过一种新的还不存在匹配签名的攻击或其变种对主机发起攻击。
- 看到攻击痕迹的不同部分的能力越全面,发现事件的可能性也就越大,即使是在不太理想的情况下。
- IDP设备不太可能对第3个连接发出警告,因为这次流量看上去是极为普通的。但是,当这个连接紧随这次攻击之后发生时,就强有力地证明了这次攻击是成功的,因为在入侵之后发生了连接到攻击者的FTP会话。对于经常受到攻击的Web服务器而言,分析师如果只参考IDP警告,就经常需要猜测攻击是否成功。
- 简单地通过在IDP日志中增加额外的与上下文有关的信息,可以把检测率大约提高40%。
- 考虑到恶意负载尝试在入侵成功之后所采取的最常见活动之一就是搜索其他存在漏洞的主机,光凭这个技巧就可以使企业内部的攻击检测率增加大约66%。
- 如果能够知道Internet上那些恶意系统或地址名,无疑会有很大的帮助。作为托管安全服务供应商,我们的工作由于能够看到大范围的恶意攻击而获益良多。只要我们的一家客户能够根据一次事件就把相应的IP地址标识为存在恶意,其他所有客户也能从中受益。这个适用于Internet安全的“邻居监测程序”可以快速确定犯罪分子的存在。(IOC)
俗话说:万变不离其宗(西方谚语:换得越勤,变得越少)。在信息安全领域,技术变革的步伐极为迅速。一旦“好人们”跟上队伍,“坏人们”就会加速前进,采取新的攻击手段。但是在信息安全领域,有一种说法总是对的,那就是“换得越勤,变得越少”。
安全是一项最为激动人心的职业。它并不枯燥,也没有太多的官僚主义,更没有太多的约束。事实上,它和其他技术一样充满着想象力。
- 对于安全来说,美体现在其简洁而又优雅的设计上,它是在系统设计初期就把安全作为一个重要的目标来考虑的产物。在设计合理的系统中,安全是不可或缺的一部分,它贯穿于系统的设计、构建和测试过程;它又是轻量级的,适应性强,能够让整个系统在面临不断变化的需求时仍然保持灵活。如果把安全作为马后炮来对待,或者是在独立于整个系统的设计需求之外进行开发,那么它经常会是丑陋和死板的。
- 与此形成鲜明对比的是,本应肩负起保护数十亿美元的财富,确保行业秘密的安全免遭商业间谍的窃取,隐藏军事计划使它远离全球恐怖分子的肮脏触角等职责的信息安全管理计划,往往是由Excel电子表格、Word文档、自行编制的脚本、备忘笺、电子邮件系统、咖啡杯壁上所张贴的备注以及走廊上的谈话这样杂七杂八的方式完成的,其原始程度不亚于第二次世界大战时用于破译密码的Rube Goldberg机(英国人的叫法是Heath Robinson机)。
我从这个事情中认识到,我(包括安全领域的绝大多数实干家)受到“安全只是它自己的事情,它并没有被看成是一个不同目标的副产品”这个功能锁定的困扰。正如经常被事实所证明的那样,构建高效和具有良好定义的需求也可以增强安全。
从文化上分析,安全专业人员需要模拟医学专业人员,改变工作方式。安全必须开发一个生命体征系统和通常接受的度量指标,能够被理解并且做到“足够好”。
- 当你可以对自己所论及的东西进行度量,并可以用数字表达它时,你就对它有了相当程度的了解。当你无法对它进行度量,无法用数字表达它时,说明你对它缺乏了解,也就无法达到满意的程度。它可能是知识的起点,但你觉得很难把它推进到科学的状态。
- 为了对一项IT资产中的一个漏洞进行评估,显然应该考虑漏洞的危险程度、该资产的使用情况以及连贯性(或通用性)。
- 和安全一样,健康也是为了实现某些缺乏的东西,即由于精神上或身体上的不适而寻求健康监护,就像由于机密性、完整性或可用性不足而寻求安全一样。
- 在医学和IT安全中,前面那些问题是没有办法回答的。用科学术语表示,它们是不规范的(这已经是客气的说法了)。
- 尽管病人会问:“我的健康程度如何?”但他们知道这实际上是一个无法回答的问题,多数医生只会给出一个相对谨慎的回答,例如“目前看来一切正常”。如果病人还想究根问底,医生可能会再加上一些套话,例如“您的生命体征非常正常。您的所有测试结果都是正常的。您并没有超重,但您最好能够戒烟。”他们只是提供了一个总结,列出了一些不包含权重的正面或负面事实。这些事实都直接或间接来自这些度量指标。在有些情况下,如果病人坚持询问,他们会使用像胆固醇和骨质疏松这种专门用来应付门外汉的医学术语。
- 对于顾客而言,确定一个巨无霸是否够热是件很简单的事情。但是,确定一个软件产品是否存在安全漏洞却需要不同层次的技术能力和表达能力。在开发软件时,并没有一种像使用温度计测量巨无霸的温度这样的标准方法确定软件是否存在漏洞或者是否还存在更安全的开发方法。
当经理们负责跟踪和报告安全漏洞时,他们面临很艰险的选择。
- 报告问题是一把双刃剑,它既可以带来潜在的收益,因为上级可能会调拨专款解决这个问题。
- 它也可能对声誉造成损害,因为上级可能会追究为什么会发生这种问题。
- 这种声誉损害实际上类似一些(但不是全部)健康监护的情况。
- 如果一切运行正常,你甚至不会意识到自己已经得到了回报。
- 如果一个机构为了防止信息安全失败或错误所付出的开销小于该失败出现的概率乘以它可能导致的损失,这个机构就应该严肃考虑承担这个开销(或者采取其他合理的方法)。
在本章中,我将讨论这些另外的视角,看看它们是如何帮助我们深入到那些被称为安全专家的开发人员的思维中。
- 为什么要深入到开发人员的思维之中呢?原因有很多,但是在本章中,我们将把注意力集中在对代码的创建过程以及对编写代码的人们所施加的各种约束上。
- 在开发软件时很少会在需求中考虑安全的问题。大多数商业软件没有付出多大努力确认安全漏洞并在开发过程中对它们进行处理。
- 从安全的角度出发,这种问题常常会产生并不是最理想的系统。理解了代码完成时所处的环境、心理和哲学框架之后,我们更容易发现系统中包含可能被攻击者所利用的漏洞的区域。
- 习得性无助和无从选择、验证陷阱和功能锁定。
- 社会学家和心理学家发现人类和其他动物存在一种现象,这种现象称为习得性无助。它来源于个人在实现自己的目标或者摆脱坏习惯时屡次遭受的挫折。最终,动物们会采取极端的毁灭性措施,就是从内心深处放弃尝试。即使在出现了实现目标的机会或者存在逃脱的良机时,动物们也会表现得很消极,无法利用这些机会。
- 向后兼容是现有的技术部署一直存在的一个问题。发现新的技术,并需要部署到不兼容的(甚至在本质上不同的)现有解决方案中。实现向后兼容可以采取不同的方法,有些方法较之其他方法更为安全。但是,一旦开发人员理解了需要让更旧、更缺乏安全的技术继续存活时,那些常常可以缓解这种风险的解决方案往往就不在考虑之列。
- 在一定程度上,安全是一种简单功能。一种策略越是复杂,它遭到失败的可能性也就越大。我们相信终端用户并不需要多重扫描、高级防火墙、进程监视、过滤器和阻塞器(它们是现代的反病毒系统的常见元素)才能获得安全。
https://baike.baidu.com/item/%E4%B8%9A%E5%8A%A1%E8%BF%9E%E7%BB%AD%E6%80%A7%E8%AE%A1%E5%88%92
业务流程管理计划(BPMI)(http://www.bpmi.org)定义了有效的BPM计划的5个原则。这些原则与信息安全无关,但可以被看成是强大的催化剂。下面列出了每个原则以及它们对安全的最重要潜在效果:
1.高可用性(High availability) 。它是指提供在本地故障情况下,能继续访问应用的能力。无论这个故障是业务流程、物理设施,还是IT软硬件故障。
2.连续操作(Continuous operations)。 它是指当所有设备无故障时保持业务连续运行的能力。用户不需要仅仅因为正常的备份或维护而需要停止应用的能力。
3.灾难恢复(Disaster Recovery)。它是指当灾难破坏生产中心时,在不同的地点恢复数据的能力。
- 客户端蜜罐技术
- 在IT安全领域,对客户端漏洞攻击的理解要比对服务器端的理解大约滞后5年。作为一种产业,我们在最近才开始更好地理解客户端的漏洞攻击是怎么发生的。显然,还有大量的工作需要完成,我相信Honeyclient技术将成为这个过程中的一个重要组成部分。共享代码和结果将是一个关键的前进步骤。
quote
我决定把注意力放在教导开发人员创建安全的代码,而不是在代码完成开发、测试和实现之后把大量的金钱花在渗透测试服务上。
- 完成课程并通过考试的开发人员便被确认成为一个新建立的由顶级开发人员所组成的社区的成员,并接受明确的责任,向他们的同事灌输与安全有关的信息。
- 有了一个相对较为成熟的应用程序安全计划之后,Acme决定解决现成的商业软件(简称COTS)的安全控制问题。和大多数公司一样,Acme在业务和工作站软件方面对外购软件的依赖性不断增加,我们无法在软件实现之前进行对它们安全审查。 在Acme内部,很多人对于商业软件是否能够采用任何安全控制也存在大量的怀疑态度。
- 当我们向软件开发商提出安全需求时,Acme所接到的最常见的抱怨之一是最大的商业软件供应商之一(这家公司恰好位于华盛顿州的雷德蒙德市)并不期待遵循Acme的需求,这具体取决于开发商的市场规模。
- 每个采购软件的机构,不管是大型的还是小型的,都有机会把相同类型的逻辑应用于采购过程,要求开发商证明它们通过三种常见类型的漏洞检测控制(静态、动态和手工)来遵循安全需求。
在“互联网爆炸”的绝佳时机,许多公司都把关注投向了市场营销机遇或者是如何能让自己的产品拥有与众不同的特性。这种单一的关注意在占有市场份额,而且大都使公司迈向了大规模的“首次公开招股集资”(Initial Public Offering,IPO)。
- 遗憾的是,许多公司都不觉得核心“特性”(即质量、可靠性、有效性、可维护性、安全性和可用性)是市场区分因素,而是把重点放在领先于竞争者并在市场上占有先机这上面。健壮的系统架构、安全性、设计、开发、测试和部署常被视为影响产品快速进入市场的不利因素。虽然有学术与业界的研究都表明这种方法的隐患,但是加快市场占有率的策略还是居主导地位。关键的战略决策是由把握市场机遇来驱动的,而不是由牢固的工程实践。
- 在科技泡沫破灭之后,市场上那些设计不当、粗制滥造的产品对广泛的IT界的影响就很明显了。受此危害的公司没有办法来清除他们的产品。
- 这些最终产品将会有很高的保修和服务成本,不但减少了企业利润,而且产品中的质量、可靠性和安全性问题也损坏了朗讯一贯的出品高质量产品的声誉。
- 历史的经验显示,软件供应商在发布核心功能以满足顾客的上市需求方面非常在行。但是,消除安全漏洞从来没有成为显式需求。
** 我发现那种“快速而又随意(quick and dirty)”的方法仍然用于安全领域,对此非常关心。**
在本质上,我相信信息安全是一个长尾市场,我提供了3个标准来支持这个说法:
- 每个业务具有多个流程。
- 不同业务中具有相似名称的流程实际上可能是高度自定义的(没有两个业务是相同的)。
- 许多流程对于小众用户而言是唯一的。
2004年后期,英国IT新闻网站The Register[3]受到一个在用户计算机上安装恶意软件的漏洞的攻击。这种恶意软件显示弹出窗口、跟踪用户的详细行为、甚至把用户的计算机变成转发垃圾邮件的“肉鸡”。我恰好对这个漏洞进行了测试,发现它至少安装在十几个不同的程序中,涉及数百个文件和数千个注册项[4]。在2005和2006年所出现的其他类似的漏洞攻击也使用了类似的策略,以降低越来越大的负载
出纳员需要承担不小的风险。有经验的出纳员很少只使用一个账户,而是常常拥有好几个用虚假身份证明开设的不同账户。好的出纳员常常可以要求分享很大一块市场利润。没有掩护账户和出纳员的参与,地下经济只具有学术研究的价值。
- 消除地下网络经济并不是一个小组、一个机构甚至一个国家能够办到的事情。它需要许多实体和机构的合作,包括用户、研究人员、安全机构、执法部门以及商业协会和政府所组织的力量。
- (2008年)在美国,对消费者的账户所发生的任何欺诈行为,消费者本人只承担前50美元的损失。一般情况下,为了保障消费者的基本权益,发行银行还会放弃这50美元。
- 身份认证最好是由持卡人账户的管理者来执行,在大多数情况下是发行银行。这样做的理由如下:发行方已经拥有这些信息,因此让发行方存储这些信息并不会增加系统失败的风险。另外,发行方在认证的专业知识和流程方面投资了大量的资源,能够正确地执行认证。最后,发行者的数量要远远少于其他角色。
如果你的职位允许,公平地奖励你的测试团队,待遇和奖励明显差于开发团队的测试人员一有机会就会跳槽到更绿的牧场,留下来的也愤世嫉俗、失去激情。
- 一个“真正的”测试人员一定会把这些已有测试看作自己的职责范围,重新考虑其中的想法,提出问题,充实和改变测试,探究原来的分析没有考虑到的地方。
- 一样的道理,测试需要远不止是健康的身体和一点智力,它也是有技术含量的。你会发现如果对测试人员报以对开发人员、数据库管理员等人同样的尊重,就会促进建立一个能吸引和留住顶尖人才的测试团队。
巴林银行案。结果,在侵害过程时,他扮演了三个角色:总经理、交易员和期货和期权结算的实际领导(因为他的过去经历)。对于任何交易操作而言,职权的分离是一项基本原则。但在BSS,这个原则却是不存在的。巴林银行直到4年以后才发现这个事实,但此时已经为时过晚。
确定安全实践的投资回报率(ROI)已经成为某种类型的圣杯,安全专家们试图通过它来吸引公司管理层(他们都阅读过Drucker的著作或者从同伴那里吸引了类似的想法)的注意力。
- ROI的问题在于安全就像在金矿里挖金子一样,不同的淘金人所收获的成果可能有天壤之别(有些人挖了一年之后成为百万富翁,有些人挖了20年还是一贫如洗),但是他们的成功无法归功于他们所使用的工具。与铲子和推土机相关的度量指标只会令人感到困惑。
- 简而言之,ROI这种衡量方法在计算高风险的投资类型时非常麻烦。按照我的想法,当前只有工具推销商才会把安全的投资回报率放在嘴边。
- Ashenfelter是普林斯顿的一位统计专家,他非常喜爱葡萄酒,但他被葡萄酒的估值和品级活动中出现的浮华所困惑,就像我也被如今风险管理的浮华所迷惑一样。20世纪80年代,葡萄酒评论家们主宰了这个市场,他们根据自己的声誉和鉴赏力对葡萄酒的质量作出预测,很少考虑其他因素。反之,Ashenfelter在法国波尔多地区进行了细心调研,开发了一种关于葡萄酒质量的静态模型。
- **对于安全领域而言,Orley Ashenfelter的工作最有价值的部分是他所提供的信息的时间。**大多数葡萄酒至少必须贮藏18个月才能品味以确定它的质量。这对于葡萄园和投资商而言都是个很大的问题。但是,通过Ashenfelter的公式,可以在葡萄收获时就预测葡萄酒的质量。这个方法可以应用于安全领域,回答诸如“如果我让软件开发人员接受数量为X的培训,它对最终系统的安全会产生什么效果?”
- 当然,只有当我们像Ashenfelter一样已经拥有大量的前期数据可以进行解析时,才能够使用这种类型的安全经济学。
- 当前阶段正是度量指标方兴未艾的时候,这个阶段将会产生大量的数据,未来的超级数据解析阶段就可以对这些数据进行分析。但是,社交网络很可能成为催化剂,促使参与者共享数据,创建海量的数据仓库,可以供我们分析信息和建立模型。安全经济学可能会提供一个平台,公司可以借此证明各种类型的安全成本的效果
把这个方案应用于Amazon、eBay等Web上最大的商家后,这些“填满的cookie”可以产生大量的佣金支出,因为即使没有广告的鼓励,仍然有非常多的用户在这些顶级商业网站上进行购买[11]。所有的迹象表明,问题的数量还是相当可观的。例如,eBay认为这样的欺诈非常严重,值得联邦立法。
- 在过去的4年里,我发现了上百个使用这些伎俩的假冒CPA附属网络[13]。欺骗者的数量最终超过了我手工记录这些事件的能力,因此我在去年创建了一个自动化系统自动发现这类事件。
为应付难度高、压力大甚至令人沮丧的日常工作,医护人员通常拥有令人不寒而栗的奇特幽默感,而你也欣赏他们的这种行为。
圣诞节期间,我在家里安装了一套全新的Windows Home Server。突然之间,我们都沉浸在数字世界里:我们可以通过Xbox在卧室的电视里上观看数以千计的孩子照片和视频。散布在家里的六台计算机和一台中央服务器放在一块,整个家庭感觉被连接在一起。
- 和中央服务器放在一块当然很好,但是如果我们遇到了抢劫,有人偷走了我们的PC和服务器,那情况可就糟糕了。
- 现在,让我们进入Web服务和云计算的新世界。为了缓解灾难性系统损失的风险,我为家庭服务器编写了一个简单的插件,它利用了Amazon的Web服务平台。系统根据设定的间隔把我所选择的目录复制到服务器并通过Web服务连接到Amazon的S3(简单存储系统)云基础设施。
接着,我们可以从大量的数据集合中查找模式并推断它们的含义,对安全事件作出预测而不是对它们作出反应。我们需要正确地理解这个结论:我们将能够根据一个特定的事件预测第三方事件的发生概率。这就允许我们提供上下文敏感的安全或者作出与合理措施相关的决策,以阻止麻烦的发生。
激励与救火队长。场景1:你正在河边野餐,突然发现有人在水里痛苦地挣扎。你跳入水中,把他拉回岸边。附近的镇长对你的义举大加赞赏,并向你颁发了一枚奖章。然后,你回到河边继续野餐。几分钟后,你又看到第二个人在水中挣扎。你再次进行救援,并且又因此得到了一枚奖章。又过了几分钟,又有第三个人出现在水中,你继续救援,又得到了第三枚奖章。一整天的时候,这样的事情反复发生。到太阳落山的时候,你收获了大量的奖章和荣誉。
- 当开发人员发现上级用一种衡量指标对他们进行评估时,他们就会非常努力地采取措施,并使自己的表现达到这个衡量指标的要求,即使这些活动实际上对项目并没有帮助。
- 如果你手下的测试人员发现你最看重的是发现缺陷,他们就会成为称职的缺陷发现者。如果你不重视预防,就不会有人做这种事情。对于其他许多安全学科而言,情况也是这样的,例如跟踪事件、漏洞和入侵。
- 虽然Peter Drucker的著名格言“如果你无法衡量它,你就没法管理它”听上去就像是老生常谈,但仍常常被优秀的安全管理人员挂在嘴边。
当我们讨论平台时,我们当然需要小心谨慎。任何术语只要具有产生更多销售的潜力,就都会被媒体所劫持,它的本质常常会被冲淡。有相当多的工具被宣传为安全平台,但很少是名副其实的。——零信任
Basis
安全度量指标是把IT安全转变为科学而不是艺术的关键前提条件。
- 安全是为了评估和降低风险,而不是让入侵变得不可能。 越简单的方案往往是越有效的。
- 尽管“通过隐藏实现安全”被研究人员所轻视,但是通过不合常规的命令约定对敏感文件和数据进行伪装也不会有什么害处。
人类在学习他人经验方面具有独到之处(在所有动物中),在表现自己的不情愿方面也是表现突出。
在信息安全领域,没有任何解决方案能够及时防止100%的攻击。如果你遇到有人在这方面夸下海口,你就要提高警惕。
如果无法防止一个侵害行为,接着能够采用的最好策略就尽快检测到它。
- 尽管这个度量指针显然很有价值,可以作为风险的主要指示标志,但它需要几个前提条件。首先,需要安装传感系统,检测像漏洞、不良的配置、未修补的软件这样的缺陷。其次,当一个漏洞被发现时,必须保存记录,跟踪它被发现的时间以及它被有效修补的时间。我们不清楚TJX是否存在任何检测已部署的无线接入点的机制。就算有,它们的配置也肯定大有问题。因此,它们从来不曾被修补,所以MTTR相当于无限长。
安全需要花钱,并且只能预防未来潜在的损失。他们从来没有从安全也可能制造收益这个角度去思考问题。
- 站在我的角度,尽管当时还没有发生广泛的DDoS攻击事件(事实上,当时还不存在DDoS这个词),但我还是意识到了不仅针对ISP的服务器而且针对背后的顾客的网络资源饿死型攻击的可能性。我知道对顾客的攻击将很难被诊断,并且难以快速作出反应,但是我完全无法说服ISP。
三、番外
想读:2019-12-15
在读:2021-02-05
读过:2022-02-20
- 致谢怎么写
- 本章献给我的母亲Margaret Curphey,她于2004年在法国南部的家中因癫痫而去世。在我成长的岁月里(坦率地说,我有大量的时间不务正业),她总是鼓励我想得长远一点,并帮助我认识到只要专心致志,生命中没有什么是无法实现的。她做出了许多牺牲,使我最终在信息安全领域取得了一席之地(尽管她在晚年不再抱有希望)。 - 她总是说,眼光远大总是好事情,但还必须放手实干。当然,我还需要向我的妻子Cara以及年轻的小黑客Jack、Hana以及Gabe表示谢意,感谢他们的持续支持和耐心。 - 我在NASA、Reliable软件科技公司和Bell实验室的工作经历是很有益的,它帮助我形成了一个完整的构建“特性”的生命周期的观念,也助我完善了管理项目和安全风险的策略。**我非常敬重曾与我一起工作过的人,感谢他们一直帮助我不断学习进步。**
- Fuzz技术,原来是1996年就出现了的呀!
- 期权模型,此消彼长。赚的是:不太波动时的钱
- 信息安全很少被认为是竞争性的优点(事实上,对遭受严重数据泄露事件的公司的股价走势研究显示,股价与数据泄露的相关性极低,因此有人可能会认为这并不是缺点),大多数商业都认识到合作的优势远远超过了它的预想缺点或真实缺点。
联想起一件有意思的事:
- 2019.04.22(周一),bilibili源代码泄露(go-common)
- 事情发生后,BILI股票连涨两周(美股上涨用绿色表示,下跌用红色表示,如下图,[点击链接查看](https://stock.finance.sina.com.cn/usstock/quotes/BILI.html?sudaref=www.bing.com&display=0&retcode=0))

ZeroTrust
安全并不神秘,并不需要变得很复杂才会显现效果。你可以做个深呼吸并开动自己的脑筋。和本章开始时我们的主角一样,你所需要的是一套优质盔甲(一个简单的软件防火墙、虚拟化和紧急镜像)、一把锐利的宝剑(检出率很高的反病毒扫描程序)和一个简单有效的计划,以便处理自己的旅途中很可能遇到的威胁。
Anton拥有Stony Brook大学的博士学位。他的个人网站是http://www.chuvakin.org。
Anton还在业余时间通过他的博客http://www.securitywarrior.org发表了许多关于各种安全主题的论文。
读者可以通过他的博客http://cleartext.wordpress.com了解他的更多著作。
在没有工作任务的时候,Jim继续作为发言人,在美国和其他国家进行了数百场安全相关的内部预映、会议、研讨班和论坛上发言,涉及的话题从身份盗窃到全国范围的网络攻击。他的个人网站http://www.stickleyonsecurity.com以安全提示和最新警告闻名。
最直接的解决方案是对新技术的健壮性和安全强度作出妥协,以匹配遗留解决方案。在本质上就是允许现代技术和遗留技术共存。当开发人员在迁移遗留代码的漏洞时想不出可以做什么(或更糟,想不出应该做什么)时,就出现了习得性无助。遗留代码对他们施加了压力,他们觉得这不应该在他们的职责范围之内(即使把新技术降低到旧技术的水平而影响了它的安全性)。对于公司的决策,他们觉得不知道做什么好,感觉力不从心。 1.
Windows NT的开发人员意识到了LANMAN散列的脆弱性,并使用一种更健壮的算法进行密码信息的存储,称为NT散列。它维护字符的大小写情况,允许密码长于14个字符,并使用更现代的MD4信息摘录产生它的16字节散列值。
测试人员清楚地知道不管发现和解决多少问题,软件代码里总还是潜伏着一些问题,所以他们一般不太情愿盖那个质检合格的红印。
如果登录两端的系统都是使用新散列函数的新系统,就可以使用更健壮的NT散列执行实际的身份认证。但是,在发送更健壮的新散列表示形式时,必须同时发送更旧、更脆弱的LANMAN散列版本。
由于最大限度地照顾了向后兼容,而忽视了它所产生的复杂后果,Microsoft完全破坏了更新的安全技术所带来的技术优点。
简而言之,新的现代安全解决方案的问题来自于遗留系统的脆弱LANMAN密码,因此把整体安全性能降低到最小公分母的水平。过了没多久,在接收到太多的负面安全报道之后,Microsoft引入了在默认情况下只发送一种(或另一种)散列值的功能,而不是两者都发送。后来,他们甚至停止了在本地系统中同时存储LANMAN散列值和NT散列值的做法。
站在安全的角度,现在问题变成了如何在实现向后兼容的同时不降低新系统的安全性。
仔细查看了OS X的内核和userland空间之后,我可能断定它还是存在许多安全漏洞(不论是远程还是本地)需要指出和修正。和Microsoft刚开始提供NT时一样,Apple也享受了一段蜜月期。它很少成为攻击目标,因为它的市场份额非常小。但是,随着它的市场份额不断扩大,可以预想它所受到的攻击也会不断增加……
大量的审查显示,大多数网络交换机的生产商有意把交换机设计为“失败时打开”而不是“失败时关闭”。
在这里,我们讨论了生产商所面临的习得性无助以及顾客的无法选择。习得性无助来自于生产商对于它能够教育顾客并让顾客获得选择权这个价值所采取的消极态度。它与前面所讨论的遗留系统的兼容性解决方案有相似之处。生产商相信为顾客提供这种额外的可配置性只会让顾客感到困惑,使顾客把事情搞砸或者向生产商拨打大量的服务支持电话。
大约1997年8月的某天,我和Hobbit(我的一位朋友,是一位非凡的黑客[1])与Microsoft的一位执行官和一位资深工程师[2]共进晚餐。他们想知道我们为什么能够这么轻而易举地在Microsoft的产品中找到这么多的缺陷。虽然有些细节记得不是特别清楚了,但我相信当时我们是非常诚恳地进行了回答,表示我们的方法是向系统输入一些随机的垃圾。这是一种简明的缺陷和安全测试技巧,有时称为“模糊(fuzzing)”,现在主要的计算机科学出版物都记录了这种方法。
1996年爱
他们从来没有考虑过他们的应用程序可能被部署在恶意环境中。这种善良的观点来自于另一个可能被恶意攻击者所利用的心理特征:确认陷阱。
测试人员容易不信任人,这是从实践经历中学来的,别人总是告诉他们模块X不需要测试,或代码Y“没动过”,这种信息错的次数多到数也数不清了。所以就算你告诉测试人员草是绿的他们也要亲自过目才敢相信。测试人员是挑剔的,这个习惯也贯穿在他们生活的其他方面。
换句话说,输入决策的创建者同时又是决策的审阅者的情况并非罕见。
这些报告试图理解网络威胁是如何演变的,但它们却是根据以前的技术进行推断的,显得毫无新意。技术已经发展了,但模型却没有发展,仍然远远落后于现实。因此这些报告所描述的场景对于过去的某个时期而言可能是准确的归纳,但对于当前而言却是过时的和不准确的。
这些访问者就是从各个三字母机构接受报告的人。他们意识到这些机构的职业阶梯很容易导致确认偏见。他们被这些机构的官员所说服,以为我们的成果需要大量的资助,只有特定类型的对手才可能实现。
遗憾的是,很多人并不是像他们一样能够或愿意寻找令自己不安的证据来否定自己的假设。在测试软件和系统时,考虑工程师、开发人员和测试人员可能工作的环境以及他们可能具有的先入为主的想法是非常重要的。
功能锁定就是指不能理解一种工具的最常见用法或“默认”用法之外的其他用法。如果一个人认为一种工具只有一种可能的用法时,我们就把它称为“锁定”。
现代的反病毒软件已经被发现包含了各种类型的常见编程漏洞,例如局部缓冲区溢出、未检查的执行功能以及在自动更新活动中缺乏认证等。因此,安全软件也可能为攻击者开启大门,而不是起到防御作用。
这些策略在我已经检查过的近海石油公司中使用,以便最大限度地提高性能,并因此增加了利润。
为什么电力企业不采取与石油公司相同的做法呢?首先,电力公司是受控制的垄断企业。这个行业并不存在什么竞争,因此它们就没有动力设计优化和严格结构化的环境。
石油公司的故事证实了我在1.3.2一节中对ISP所作的评论。大多数组织把安全看成是一种令人不快的成本,至少到目前为止它们大都是这样想的。按照这种方式实现的安全很可能是不充分或糟糕的。
同样,安全专业人员可以把克服他们对安全的功能锁定作为一个崇高的目标,直到觉得安全本身值得花费大量的资金,而不是把安全看成是一种偶然的副产品。
我只分析了那里的一小部分石油和电子系统。这里所归纳的区别是出于比较的目的,以说明功能锁定以及它是如何影响公司对安全的看法的。石油行业也有部分企业存在配置不正确的系统和环境,这和所有大型行业一样。
·我们可以保证最初的决定并不会影响创造性的思维,以克服习得性无助和无从选择。 ·我们可以寻找不同人群的输入并强制自己试图推翻自己的假设,以克服确认陷阱。 ·我们可以通过寻求工具的替代用法并通过其他路径来实现目标,以克服功能锁定。 所有这些
需要实践。但是对它们进行实践的机会每天都会出现。如果更多的人致力于此,这种常常称为非比寻常的方法将越来越不稀奇。
当然,这也是要求企业对证书进行良好管理的理由之一。数字证书是企业能够让最终用户对网站的安全持有信心的少数保障之一。如果连证书都没有维护好,那么很容易导致别人对其他方面的安全产生怀疑。
而无线技术故意去掉了我们习以为常的物理安全层,使得网络流量会泄露出去,甚至能够跨域有形的围墙和围栏之类的物理界限。
比如,项目组决定解决14个缺陷,推迟另外32个。但是测试人员选择不报告324个缺陷,因为开发团队“从不解决”字段错误,这意味着项目经理和上层的管理者正在根据错误、不全面的信息作决策。在这个例子里,用户界面就不能在万众瞩目的黄金时段隆重登场。
解决WEP问题,即解决从嗅探到的数据包中快速提取密钥的漏洞。
Nice
大量的增长来自于同种恶意软件的变型数量的增加。也就是说,一次写成的恶意软件可以呈现为多种形式,以逃避签名检测。事实上,当前恶意软件生产者发布恶意软件的频率以及恶意软件对自身进行变形的方法导致基于签名的检测方式几乎毫无意义。
对于内部广告购买商,这个动机甚至可能更加明显。例如,一位CPA程序经理(“广告联盟经理”)所得到的报酬可能是5万美元加上CPA程序年度增长额的20%。如果一个程序的毛收入从50万美元增加到80万美元,这位经理可以得到非常可观的6万美元的奖金。但是,如果这位经理发现了5万美元的欺诈金额,他的奖金就将减少1万美元。即使对于最具奉献精神的员工,这也是一剂难以下咽的苦药。毫不奇怪的是,许多广告联盟程序甚至无法拒绝即使是最臭名昭著的罪犯。
例如,如果Bob相信Charlie所签名的密钥是合法的,那么Charlie可以签名Alice的密钥并且Bob将会信任这个密钥,因为他信任Charlie。 信任模型是一种通用方案,对信任进行形式化,使计算机可以自动进行信任计算。下面我们讨论信任模型的基础知识。
Bob相信Charlie得到了授权,可以进行正确的签名。有许多公司提供了类似Charlie这样的角色的业务。例如,GoDaddy和VeriSign就是两家受到广泛信任的认证中心(CA)。它们受到信任的原因是它们在创建证书时所遵循的做法。它们所采用的有些做法是使用一些数量较少的密钥,对信任进行扩展。这些密钥本身保存在根证书中(它们是自签名的证书)。根证书中的密钥对其他证书中的密钥进行签名。
读者可能会问:“我们怎么才能信任根证书呢?”答案是:直接信任。Web浏览器内置了一组根证书。
找一些能干的老师和专家说说他们的想法,扩展你团队的能力,把测试人员派去参加会议,促进一种学习的氛围,允许他们在小项目上尝试新的技术。
这是一个重要的概念:层次式信任最终是从直接信任扩展而来的。
读者可能会问:“我们怎么才能信任根证书呢?”答案是:直接信任。Web浏览器内置了一组根证书。我们可以把它们看成是合法的,因为它们是我们所安装的软件的组成部分。这是一个重要的概念:层次式信任最终是从直接信任扩展而来的。
信任网络很自然产生的一个相关属性是密钥的签名会获取一定的威望。它们就像亲笔签名一样,具有一定的社会价值。 在这种社会价值中,有些是可以简单操作的。如果你好不容易找到几个自己重视的人对自己的密钥进行了签名[2]然后又得到一个新的密钥,就
得不再次获取所有这些签名。许多人保留密钥的时间要比密钥应该被保存的时间更长,因此这些密钥是由相应的社交圈子中具有影响力的人物所签名的,或者他们与密钥持有人之间的关系比较密切。
所有的PKI都需要一种撤销证书的方法。人是一种容易犯错的生物,他们有时候会失去对计算机和密钥的控制,系统可能会丢失或被劫持。因此,在密钥过期之前,必须有一种方法能够使它们失效。
honeypot是一种流行的用于获取高级知识的工具。它是一种专用的系统,故意成为新攻击的目标,当一次漏洞攻击获得成功时获取与此相关的详细信息。
由于现有的honeypot系统无法检测对这些漏洞的攻击,因此我们需要一种新技术,能够驱动客户软件,使它们能够检测新的漏洞攻击。这个概念就是Honeyclient。
当这个防火墙路由器在内部网络和DMZ网络之间进行传递时,会过滤Honeyclient流量。当Honeyclient被驱动到一个远程资源时,这个防火墙被配置为允许Honeyclient访问处理从远程资源提取所有内容所需要的最小资源集。Honeywall(https://projects.honeynet.org/honeywall)是Honeynet项目的另一个开源软件,它很好地满足了我们的需要,因此开发队伍的成员JD Durick把它集成到我们的体系结构中。
创建这种白名单始终是一种有趣的体验。开始测试已知的良好网站之前,我们并不知道在Windows XP环境内部的正常操作过程中会发生多少修改。
但是,签名的开发并不是本章的焦点,如果读者对这个话题感兴趣,可以参阅其他关于这个话题的书籍[1]。