行业新闻

Aurelia框架中不安全的默认配置可能允许XSS攻击

Aurelia框架中不安全的默认配置可能允许XSS攻击

概述

Aurelia是一个开源的现代JavaScript模块工具箱,用于Web和移动应用程序开发。它也被称为“下一代框架”,自推出以来一直受到广泛认可,已被数百万开发人员和团队使用,每月下载量超过1.17 亿次。但是,仅依靠Aurelia框架中默认的HTML过滤器清除恶意输入,可能会使您容易受到XSS跨站脚本攻击。GoSecure研究人员已将该漏洞报告给Aurelia技术团队。

技术分析

使用Aurelia可以将HTML属性或元素内容数据绑定到JavaScript表达式。例如,用户可以使用以下代码将元素的“innerHTML”绑定到Aurelia的HTML过滤器:

<div innerhtml.bind="htmlProperty | sanitizeHTML">div>

HTML过滤器代码如下所示:

Import { getLogger } from 'aurelia-logging';
  
  const SCRIPT_REGEX = /)<[^<]*)*<\/script>/gi;
  let needsToWarn = true;
  
  /**
   * Default Html Sanitizer to prevent script injection.
   */
  export class HTMLSanitizer {
    /**
     * Sanitizes the provided input.
     * @param input The input to be sanitized.
     */
    sanitize(input) {
      if (needsToWarn) {
        needsToWarn = false;
  
        getLogger('html-sanitizer')
          .warn('CAUTION: The default HTMLSanitizer does NOT provide security against a wide variety of sophisticated XSS attacks,
  and should not be relied on for sanitizing input from unknown sources.
  Please see https://aurelia.io/docs/binding/basics#element-content for instructions on how to use a secure solution like DOMPurify or sanitize-html.');
      }
  
      return input.replace(SCRIPT_REGEX, '');
    }
  }

默认情况下,Aurelia的HTML过滤器仅尝试过滤SCRIPT元素,这使远程攻击者可以更轻松地通过其它元素属性中的JavaScript代码进行XSS攻击。攻击者还可能利用SCRIPT字符串处理方式中的漏洞。

例如,以下这个简单的XSS有效载荷将不会被过滤:

ipt>alert('XSS')</scrscript>ipt>
<img src="x" onerror="alert('XSS')"/>

总结

仅依靠默认过滤器来过滤恶意JavaScript输入的用户容易受到XSS跨站脚本攻击。该漏洞影响Aurelia Framework 1.x存储库的所有发行版本,最终可能造成会话劫持和敏感信息泄漏等后果。

关闭