确保不安全感

33岁的克雷格·斯宾塞(Craig Spencer)在治疗埃博拉病毒患者后于10月17日从非洲返回美国。 几天后,他的埃博拉病毒呈阳性反应。 每个人(特别是周围的人)和纽约人都感到关切。 纽约市市长走到媒体面前,向其公民保证-他们拥有世界顶级的医务人员以及最先进的医疗设备来治疗埃博拉病毒-并且他们为此做好了很多准备月。 当然,这可能会使大多数人平静下来。

让我再举一个例子。

当我的小女儿三个月大时,她曾经把手放在任何人的手上。 现在-她已经11个月了,她知道她的母亲是谁。 每当发现任何困难时,她都会不断哭泣,直到找到母亲为止。 她只有在母亲怀抱中感到安全。

当我们在计算机屏幕上键入密码时,我们非常担心,它会被我们的邻居看到。 但是–我们从不担心国家安全局(NSA)看到我们享有盛誉的商业电子邮件。 为什么呢 要么完全超出我们的控制范围,要么我们相信国家安全局只会利用它们来加强国家安全,而无其他选择。

我试图通过所有这些例子来说明,不安全感是一种感知。 它是由不良行为触发的感知。 不良行为反映了情况偏离正确性的程度。

这与感知和建立感知有关。 地球上没有100%安全的系统。 由于计算机处理能力的提高,在80年代和90年代开发的大多数密码算法现在都被破坏了。

正确性
在计算机世界中,大多数开发人员和操作员都担心正确性。 正确性与实现期望的行为有关。 您将$ 1000存入您的帐户,您会期望节省的钱会精确地增加1000。将文档发送到打印机,您会期望输出与在计算机屏幕上看到的一样。

安全性涉及防止不良行为。

如果违反了三个安全属性,它们可能导致不良行为: 机密性完整性可用性

屏幕截图2014年10月28日下午2.37.08
机密性意味着在静止和运输过程中保护数据免受意外收件人的侵害。 通过使用加密保护传输通道和存储,可以实现机密性。

完整性是对数据正确性和可信赖性的保证,也是对任何未经授权的修改的检测能力。 它可确保保护数据免遭未经授权或无意更改,修改或删除。 实现完整性的方法有两个:预防措施和侦查措施。 两种措施都必须照顾到传输中的数据以及静态数据。

使系统始终可供合法用户访问的系统是任何系统设计的最终目标。 安全不是要研究的唯一方面,但是它在保持系​​统正常运行中起着重要作用。 安全设计的目标应该是通过防止非法访问尝试来使系统具有高可用性。 这样做极具挑战性。 攻击(尤其是在公共终结点上的攻击)可能会有所不同,从在系统中植入恶意软件的攻击者到高度组织化的分布式拒绝服务(DDoS)攻击,都有可能。

2011年3月,RSA公司被违反。 攻击者能够窃取与RSA SecureID设备有关的敏感令牌。 这些令牌随后被用于侵入使用SecureID的公司。

攻击
2013年10月,Adobe公司遭到违反。 源代码和客户记录均被盗-包括密码。

在Adobe攻击发生仅一个月后,即2013年11月,Target遭到攻击,4000万张信用卡和借记卡数据被盗。

这些攻击怎么可能? 许多破坏都是通过利用相关系统中的漏洞开始的。 漏洞是攻击者可以利用一组精心设计的交互来利用其来实现不良行为的缺陷。 通常,缺陷是系统设计或实施中的问题,因此不能满足其期望的要求。

确切地说,流程是设计中的缺陷,而错误是实现中的缺陷。 漏洞是系统中的缺陷,它不仅影响系统的安全性,而且还影响系统的安全行为。

如果您遇到RSA 2011漏洞,则它是基于Adobe Flash Player中的漏洞。 当精心设计的Flash程序由易受攻击的Flash Player运行时,攻击者可以在运行的计算机上执行任意代码-实际上,这是由于代码中的错误所致。

