Aurelia框架中不安全的默認配置可能允許XSS攻擊
VSole2022-03-14 22:53:03
概述
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存儲庫的所有發行版本,最終可能造成會話劫持和敏感信息泄漏等后果。
VSole
網絡安全專家