驱动行业API增长的因素

这是第三 系列 文章 为软件开发,运营和保护的参与者介绍和解释了应用程序编程接口(API)的安全威胁,挑战和解决方案。

API爆炸

API的爆炸式增长

API的爆炸式增长还受到几个面向业务的因素的驱动。首先,企业正在远离每年最多更新的大型整体应用程序。相反,旧的和新的应用程序被分解成小的独立功能组件,通常作为基于容器的微服务推出。最终的应用程序组件和微服务一起工作,以提供与整体应用程序相同的功能。

当然,将所有这些结合在一起的是API,这些API允许进程之间进行通信,双向共享数据以及实时提供服务。通过充当应用程序,组件,微服务和其他容器化工作负载之间的桥梁,API可被视为集成了Internet的大部分,包括电子商务,供应链处理,企业业务交互以及现代数字经济的其他组件。

从更高的技术层面来看,促使API在Internet服务的设计和实现中如此普遍的因素包括:

  • 支持DevOps –诸如DevOps,DevSecOps和Agile之类的迭代开发方法使团队能够将增量更改直接推向客户,而无需使用漫长的开发和保证周期。
  • 按需灵活性 –现代应用程序托管需要具有以经济高效的方式按需扩展或缩减服务规模的能力,以处理使用模式的变化,例如基于季节性的需求。
  • 开发框架 –技术采用趋势,例如增加使用云,容器和业务流程(例如 Kubernetes)和管理框架(例如Istio)使大规模开发和部署基于API的微服务变得更加容易。
  • 多样化的生态系统 –通过基于API的微服务实现的合作伙伴生态系统扩展,使聚合商,供应商和外部开发人员可以在不复制功能的情况下发展其业务。这些API有充分的文档证明和公开可用,大量的例子证明了这一点。 目录 可以在Internet上找到超过23,000个API。

因此,对API的越来越多的采用对于企业来说是个好消息,但对安全专业人员也带来了相应的挑战。例如,以前可能曾负责保护少数应用程序的企业团队现在可能突然承担起保护数百个(即使不是数千个)面向公众的API以及一系列网络安全风险的责任。因此,API安全已成为大多数CISO的首要问题。

OWASP十大风险

创建开放式Web应用程序安全项目(OWASP)基金会的目的是通过社区主导的软件计划,成员领导的本地分会工作以及许多不同的会议来提高软件的安全性。它最著名的产品是所谓的OWASP十大风险,其发布目的是为了帮助软件开发人员避免创建和使用Web应用程序中最常见的风险。下面列出了十大OWASP风险的描述,这些描述直接取自 OWASP网站.

1.注射。 当将不可信数据作为命令或查询的一部分发送到解释器时,会出现诸如SQL,NoSQL,OS和LDAP注入之类的注入漏洞。攻击者的敌对数据可能会诱使解释器执行未经预期的命令或未经适当授权而访问数据。

2.身份验证失败。 与身份验证和会话管理相关的应用程序功能通常会错误地实现,从而使攻击者能够破坏密码,密钥或会话令牌,或者利用其他实现缺陷来临时或永久地假定其他用户的身份。

3.敏感的数据公开。 许多Web应用程序和API不能正确地保护敏感数据,例如金融,医疗保健和PII。攻击者可能会窃取或修改这些受保护程度不高的数据,以进行信用卡欺诈,身份盗窃或其他犯罪。敏感数据可能会在没有额外保护的情况下受到损害,例如静态加密或传输中加密,并且与浏览器进行交换时需要采取特殊的预防措施。

4. XML外部实体(XXE)。 许多较旧的或配置不当的XML处理器都会评估XML文档中的外部实体引用。外部实体可以使用文件URI处理程序,内部文件共享,内部端口扫描,远程代码执行和拒绝服务攻击来公开内部文件。

5.访问控制损坏。 通常,对身份验证用户允许执行的操作的限制通常未得到正确执行。攻击者可以利用这些缺陷来访问未经授权的功能和/或数据,例如访问其他用户的帐户,查看敏感文件,修改其他用户的数据,更改访问权限等。

6.安全配置错误。 安全配置错误是最常见的问题。这通常是由于不安全的默认配置,不完整或临时的配置,开放的云存储,错误配置的HTTP标头以及包含敏感信息的冗长错误消息的结果。不仅必须安全地配置所有操作系统,框架,库和应用程序,而且还必须及时对其进行修补/升级。

7.跨站点脚本(XSS)。 每当应用程序在未经适当验证或转义的情况下在新网页中包含不受信任的数据,或者使用可以创建HTML或JavaScript的浏览器API用用户提供的数据更新现有网页时,都会发生XSS漏洞。 XSS允许攻击者在受害者的浏览器中执行脚本,这些脚本可以劫持用户会话,破坏网站或将用户重定向到恶意网站。

8.不安全的反序列化。 不安全的反序列化通常会导致远程执行代码。即使反序列化缺陷不会导致远程执行代码,也可以将它们用于执行攻击,包括重播攻击,注入攻击和特权升级攻击。

9.使用具有已知漏洞的组件。 库,框架和其他软件模块等组件以与应用程序相同的特权运行。如果利用了易受攻击的组件,则此类攻击可能会导致严重的数据丢失或服务器接管。使用具有已知漏洞的组件的应用程序和API可能破坏应用程序防御,并造成各种攻击和影响。

10.日志记录不足& monitoring. 日志记录和监控不足,再加上事件响应的缺失或无效集成,使攻击者可以进一步攻击系统,维持持久性,转向更多系统以及篡改,提取或破坏数据。大多数违规研究表明,发现违规的时间超过200天,通常是由外部各方而不是内部流程或监视来检测。

开发运维 中的安全性

软件开发的瀑布模型已成为时间的受害者。也就是说,对于大多数实际环境而言,定义软件需求和交付功能代码之间的持续时间已经过长。实际上,当瀑布项目开始进行编码时,需求经常发生变化,以至于与活动无关。由于需求变更通常是由最终用户发起的,因此这种情况不太可能改变。

为了解决这个加速的生命周期,所谓的 开发运维 流程 已经出现在软件社区中。 开发运维 旨在解决不断增长的需求变更步伐,它涉及快速组织和快速执行的任务,旨在快速产生和部署新需求。编码人员(开发人员部分)和生产用户(操作人员部分)之间的集成创建了软件开发的永无止境的螺旋式循环,最好在最大程度的自动化支持下执行。

一旦将DevOps流程应用于关键系统开发工作,将安全性引入DevOps便成为显而易见的问题。专家认为这是迫在眉睫的挑战,因为由于传统上对变更控制流程的依赖,许多安全任务的固有结果是减慢了部署速度。这在安全性与明显的DevOps目标(即尽快移动)之间产生了立即冲突。

开发运维 安全挑战的解决方案是自动化。只有通过为安全测试,代码扫描,控制监视和活动日志记录等任务引入自动化控件,才能保持DevOps的速度,同时还要确保不会由于该过程而引入漏洞。显然,具有可利用漏洞的漏洞代码将继续从DevOps中出现,但是不应将其引入该过程中。

值得一提的有趣和奇怪的注解是,社区尚未就安全DevOps流程的标准命名达成一致。可能会找到对DevSecOps,SecDevOps和DevOpsSec的引用-这位作者对于识别差异没有很好的建议。建议读者在应用程序开发过程中尽早与安全团队合作,以建立紧密的工作关系。

撰稿人: Cequence产品营销总监Matthew Keil。

分享这个