仅靠安全编码无法阻止的三类攻击

F5生态系统 | 2019年7月15日

当发生涉及应用和数据泄露的安全事件时,开发人员几乎总会成为被追责的对象。很多时候,这个方向并没有错。注入攻击和基于堆栈的漏洞利用几乎都是由不安全的代码造成的,通常是因为违反了安全规则零。

但我们不能把所有安全事件都归咎于开发人员。事实上,即使开发人员能够编写出完全安全的代码,仍需要应用服务来抵御许多其他攻击。

这是因为应用安全需要多层防护。有些攻击会利用协议和网络原理,无法仅靠编写安全代码来消除。更棘手的是,应用往往无法检测到这些攻击,因为应用缺乏区分恶意请求与合法请求所需的可见性。

具体而言,有三类攻击不应由开发人员负责处理。更合适的做法是,由部署在上游的应用服务利用其可获得的可见性和上下文来检测和缓解这些攻击,从而帮助阻止攻击。

容量型DDoS

我们使用“容量型”一词来描述传统的分布式拒绝服务攻击,以便将基于网络过载的攻击与转向协议栈上层、针对应用层的攻击区分开来。两者属于不同类型的攻击,因此都需要防御,但所需的解决方案截然不同。

容量型攻击就是一种突袭。攻击者将大量流量集中发送到特定服务,意图使处理请求的设备、基础设施或软件不堪重负。其原理是,所有设备的资源都有限,无论是硬件还是软件,也无论部署在本地还是云端。因此,发送足够多的请求就可能使设备过载,并导致其后端的所有资源均无法访问。

开发人员无法有效防范此类攻击,是因为应用依赖平台和主机操作系统来管理网络。容量型DDoS攻击以该网络协议栈为目标,可能消耗大量共享资源,导致应用几乎无法处理请求,因而难以判断自身是否正遭受攻击。

安全编码无法防止这种攻击,因为它并非利用漏洞实施的攻击。实际上,这也不是系统中任何部分的代码所致。无论我们如何试图忽略硬件的存在,资源终究来自硬件,而硬件资源是有限的。

要有效检测和缓解大流量DDoS攻击,适合使用部署在应用上游、具备高容量和高性能的应用服务。部署位置越靠近攻击源,效果越好。

没有漏洞利用,就没有相应的安全编码解决方案。

第7层DDoS

沿协议栈向上到达应用层时,会遇到一种隐蔽的拒绝服务攻击,称为第7层(或HTTP)DDoS。这类攻击令人棘手,因为它们利用了系统机制,但并非由漏洞或不安全的编码所致。它们之所以能够奏效,是由HTTP本身及其实现系统的特性决定的。

第7层DDoS攻击通常分为两类:慢速攻击和快速攻击。慢速第7层DDoS攻击会伪装成网络连接状况极差的客户端,缓 慢 地接收合法请求的响应,从而消耗资源。由于Web应用基于连接运行,而用于维持这些连接的资源有限,因此这种方式会持续消耗资源。攻击者通过连接足够多的客户端并发出合法请求,却只缓慢接收响应,便可占用应用资源。这会导致合法客户端几乎无法连接,从而形成拒绝服务攻击。

这种攻击尤其隐蔽且难以检测,除非将网络速度与接收速度进行比较。也就是说,上游应用服务可以了解客户端的网络特征,从而更准确地判断这些客户端是故意缓慢接收数据,还是确实存在网络问题。判断请求是否合法,是阻止此类攻击的关键。

从根本上说,这些攻击利用的是协议层(HTTP)的漏洞,安全编码无法解决这一问题。

不存在漏洞,也就没有相应的安全编码解决方案。

凭据填充

最后同样不容忽视的是凭据填充攻击。过去几年中,数据泄露事件暴露了数量惊人的凭据,因此防范此类攻击至关重要。

凭据填充攻击通常依赖机器人或工具,因为这类攻击基于暴力破解原理,利用现有的大量用户名和密码泄露数据。凭据填充攻击很少由人工实施。凭据填充攻击得逞并非不安全编码所致*。攻击者利用的只是薄弱的密码使用习惯,以及无法识别正在进行的攻击这一问题。

