您还未登录! 登录 | 注册 | 帮助  

您的位置: 首页 > 软件开发专栏 > 网络/安全 > 正文

2017 OWASP的十大关键Web应用安全风险简析

发表于:2018-01-02 作者:nana 来源:51cto

前不久,安全牛报道了2017 OWASP的十大安全问题最终版,下面这篇文章则对十大安全风险做了简单分析。 

   

2017 OWASP十大关键Web应用安全风险简析

受越来越短的软件项目生命周期影响,有些应用面临损及金融、医疗、零售业和其他行业数字安全的风险。开发人员和经理必须了解这些最常见的风险,才能保护自己的应用。为此,开放网页应用安全计划(OWASP)定期发布十大最关键Web应用安全风险。

该计划从专精应用安全的公司企业收集40多份数据,数据涵盖数百家公司处收集的漏洞信息,涉及10万个应用和API。

OWASP根据可利用性、普遍性、可检测性和技术影响程度,给每种风险打分。这些风险是随时在变的。

比如说,来自社区的500个同行提交,就在2017年往OWASP榜单的前瞻风险类列表中加入了2个新成员。该组织还从源代码分析安全测试(SAST)数据集中加入了一个新门类。

另外的变化也不是没有。

2013年,两种老旧风险掉出OWASP“十大”榜单——不安全直接对象引用和缺乏函数级访问控制,这两个门类合并成了2017年榜单上的“失效的访问控制”。

另外,基于现代应用中的流行程度,OWASP将跨站请求伪造(CSRF)和非法链接跳转给踢出了十大。

 

OWASP 2017 十大关键Web应用安全风险如下:

1. 注入

  • 可利用性:3 - 容易
  • 漏洞普遍性:2 - 常见
  • 漏洞可检测性:3 - 容易
  • 技术影响:3 - 严重

注入包括SQL注入、OS注入、LDAP)轻量级目录访问协议)注入等,可致解释器将非受信数据作为查询或指令的一部分加以接收。攻击者可利用注入来诱骗解释器执行恶意代码,或赋予他们本不应有的敏感数据访问权。

开发人员和经理只要经常进行安全代码审查,就可有效避免应用被注入。在持续集成和持续交付(CI/CD)管道中引入SAST和动态应用测试(DAST),是做到这一点的好办法。

2. 失效的身份验证

  • 可利用性:3 - 容易
  • 漏洞普遍性:2 - 常见
  • 漏洞可检测性:2 - 一般
  • 技术影响:3 - 严重

应用的身份验证和会话管理功能,未必能正确实现。一旦验证和会话管理功能失效,攻击者可盗取口令、密钥或会话凭证。利用漏洞冒充已验证用户,也是攻击者惯用手法之一。

多因子身份验证是抵御验证失效的最佳办法,因为该方法可预防被盗凭证重用攻击之类的事件。开发人员和经理不应在应用中留有管理员凭证。检查弱口令并限制登录失败次数的功能,则应加入到应用中。

3. 敏感数据暴露

  • 可利用性:2 - 一般
  • 漏洞普遍性:3 - 普遍
  • 漏洞可检测性:2 - 一般
  • 技术影响:3 - 严重

有些应用和API未引入恰当的敏感信息防护功能,金融数据或登录凭证之类的敏感数据未得到应有的保护。数字攻击者可利用程序中的缺陷,盗取并滥用该敏感信息,进行身份盗窃或信用卡诈骗活动。

只要开发人员和经理确定不了数据防护需求——无论是传输过程中还是存储介质上的数据,敏感数据暴露的威胁就不能被缓解。他们应先确定哪些数据是敏感的,然后用健壮的最新算法加密保护之。同时,不应存储非必要的敏感信息,不必要的敏感信息就应该安全地销毁掉。

4. XML外部实体(XXE)

  • 可利用性:2 - 一般
  • 漏洞普遍性:2 - 常见
  • 漏洞可检测性:3 - 容易
  • 技术影响:3 - 严重

可扩展标记语言(XML),是指定文档编码准则的一种标记语言,其处理器负责解析XML文档并采取相应的操作。有些XML处理器设计粗劣或配置不当,可能对XML文档中的外部实体引用进行求值操作。攻击者就能利用这些实体来暴露内部文件,进行内部端口扫描,实现远程代码执行。

开发人员和经理可通过序列化敏感数据,使用JSON之类简单数据格式的方法,来缓解XXE威胁。他们还应确保修复升级应用中的所有XML处理器,在所有相关XML解析器中禁用XML外部实体处理功能。

