复制步骤
在大于或等于 1.2 和 3.5.0 之前的 jQuery 版本中,可发现此中级漏洞。该问题可能发生在将来自不信任来源的 HTML 传递到 jQuery 的一个 DOM 操作方法(即 .html()、.append() 和其他方法)时,即使已对其进行了消毒。在输入未正确消毒的情况下,这些方法可能会执行不受信任的代码。
解决问题
客户应在全面测试后立即更新至 jQuery 3.5.0。由于3.5.0版本改变了jQuery.htmlPrefilter()中使用的sanitization方法,在一些边缘情况下,sanitization功能可能会产生意想不到的结果,因此需要进行广泛的测试。如果旧的行为是绝对需要的,jQuery 3.5.0 发布博客描述了一种以安全的方式使用旧逻辑的方法。 另外,对于无法迁移的客户,HeroDevs提供了对jQuery的永无止境的支持,包括jQuery 1和jQuery 2版本,并对该安全漏洞进行了修复。
学习与预防
在使用或存储不受信任的数据之前对其进行消毒是一种安全最佳做法,这是有道理的:它是破解代码的常见媒介。在本例中,错误是在设计用于对数据进行消毒的代码中发现的。最好的可用修复方法是放弃使用 regex(),改用一种新的方法对数据进行消毒。
通常情况下,使用内置的消毒方法就足够了。不过,尽管在 3.5.0 版中采用了新的消毒方法,jQuery 团队还是建议使用DOMPurify 库进行额外的消毒,并确保使用 SAFE_FOR_JQUERY 选项。DOMPurify是一个非常流行的、高度可配置的库,专门用于帮助防止跨站脚本 (XSS) 漏洞。
结论
为了给他们的网站提供最安全的 Javascript 框架,HeroDevs NES 客户收到的 jQuery 版本已经修复了这个 CVE 和所有其他相关的 CVE。
该修复直接修正了 CVE-2020-11022 所描述的潜在安全漏洞。要随时了解此类安全更新,请立即联系我们,成为我们的客户。
资源
每当我们支持的开源软件修复了新的漏洞,我们就会发出警报。