为了确保安全,我们必须消除错误和设计流程,并使它们更难以利用。

2010年,人们发现,自2006年以来,一帮装有强力吸尘器的抢劫犯从法国Monoprix连锁超市偷走了超过60万欧元。 最有趣的是他们的方式。 他们发现了系统中最薄弱的环节并对其进行了攻击。 为了将钱直接转移到商店的现金库中,收银员通过气动吸管滑动装满钱的管子。 强盗意识到,只需要在行李箱附近的管道上钻一个洞,然后连接一个真空吸尘器就可以收钱。 他们不必面对保险箱。

最弱
要解决的问题是,适当的安全设计应包括系统中的所有通信链接。 您的系统没有比其最薄弱的环节更强大。

防御
对于为了安全性而被加强的任何系统,首选分层方法。 这也称为深度防御。 大多数面临恐怖袭击危险的国际机场在其安全设计中都采用了分层的方法。 2013年11月1日,一个穿着黑衣服的男人走进洛杉矶国际机场,从包里拉出一个半自动步枪,开枪穿过安全检查站,杀死了TSA筛查员,并炸伤了至少两名其他人员。 这是第一道防线。 万一有人通过它,必须有另一个来防止枪手进入飞行并控制。 如果在TSA之前有一个安全层,也许只是扫描进入机场的每个人,它就会检测到这种武器并可能挽救TSA官员的生命。 层数和每层的强度取决于您要保护的资产以及与之相关的威胁级别。 为什么有人会雇用保安人员并使用防盗警报系统来保护空车库?

内幕攻击功能不那么强大,复杂程度也较低,但是非常有效。 从WikiLeaks泄露的机密美国外交电报到爱德华·斯诺登(Edward Snowden)关于国家安全局秘密行动的披露,都是内部攻击。 斯诺登(Snowden)和布拉德利·曼宁(Bradley Manning)都是内部人,可以合法地获取他们披露的信息。 大多数组织将大部分安全预算用于保护系统免受外部入侵者的侵害。 但据旧金山的计算机安全协会(CSI)称,大约60%至80%的网络滥用事件来自网络内部。

内幕
内部攻击被认为是军方日益增长的威胁。 为了解决这一问题,美国国防高级研究计划局(DARPA)在2010年启动了一个名为“网络内部威胁”(CINDER)的项目。该项目的目的是开发新的方法,以尽快识别和缓解内部威胁。

昧
Kerckhoffs的原则强调,系统应该由其设计来保护,而不是因为对手不知道其设计。 微软的NTLM设计已经保密了一段时间,但是在这一点上(为了支持Unix和Windows之间的互操作性),Samba工程师对其进行了反向工程,他们发现了协议设计本身引起的安全漏洞。 在适当的安全设计中,强烈建议不要使用任何自定义开发的算法或协议。 标准就像设计模式:已经在一个开放的论坛中讨论,设计和测试了它们。 每次您必须偏离标准时,都应三思而后行。

软件安全性只是计算机安全性的一部分或分支。 软件安全性是一种计算机安全性,它使用最佳语言,工具和方法来致力于安全设计和软件的实现。 软件安全研究的重点是“代码”。 大多数流行的安全性方法都将软件视为黑匣子。 他们倾向于忽略软件安全性。

屏幕截图2014年10月28日下午2.28.48
换句话说,它专注于避免软件漏洞,缺陷和错误。 尽管软件安全性与计算机安全性的其他领域重叠并互为补充,但其着眼点在于安全系统代码。 这种关注使其成为白盒方法,而其他方法则更像黑盒。 他们倾向于忽略软件的内部。

为什么软件安全对代码的关注很重要?

简短的答案是软件缺陷通常是安全问题的根本原因,软件安全旨在直接解决这些缺陷。 其他形式的安全性往往会忽略该软件,并围绕该软件建立防御措施。 就像城堡的城墙一样,这些防御措施非常重要,并且可以发挥作用。 但是,当软件缺陷仍然存在时,切割刀攻击者通常会找到一种绕过那些墙的方法。

