CVE-2024-8373漏洞

内容欺骗
影响
AngularJS
>=1.3.0-rc.4
AngularJS
未找到项目。
感叹号圆圈图标
补丁可用
HeroDevs 提供的 Never-Ending Support (NES) 版本已修复此漏洞。

概述

AngularJS 是用于开发动态网络应用程序的 JavaScript 框架。它允许您使用 HTML 作为模板语言,并允许您扩展 HTML 的语法,以便清晰简洁地表达应用程序的组件。

An improper sanitization vulnerability (CVE-2024-8373) has been identified in AngularJS, which allows attackers to bypass common image source restrictions normally applied to the value of the [srcset] attribute on <source> HTML elements. This bypass can further lead to a form of Content Spoofing.

根据OWASP:内容欺骗,也称为内容注入、"任意文本注入 "或虚拟污损,是一种通过网络应用程序中的注入漏洞针对用户的攻击。当应用程序不能正确处理用户提供的数据时,攻击者就可以向网络应用程序提供内容,通常是通过参数值,然后再反射给用户。这样,用户就会看到一个在受信域上下文中修改过的页面。

此问题会影响所有版本的 AngularJS。

详细信息

模块信息

漏洞信息

在所有已发布的AngularJS版本中的主angular软件包中都发现了这个中严重性漏洞。

Normally, setting an <img> or <source> element's srcset attribute value is subject to image source sanitization, which allows improving the security of an application by setting restrictions on the sources of images that can be shown. For example, only allowing images from a specific domain.

However, due to a bug in AngularJS, setting a <source> element’s srcset attribute via the ngAttrSrcset directive or interpolation is not subject to image source sanitization. This allows bypassing the image source restrictions configured in the application, which can also lead to a form of Content Spoofing.

请注意:

ngSrcsetngPropSrcset指令不受影响。有了这些指令,消毒功能就能正常工作。

复制步骤

  • 创建一个 AngularJS 应用程序,并配置$compileProvider以只允许来自特定域的图片。例如
angular
    .module('app', [])
    .config(['$compileProvider', $compileProvider => {
      $compileProvider.imgSrcSanitizationTrustedUrlList(
          // Only allow images from `angularjs.org`.
          /^https:\/\/angularjs\.org\//);
    }]);

  • Use a specially-crafted value in the ngAttrSrcset directive on a <source> element to bypass the domain restriction and show an image from a disallowed domain. For example:
<picture>
  <source ng-attr-srcset="https://angular.dev/favicon.ico" />
  <img src="" />
</picture>

  • 您甚至可以使用data:image/svg+xml格式显示任意 SVG 图像。例如
<picture>
  <source ng-attr-srcset="data:image/svg+xml;base64,..." />
  <img src="" />
</picture>

  • 同样,您也可以通过对srcsetHTML 属性使用插值来实现同样的效果。例如
<picture>
  <source srcset="{{ 'https://angular.dev/favicon.ico' }}" />
  <!--
    OR:
    <source srcset="{{ 'data:image/svg+xml;base64,...' }}" />
  --> 
  <img src="" />
</picture>

概念验证

A full reproduction with code similar to the above can be found here:
<source> sanitization vulnerability POC

缓解

AngularJS 项目已寿终正寝,不会再有任何更新来解决此问题。有关详细信息,请参阅此处

受影响组件的用户应采用以下缓解措施之一:

  • 从 AngularJS 迁移受影响的应用程序。
  • 利用 HeroDevs 这样的商业支持合作伙伴提供 EOL 后的安全支持。
漏洞详情
身份证
CVE-2024-8373漏洞
受影响的项目
AngularJS
受影响的版本
>=1.3.0-rc.4
出版日期
2024 年 9 月 9 日
≈ 固定日期
2024 年 5 月 21 日
固定在
严重性
中型
类别
内容欺骗