在企业堆栈安全方面,软件应用程序是最薄弱的环节。 在 2020 年应用程序安全状况,Forrester 表示,大多数外部攻击都是通过利用软件漏洞 (42%) 或通过 Web 应用程序 (35%) 发生的。
随着应用程序变得更加复杂和开发时间缩短,开发人员面临着尽快发布功能的压力。 为了实现差异化和引人注目的应用程序功能,开发人员越来越依赖第三方库。
这种向开源组件的转变使得 保安 公司的做法更为复杂。 容器和 API 等新框架使应用程序安全性进一步复杂化。
由于开发人员被迫不断发布新功能,组织面临着安全无法跟上步伐的非常真实的风险。 可以通过将应用程序安全最佳实践纳入软件开发生命周期并实施它们来实现安全性。
为什么网络安全测试很重要?
测试 Web 应用程序及其配置的安全漏洞是 Web 安全测试的目标。 应用层攻击(即针对基于 HTTP 的应用)是主要目标。
向 Web 应用程序提交不同类型的输入以引发错误并导致其异常行为是很常见的。 在这些所谓的“负面测试”中,系统会被检查是否有非预期的行为。
同样重要的是要注意到这一点 网络安全测试 不仅仅是测试应用程序中实现的安全功能(例如,身份验证和授权)。
还需要测试其他功能(例如,业务逻辑以及输入和输出验证)是否以安全的方式实现。 安全访问 Web 应用程序功能是目标。
应用程序安全测试如何降低您组织的风险?
大多数 Web 应用程序攻击
- SQL注入技术
- 跨站点脚本(XSS)
- 远程执行命令
- 路径遍历
攻击结果
- 受限制的内容
- 已被盗用的帐户
- 恶意软件安装
- 收入损失
- 客户失去信任
- 声誉受损
- 还有更多
今天的 Web 环境容易出现各种各样的问题。 除了了解应用程序如何被利用之外,了解攻击的潜在结果将有助于您的公司抢先解决漏洞并准确地对其进行测试。
在确定漏洞的根本原因后,可以在 SDLC 的早期阶段应用缓解控制。 此外,Web 应用程序安全测试可以利用这些攻击如何工作的知识来针对已知的兴趣点。
要管理您公司的风险,您必须了解攻击的影响,因为它可用于衡量漏洞的总体严重程度。
作为安全测试的结果,确定检测到的问题的严重性可以帮助您有效地确定修复工作的优先级。 从严重的问题开始,然后转向影响较小的问题,从而最大限度地降低您公司的风险。
在确定问题之前对贵公司应用程序库中的每个应用程序进行潜在影响评估有助于确定应用程序安全测试的优先级。
当 Web 安全测试有一个既定的备受瞩目的应用程序列表时,我们可以安排测试首先针对您公司的关键应用程序,以便降低对您的业务的风险。
在 Web 应用程序安全测试期间应审查哪些功能?
在 Web 应用程序的安全测试期间应该检查几个特性,但列表并不详尽。 您的组织可能会因每项措施的不当实施而面临严重风险。
Web 应用程序安全的 10 大最佳实践
以下是您的组织应该已经实施的十大应用程序安全最佳实践。
#1 跟踪您的资产
如果你不知道你拥有什么,你就无法保护它。
您将特定服务器用于哪些功能或应用程序? 您在哪些 Web 应用程序中使用开源组件?
您认为跟踪您的资产不重要吗? 记住每个应用程序中运行的软件是非常重要的——问问 Equifax,它因未能保护超过 700 亿客户的数据而被罚款 145 亿美元。
在未修补开源组件 Apache Struts 后,信用评级机构的客户门户网站之一遭到破坏。 该公司表示,它不知道客户门户使用了易受攻击的开源组件。
您越早开始跟踪您的资产,您以后遇到的麻烦和灾难就越少。 随着组织扩展其发展,这个过程可能感觉像是一项艰巨的任务。
您还应该对您的资产进行分类,注意那些对您的业务功能至关重要的资产和那些不太重要的资产。 然后,您可以评估威胁并在以后修复它们。
#2 进行威胁评估
如果您列出需要保护的内容,您就可以确定您面临的威胁以及如何减轻这些威胁。
黑客如何能够侵入您的应用程序? 您有哪些现有的安全措施? 需要哪些额外的工具?
作为威胁评估的一部分,您必须回答这些和其他问题。
但是,您还必须对可以享受的安全级别保持现实。 无论您的系统多么安全,您仍然可以破解它。 此外,您需要诚实地说明您的团队随着时间的推移可以保持的措施。
您可能会因过分要求而忽略您的安全标准和实践。 认真对待安全,不要急于求成。
使用以下公式来评估您的风险:
风险 = 攻击概率 x 攻击影响。
风险也可以被认为是某事发生的概率与后果的严重程度。
尽管如果鲸鱼真的从天而降并压伤了你,那将是灾难性的,但它不太可能发生。
另一方面,在徒步旅行中被蚊子叮咬的可能性很大,但除了几个发痒的肿块之外,不太可能造成重大伤害。
#3 时刻关注你的补丁
在您的操作系统上安装最新补丁? 你在使用第三方软件吗? 你很可能落后了,这意味着你暴露了。
为确保软件安全,您应该采取的最重要步骤之一是从商业供应商或开源社区更新软件。
当漏洞被发现并负责任地报告给产品或项目所有者时,它会在安全咨询站点和数据库(例如 WhiteSource 漏洞数据库)上发布。
如果可能,应在发布之前创建并发布修复程序,为用户提供保护其软件的机会。
但是,如果您在补丁可用时不应用补丁,您将无法从提高的安全性中受益。
如果您担心更新到最新版本会损坏您的产品, 自动化工具 可以提供很多帮助。 一周中的任何一天,您都应该优先考虑更新和修补,作为应用程序安全最佳实践的一部分。
#4 管理你的容器
近年来,随着越来越多的组织采用容器技术,容器因其灵活性而越来越受欢迎,这简化了在整个软件开发生命周期 (SDLC) 中跨各种环境开发、测试和部署组件的过程。
人们普遍认为,容器提供的安全优势使它们具有优势。 此外,由于它们具有独立的操作系统环境,因此它们按设计进行了分段,从而降低了风险水平。
然而,容器仍然容易受到诸如突破攻击之类的攻击,其中隔离已被打破。 容器中存储的代码中也可能包含漏洞。
对于 CI/CD 管道安全,您应该从头到尾扫描漏洞,包括在您的注册表中。
除了这些扫描之外,使用容器时应用程序安全的最佳实践还包括重要的任务,例如使用 Docker Content Trust 等工具对您自己的镜像进行签名(如果您使用的是 Docker Hub,或者如果您的团队使用的是共享访问签名) 微软Azure.
#5 优先考虑您的修复操作
近年来,漏洞数量不断增加,而且这种趋势在短期内没有放缓的迹象。
因此,开发人员忙于修复。 对于希望在保持应用程序安全的同时保持理智的团队来说,优先级是必不可少的。
威胁评估是根据漏洞的严重性(CVSS 评级)、受影响应用程序的严重程度以及许多其他因素进行的。
当涉及到开源漏洞时,您需要知道开源漏洞是否真的影响了您的专有代码。
即使易受攻击组件的 CVSS 评级很关键,如果它没有收到来自您的产品的调用,它也是无效的且风险不高。
明智的策略是根据存在的因素优先考虑最紧迫的威胁,然后将低风险的威胁放在首位。
#6 加密,加密,加密
OWASP Top 10 多年来一直包括对静态和传输中的数据进行加密,这使其成为任何应用程序安全最佳实践列表的必要条件。
当您未能正确锁定流量时,中间人攻击和其他形式的入侵可能会暴露敏感数据。
当你 存储密码 例如,纯文本的用户 ID 会使您的客户处于危险之中。
确保使用带有更新证书的 SSL 作为基本加密检查清单的一部分。 现在 HTTPS 是标准,不要让自己掉队。 也推荐散列。
此外,您永远不应该像他们所说的那样“推出自己的加密货币”。 考虑由具有正确完成工作经验的专门团队提供支持的安全产品。
#7 管理权限
您不必向组织中的每个人授予对所有内容的访问权限。 应用程序和数据只能由需要它们的人通过遵循网络安全最佳实践和应用程序安全最佳实践来访问。
有两个原因。 您需要做的第一件事是防止黑客使用营销凭据来访问包含其他更敏感数据(例如财务或法律)的系统。
内部威胁也是一个问题,无论是无意的(例如丢失笔记本电脑或发送错误的电子邮件附件)还是恶意的。
与没有控制措施相比,在访问数据时只向员工提供他们需要的数据的最小权限原则可以减少您的风险。
#8 为您的漏洞管理采用自动化
在过去几年中,他们的应用程序的安全性对开发人员来说变得越来越重要,尤其是在涉及漏洞管理等任务时。
为了解决安全性的左移问题,开发人员团队正在尽早并经常进行测试,在开发过程的早期,当修复漏洞更容易、成本更低时,尽可能多地进行安全检查。
由于漏洞数量庞大,为了管理笨拙的测试过程,开发人员需要自动化工具。
要在您的专有代码中发现潜在的安全漏洞,可以在开发过程中使用静态应用程序安全测试 (SAST) 和动态应用程序安全测试 (DAST)。
SAST 和 DAST 可以解决安全漏洞,但是专有代码只占整个代码的一小部分。
在超过 92% 的现代应用程序中,开源组件占代码库的 60-80%。 您的应用程序安全检查表应优先保护开源组件。
使用软件组合分析工具,团队可以在整个 SDLC 中运行自动安全检查和报告,识别其环境中的每个开源组件并指出其中哪些具有对您的应用程序构成安全风险的已知漏洞。
通过将针对开源安全问题的自动化测试转移到左侧,您可以更好地管理您的漏洞。
#9 渗透测试
如果不提及渗透测试,顶级应用程序安全最佳实践列表将是不完整的,即使自动化工具有助于捕获绝大多数安全问题。
使用笔和纸进行测试可以让您戳戳并刺激您的应用程序以找出弱点。 如果一个坚定的黑客试图闯入您的应用程序,优秀的渗透测试人员会确切地知道他们需要采取哪些步骤。
可以雇佣黑客公司,或者自由职业者可以参与 BugCrowd 和 HackerOne 等漏洞赏金计划。 如果您还没有的话,您的公司应该赞助漏洞赏金。
如果您雇用渗透测试人员,那么为他们付费要比处理真正违规的后果要好得多。
#10 小心代币
尽管这是一个易于保护的事实,但许多开发人员并没有为第三方正确保护他们的令牌。
通过搜索流行的开发者网站,您可以轻松地在线找到不安全的代币。 开发人员不会将令牌详细信息存储在其他地方,而是只需将它们包含在他们的开源存储库中。
基本的应用程序安全最佳实践是正确保护您的第三方令牌。 您不应该将您购买的代币留在您的代码中供任何人使用。
应用安全最佳实践作为基本实践
此处概述的每个最佳实践都应集成到您组织的持续开发过程中。 如果您不将风险降至最低,您公司的应用程序和数据就会面临风险。 请按照以下步骤将风险降至最低。
避免其他人可能犯的错误是领先于黑客的一种方法,因此您更难成为攻击目标。 永远不会有完全防黑客的周边或应用程序安全措施。
但是,遵循这些基本的最佳实践可以大大有助于让您的应用程序不值得为黑客带来麻烦。