5. 失效的访问控制

  • 可利用性:2 - 一般
  • 漏洞普遍性:2 - 常见
  • 漏洞可检测性:3 - 一般
  • 技术影响:3 - 严重

操作应用时,经验证的用户应只拥有与其身份相匹配的有限权限。然而,有些应用并没有严格实现该限制。攻击者就可滥用该疏漏来访问其他用户的账户,暴露敏感文件。

为解决访问控制失效的风险,除了其他安全措施,开发人员和经理还应实现“默认拒绝”的访问控制机制。他们应记录访问控制失败情况,并在必要的时候通报管理员。这些控制措施都应在服务器端创建,这样攻击者就不能修改控制检查或元数据了。

6. 安全配置错误

  • 可利用性:3 - 容易
  • 漏洞普遍性:3 - 普遍
  • 漏洞可检测性:3 - 容易
  • 技术影响:2 - 中等

安全配置错误是最常见的应用安全风险之一。开放云存储、错误配置的HTTP头、包含敏感信息的错误信息提示和其他漏洞,都会造成这种风险。攻击者可利用这些错误配置以默认口令登录管理员账户,发现访问控制漏洞,盗取敏感信息。

去除了非必要功能/组件的最小平台,可以有效缓解应用的安全配置风险。实现分隔的应用架构,采用自动化过程验证应用环境配置有效性,也是开发人员和经理应该做的。

7. 跨站脚本(XSS)

  • 可利用性:3 - 容易
  • 漏洞普遍性:3 - 普遍
  • 漏洞可检测性:3 - 容易
  • 技术影响:2 - 中等

有时候,应用不进行恰当的验证或转义,就在新页面中包含进非受信数据。这就是跨站脚本漏洞的一个例子。攻击者可滥用此类缺陷在受害者浏览器中执行脚本,由此劫持用户会话,将访问者重定向至恶意站点。

幸运的是,Ruby on Rails 和 React JS 之类框架,从设计上就自动转义了跨站脚本。开发人员和经理可以在应用中引入此类技术,根据HTML的输出转义非受信HTTP请求数据。他们还可以实现内容安全策略(CSP),进一步缓解潜在XSS漏洞。

8. 不安全反序列化

  • 可利用性:1 - 困难
  • 漏洞普遍性:2 - 常见
  • 漏洞可检测性:2 - 一般
  • 技术影响:3 - 严重

对不安全反序列化的最大担忧,是远程代码执行(RCE)。即便此类漏洞不直接导致RCE,攻击者仍可利用该漏洞进行重放攻击、提权攻击和其他数字攻击行为。

完整性检查,比如审查序列化对象的数字签名,有助抵御不安全反序列化漏洞。开发人员和经理还应隔离执行在低权限环境中反序列化的代码,监测反序列化过程,一旦用户经常反序列化,即发出通告。

9. 使用带已知漏洞的组件

  • 可利用性:2 - 一般
  • 漏洞普遍性:3 - 普遍
  • 漏洞可检测性:2 - 一般
  • 技术影响:2 - 中等

很多现代应用都带有库和框架。这些组件的执行权限可能与应用本身并不一致。进一步来说,如果攻击者发现了脆弱组件并利用之,就可以盗取敏感数据或破坏关键服务器。

有些组件并非应用必需的。考虑到这一点,公司企业应将去除应用中的非必要组件,作为自身应用安全计划的重要部分。开发人员和经理还应仅从官方源获取组件,并监测组件中是否含有新发现的漏洞。

10. 日志&监视不足

  • 可利用性:2 - 一般
  • 漏洞普遍性:3 - 普遍
  • 漏洞可检测性:1 - 困难
  • 技术影响:2 - 中等

日志与监视可以为公司IT环境提供重要洞见。然而,若对这两项安全措施投入不足,攻击者就能更容易地渗透系统,在网络中横向移动,盗取数据。

确保所有登录、访问控制失败和服务器端输入验证失败都被记录下来,且日志信息带有足够的用户上下文,可以保护公司免受此类威胁的伤害。开发人员和经理还应确保日志格式方便集中式日志管理解决方案处理。

仅仅是开始

所有公司企业和软件开发团队都有自己独特的文化和技术,决定着他们能够发展出什么样的应用安全项目。

OWASP十大Web应用安全风险,有助这些实体创建适合自己的应用安全项目。但开发人员和经理们不应止步于这十大风险。应牢记:能影响Web应用安全的问题还有几百个。基于此,开发人员和经理应建立健壮的应用安全控制,专注创建有活力的团队/公司安全文化。