现在,我们将考虑一些用于安全实施的标准方法,并了解其黑匣子性质如何带来软件安全技术可以解决的局限性。 我们的第一个示例是通过操作系统或OS实施安全性。 在1970年代初期,计算机安全作为一个领域逐渐发展起来时,操作系统就是重点。 对于操作系统而言,正在运行的程序的代码并不重要。 相反,操作系统会在乎程序的功能,即程序在执行时的动作。 这些操作称为系统调用,包括读取或写入文件,发送网络数据包以及运行新程序。 操作系统执行限制系统调用范围的安全策略。 例如,操作系统可以确保Alice的程序无法访问Bob的文件。 或那些不受信任的用户程序无法在标准网络端口上设置受信任的服务。

操作系统
操作系统的安全性至关重要,但是并不总是足够的。 特别是,程序中与安全性相关的某些操作的粒度太细,无法作为系统调用来协调。 因此,软件本身也需要参与其中。 例如,数据库管理系统或DMBS是管理数据的服务器,其安全策略特定于正在使用该数据的应用程序。 例如,对于在线商店,数据库可以包含针对客户和供应商的安全敏感帐户信息以及其他记录,例如根本不安全的产品描述。 由DBMS实施安全策略来控制对此数据(而不是OS)的访问。

操作系统也无法强制执行某些类型的安全策略。 操作系统通常充当执行监视器,该监视器根据当前执行上下文和程序的先前操作来确定是允许还是禁止程序操作。 但是,有些策略是无法实现的,例如信息流策略,如果不考虑潜在的未来行动甚至不采取行动,就无法准确地实施这些政策。 在这些情况下,可以与OS配合使用软件级机制。

另一种流行的安全性强制执行机制是网络监视器,例如防火墙或入侵检测系统或IDS。 防火墙通常通过阻止连接和数据包进入网络来工作。 例如,防火墙可能会阻止所有尝试连接到网络服务器的尝试,除了那些监听指定端口的尝试。 例如TCP端口80(Web服务器的标准端口)。 当在本地网络上运行仅供本地用户使用的软件时,防火墙特别有用。 入侵检测系统通过检查网络数据包的内容,寻找可疑的模式来提供更细粒度的控制。 例如,为了利用易受攻击的服务器,攻击者可能将精心设计的输入作为网络数据包发送到该服务器。 IDS可以查找此类数据包并将其过滤掉,以防止发生攻击。 防火墙和IDS擅长减少攻击途径并防止已知的攻击媒介。 但是两种设备都可以解决。 例如,大多数防火墙将允许端口80上的流量,因为它们认为这是良性的Web流量。 但是不能保证端口80仅运行Web服务器,即使通常是这样。 实际上,开发人员已经发明了SOAP,SOAP代表简单的对象访问协议(自SOAP 1.2起就不再缩写),可以解决除端口80以外的其他端口上的防火墙阻塞问题。SOAP允许进行更多通用的消息交换,但使用网络协议。

防火墙
现在,与我们的防火墙相比,IDS模式更细粒度,并且能够查看正在发生的详细信息。 但是,IDS也可能因攻击模式的无关紧要而被愚弄。 尝试使用更高级的过滤器来弥补这些差距,可能会减慢流量,攻击者可以通过发送大量有问题的流量,造成拒绝服务(即可用性下降)来利用这种减慢速度。 最后,考虑使用防病毒扫描程序。 这些工具检查主机上文件,电子邮件和其他流量的内容,以寻找攻击迹象。 这些与IDS非常相似,但是它们对文件进行操作,因此对性能的要求不那么严格。 但是,通常也可以通过对攻击媒介进行小的更改来绕过它们。

