本文已收录至《全国计算机等级考试——信息 安全技术》专栏
由于极其容易出现漏洞、并引发安全事故,因此数据隐私的保护是目前绝大多数企业不可绕过的运维环节。不过,许多中小型企业往往会错误地认为只有大型企业才会成为黑客的目标。而实际统计数字却截然不同:有43%的网络犯罪恰恰是针对小型企业的。而且,无论是系统陈旧且未给漏洞打上安全补丁,还是各种恶意软件,甚至是一些人为的错误,都可以成为系统的受攻击面。
如果仔细观察当前的网络威胁态势,您可能会惊讶地发现,90%的Web应用都可能成为攻击者的潜在目标。因此,为了让应用程序和数据资产免受威胁,各大在线社区(例如OWASP和NIST)努力制定了各种安全标准和优秀实践,并以免费的文档、方法、工具等形式,协助企业通过对照实施,来增强其IT环境的安全态势。
在我们开始深入讨论之前,让我们首先来看一些惊人的统计数据:
仅在2020年上半年间,企业数据的泄露量已累计高达360亿条记录。
86%的网络安全泄漏是出于经济目的,而有10%是源于间谍活动。
从分类来看,有45%的泄漏源于黑客攻击,17%源于恶意软件,22%与网络钓鱼有关。
许多金融企业会让员工不受限地访问各类文档资源,他们甚至可以访问到本企业内部大约17%的敏感文件(约1100万个文件)。
平均而言,只有5%的公司文件夹受到了适当的保护。而且,有超过77%的企业并无事件响应计划。
可见,针对上述威胁,我们应采取主动的Web安全策略,以及严格的措施,来确保敏感的数据信息、Web应用、以及信息系统等资产,免受攻击与侵害。下面,我将和您讨论五种最主要的Web应用安全威胁,以及七种行之有效的防护措施与实践。
1.注入漏洞
注入漏洞会让攻击者方便将恶意代码植入到目标应用系统(如,解析器)中。简而言之,如果您的Web应用允许用户将其输入的信息插入后端数据库,或使用shell命令对操作系统进行调用,那么您的应用就可能会受到注入漏洞的影响。
当然,您可以通过检查应用的源代码,或对应用进行彻底的渗透测试,来发现此类漏洞。注入漏洞最常见的类型是SQL注入。攻击者会在SQL查询中,插入恶意代码,并将其转发到后端数据库服务器上,实施远程盗窃或攻击。
除常见的SQL注入之外,目前还有LDAP注入、XML注入、XPATH注入、OS命令注入、以及HTML注入。我们通常可以通过适当、及时地检查与清理用户的输入,来防范此类威胁。
2.身份验证失败
身份验证失败是由身份验证和会话管理控件的实施不当而引起的。如果攻击者能够成功地识别和利用那些与身份验证相关的漏洞,那么他们就能直接访问到各种敏感数据和功能。
为了利用身份验证漏洞,攻击者需要通过采用诸如:凭证填充、会话劫持、密码暴力破解、以及会话ID URL重写等方法,来模拟应用程序的合法用户。
我们可以通过实施健全的会话管理控制、多因素身份验证、限制和监视失败的登录尝试,来防范此类攻击。
3.敏感数据泄漏
当Web应用不能充分保护诸如:会话ID、密码、财务信息、以及客户数据等敏感信息时,数据泄露就会发生。
此类泄漏的内部原因主要包括:未对敏感数据实施加密,仅采用了弱加密方式,软件应用的本身漏洞,以及操作员将数据上传至错误的数据库等方面。而外部攻击因素则包括:SQL注入、身份验证与访问控制的破坏、网络钓鱼攻击、以及针对明文协议HTTP、FTP和SMTP传输数据等网络级别的攻击。
为了应对此类泄漏,我们可以采取的主要措施包括:彻底检查应用程序的源代码与IT环境,尤其是正在使用安全密码算法等方面。
4. XML外部实体
XML外部实体注入(通常被称为XML External Entity,XXE)可以让攻击者通过Web应用的漏洞,干扰应用对于XML数据的处理。此类攻击往往会导致诸如拒绝服务、数据泄露、服务器端请求伪造等问题。
我们可以通过实施服务器端的输入验证,修补和升级所有XML处理器,以及使用SAST工具来分析源代码等方法,来有效地防止XML外部实体注入。
5.受损的访问控制
从概念上说,访问控制机制就是要确定用户是否可以执行,与之身份和权限相符的操作。而当用户可以在其预期权限之外执行某项操作时,那么就出现了访问控制的破坏。
受损的访问控制通常会导致:未经授权的信息泄露、数据被直接修改或破坏、以及业务功能偏离预期用途等情况。我们可以通过在受信任的服务器端代码中、或无服务器的API中,强制使用完备的访问控制机制,来防止攻击者修改元数据(metadata),或绕过正常的访问控制检查。
鉴于Web应用在当下激烈竞争与快速发展的商业环境中尤为重要,我们可以通过如下七种针对Web应用的安全性防护措施与实践,来协助企业保护系统与数据。
1.定义并采用合适的网络安全框架
网络安全框架包括一系列文档和指南,它定义了企业在管理网络安全风险,以及减少漏洞的过程中,需要遵循的各种优秀实践。这里主要强调的是“合适才是最好的”。我们需要对企业所处的行业,当前开展的业务进行调研。在此基础上,通过利用专业知识和业界现有的安全标准,为本企业准备详细的计划与适合的安全策略。
2.跟踪您的资产并进行威胁评估
如今,大多数企业都会通过在线运维的方式,对诸如:Web应用、网站、Web服务、API、以及基于云的软件即服务(SaaS)等IT资产,进行管理。因此在此类IT环境中,他们需要与内、外部的各种系统持续进行通信。同时,许多功能性的接口都会被暴露出来。
对此,企业需要实施关键性网络安全计划便是资产发现。该环节可帮助运维人员找到各种Web资产,以便他们按需保护目标组件,并制定出相应的安全策略。可以说,一旦创建了所有重要Web资产的列表,他们即可开始执行威胁评估,以识别出针对当前应用的潜在威胁,进而制定出有效的缓解计划。
3.遵守安全编码标准
据软件工程研究所的统计,大约有90%的软件安全问题,都是由软件设计或代码中的缺陷引起的。诚然,开发人员的主要工作是让应用程序能够正常运行,但是如果忽略了安全编码,则会无形中留下各种安全漏洞和被攻击的后门。
可见,我们需要实施安全的编码标准,以确保软件和应用得到保护,并免受安全漏洞的影响。在实际项目中,我们可以在软件开发生命周期(SDLC)的早期阶段引入安全性,并通过遵循OWASP的安全编码规范、以及SEI CERT编码标准,这两种时下流行的安全编码标准,以避免在后期测试和部署阶段,花费时间和精力去填补各种安全漏洞。
4.部署企业级安全解决方案
最常见的企业级智能安全解决方案当属Web应用防火墙(WAF)。它可以通过监控和过滤各种恶意HTTP流量,协助保护Web应用免受诸如SQL注入、跨站点脚本等攻击的侵害。也就是说,我们通过在Web应用程序和互联网之间放置一道WAF屏障,可以仅允许合法用户的访问,并阻断各种恶意的请求。
当然,我们也可以考虑使用诸如Burpsuite pro和Acu***ix之类专业的Web安全扫描器,以实现对Web应用的快速扫描,并识别出潜在的漏洞。
5.尽可能自动化
在日常运维中,我们往往需要执行Web应用扫描、签名与行为分析、以及DDoS缓解等重复性的任务。为了节省大量的时间和精力,安全人员应当与自动化技术人员合作,在确保各项任务得以自动化实施的前提下,增强Web应用的安全性。
6.加密数据
过去,Web应用往往使用明文的HTTP协议进行通信。这会导致攻击者能够以中间人(MIM)的方式,扮演通信中的某一方,窃取具体内容。如今,使用基于传输层安全协议(TLS)的HTTP加密方式,已经成为了许多企业应用的必选项。同时,它也成为了大多数浏览器的默认配置项。
HTTPS加密可以维护用户浏览器和服务器之间传输数据的完整性。也就是说,当用户使用HTTPS协议连接到诸如某个互联网银行应用的网站时,浏览器会基于证书建立起安全的TLS会话,以保证浏览器和服务器之间的请求和响应都处于加密状态。显然,此类加密技术对于维护敏感用户数据的机密性和完整性都是不错的实践。
7.渗透测试
最后一项有效的安全策略是,定期对Web应用执行全面的渗透测试,以及时发现目标系统的关键漏洞。渗透测试可以模拟攻击者或黑客对系统的出入口、源代码、数据库、公共可用源、以及后端网络,进行扫描和尝试性地攻击。
在完成测试后,渗透人员会出具已发现漏洞的优先级排序报告,并协助开发团队参照最佳的行业标准,予以漏洞修补和安全整改。
小结
至此,我们讨论了企业目前所面临的五种主要Web应用威胁,以及七种应对威胁的技术实践与防护措施。当然,对运维人员和普通员工进行最新的威胁概念教育,以及基本的威胁识别和预防等培训也是非常必要的。总之,对于攻击而言,越早发现,越早处置,越能保障安全。