要检测这些攻击,需要能够判断客户端并非真实用户。因此,可以采用类似反向图灵测试的方式,设置质询并使用验证码,让这些自动化系统无法正确作答。

无论采用多么安全的编码方式,都无法阻止此类攻击得逞。改进密码使用规范并检测攻击企图,是避免遭受这一日益严重的互联网威胁的有效方法。

没有可利用的代码,也就没有相应的安全编码解决方案。

*不安全的编码可能会为凭据填充攻击创造条件。毕竟,相当一部分数据泄露事件源于代码漏洞,而这些漏洞会导致大量凭据列表泄露,进而被用于此类攻击。

精准区分,实现检测与防御

必须明确安全编码在哪些情况下可以防止攻击,在哪些情况下无法做到这一点。这一点很重要,因为不能把每次攻击得逞都归咎于开发人员。安全需要系统层面的思维;面对需要防御的多种攻击类型,我们需要采用多种解决方案。

必须区分不同情况,才能有效抵御大多数组织近期将面临的各类攻击。如果攻击(1)并非利用不安全编码造成的漏洞,或(2)因缺乏可见性而无法防御,就不要浪费时间强迫开发人员应对。

我们需要从战略层面构建一套服务体系,无论攻击来自何处或涉及何种攻击面,都能在适当位置提供适当的安全防护。

确保安全。

分享
标签: 2019

关于作者

Lori Mac Vittie
Lori Mac Vittie杰出工程师兼首席技术布道师 | F5

Lori MacVittie是F5首席技术官办公室的杰出工程师兼首席技术布道师,在应用交付、自动化战略和基础设施领域拥有深厚的专业知识。无论是为AI智能体定义防护机制、剖析脆弱的多云架构,还是探索可扩展系统的极限,她都善于化繁为简。她在应用开发、IT架构以及网络和系统运维领域拥有30多年的行业经验。加入F5之前,她曾担任技术编辑,并因出色表现获得奖项。 MacVittie拥有计算机科学硕士学位,著述颇丰,出版作品涵盖安全、云和企业架构领域。她还热衷于桌面游戏和电子游戏,并且对奶酪有着毫不掩饰的鲜明见解。

Lori Mac Vittie 的更多博客文章

相关博客文章

F5纪念2021年世界艾滋病日
F5生态系统 | 2021/12/01

F5纪念2021年世界艾滋病日

值此世界艾滋病日,F5郑重承诺,将与员工、客户、社区和合作伙伴共同努力,消除社会对HIV感染者仍然存在的污名与偏见。

Thingbot正转变为攻击平台
F5生态系统 | 2018/11/29

Thingbot正转变为攻击平台

Lori MacVittie重点介绍了F5 Labs对2018年1月至6月全球物联网设备攻击的研究,并指出了其中令人警醒的影响。物联网设备不仅持续遭到利用,还被转变为攻击平台,这意味着攻击者可以更充分地利用这个必然增长的市场。

借助F5全新Quick Start,在AWS上快速开展业务
F5生态系统 | 2018/11/20

借助F5全新Quick Start,在AWS上快速开展业务

在AWS re:Invent开幕前,我们很高兴与大家分享F5与AWS之间全新的Quick Start集成。F5的Tom Atkins将介绍该服务如何启动、配置和运行在AWS上部署工作负载所需的计算、网络、存储及其他AWS服务。

为什么声明式模型对NetOps自动化至关重要?
F5生态系统 | 2018/04/30

为什么声明式模型对NetOps自动化至关重要?

为什么声明式模型对NetOps自动化至关重要?阅读F5博客,了解基础设施即代码如何简化网络扩展。

开源聚焦:F5基础设施即代码与多云可管理性
F5生态系统 | 2017/11/16

开源聚焦:F5基础设施即代码与多云可管理性

开源聚焦:基础设施即代码与多云。阅读博客,了解模板和Terraform如何简化F5应用服务的部署。

破解IT“无解困局”的答案:私有云
F5生态系统 | 2016/09/12

破解IT“无解困局”的答案:私有云

破解IT“无解困局”的答案:私有云。阅读F5博客,了解本地部署的敏捷性如何化解安全与速度难以兼顾的问题。