现在,我们以Heartbleed错误为例,总结了软件安全性与黑盒安全性的比较。 Heartbleed是为传输层安全协议或TLS的OpenSSL实现1.0.1版中的错误提供的名称。 通过让运行OpenSSL的越野车服务器返回其内存的一部分,可以利用此漏洞。 该错误是缓冲区溢出的一个示例。 让我们看一下黑匣子安全机制,以及它们如何对抗Heartbleed。

心
操作系统实施和防病毒扫描程序无济于事。 对于前者,利用窃取数据的漏洞利用通常授予已启用TLS的服务器的特权来窃取数据。 因此,操作系统看不到任何错误。 对于后者,该漏洞利用是在TLS服务器执行时发生的,因此在文件系统中不会留下任何明显的痕迹。 IDS使用的基本数据包筛选器可以查找漏洞利用数据包的迹象。 宣布Heartbleed后不久,联邦调查局(FBI)发布了snort IDS的签名。 这些签名应与基本漏洞利用相对应,但是漏洞利用可能能够应用分组格式的变体,例如分块以绕过签名。 在任何情况下,都很难确定成功攻击的后果,因为任何泄露的数据都将返回加密通道。 现在,与这些方法相比,软件安全方法的目标是通过防止或更彻底地减轻软件缺陷来直接解决问题。

威胁建模是一种系统的,系统的方法,用于识别系统部署中可能存在的安全威胁和漏洞。 首先,您需要识别系统中的所有资产。 资产是您必须保护免受入侵者侵害的资源。 这些可以是存储在LDAP中的用户记录/凭证,数据库中的数据,文件系统中的文件,CPU能力,内存,网络带宽等等。 识别资产还意味着识别其所有接口以及与其他系统组件的交互模式。 例如,可以多种方式公开存储在数据库中的数据。 数据库管理员对数据库服务器具有物理访问权限。 应用程序开发人员具有JDBC级访问权限,最终用户可以访问API。 一旦确定了系统中所有要保护的资产以及所有相关的交互模式,就需要列出所有可能的威胁和相关的攻击。 基于CIA三合会,可以通过观察交互来识别威胁。

无标题

从应用程序服务器到数据库的是JDBC连接。 第三方可以窃听该连接以读取或修改流经该连接的数据。 那是威胁。 应用程序服务器如何保留JDBC连接的用户名和密码? 如果将它们保存在配置文件中,则有权访问应用程序服务器的文件系统的任何人都可以找到它们,然后通过JDBC访问数据库。 那是另一个威胁。 JDBC连接受到用户名和密码的保护,而用户名和密码可能通过执行暴力攻击而被破坏。 另一个威胁。

管理员可以直接访问数据库服务器。 他们如何访问服务器? 如果通过用户名/密码打开了SSH访问权限,那么暴力攻击很可能构成威胁。 如果基于SSH密钥,这些密钥存储在哪里? 它们是存储在管理员的物理个人计算机上还是上载到密钥服务器? 将SSH密钥丢失给入侵者是另一个威胁。 端口如何? 您是否打开了数据库服务器的任何端口,入侵者可以在其中远程登录并控制或对开放端口进行攻击以耗尽系统资源? 可以从公司网络外部访问运行数据库的物理机吗? 仅通过VPN可用吗?

所有这些问题使您能够确定数据库服务器上可能存在的威胁。 最终用户可以通过API访问数据。 这是一个公共API,从公司防火墙公开。 如果使用HTTP基本/摘要身份验证保护API,则暴力攻击始终是威胁。 破坏了身份验证层后,任何人都可以自由访问数据。 另一个可能的威胁是有人正在访问通过传输通道流动的机密数据。 执行中间人攻击可以做到这一点。 DoS也是可能的威胁。 攻击者可以发送精心制作的恶意超大负载,以耗尽服务器资源。 STRIDE是一种流行的技术,可以有条不紊地识别与系统相关的威胁。 STRIDE代表欺骗,篡改,抵赖,信息泄露,拒绝服务,特权升级。

翻译自: https://www.javacodegeeks.com/2014/11/securing-the-insecure.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值