概述
Bootstrap 是一个 HTML、CSS 和 JS 框架,用于开发响应性强、移动优先的网站和应用程序。
在Bootstrap 3 Button 组件中发现了跨站脚本 (XSS) 漏洞。
根据 OWASP:跨站脚本攻击是一种注入式攻击,在这种攻击中,恶意脚本被注入到原本良性和可信的网站中。当攻击者使用网络应用程序向不同的终端用户发送恶意代码(通常以浏览器侧脚本的形式)时,就会发生 XSS 攻击。攻击者可以利用 XSS 向毫无戒心的用户发送恶意脚本。
详细信息
模块信息
- 软件包管理器:npm
- 受影响的组件:按钮
- Affected versions: >=2.0.0 <=3.4.1
- 已发布软件包的链接: https://www.npmjs.com/package/bootstrap
- Github repo: https://github.com/twbs/bootstrap/
漏洞信息
使用与按钮状态特征相关联的 data-*-text 属性(即 data-complete-text)不受内容净化的限制。因此,按钮内显示的 HTML 不受任何限制。这可能导致注入恶意脚本 (XSS),从而将敏感数据外泄到远程服务器。
复制步骤
按钮组件代码没有正确地对可放置在遵循 data-[string]-text 格式的属性中并与 .button() 方法一起使用的内容进行消毒。将数据属性与 URL 参数或输入字段绑定的按钮会允许攻击者注入恶意代码。请参阅下一节中的概念验证。
代码示例
<input
id="firstName"
type="text"
value="<script>alert('XSS Input Success')</script><span>Loading XSS</span>"
/>
<button
class="btn btn-primary input-test"
data-loading-text="<span>I'm Loading</span>"
type="button"
>
Click Me
</button>
<script>
$(function () {
$('.input-test').click(function () {
var inputValue = $('#firstName').val();
$(this).data('loadingText', inputValue);
$(this).button('loading', inputValue);
});
});
</script>
概念验证
带代码的完整概念验证可在此处查看。
荣誉
- K(发现者)
缓解
Bootstrap 3 已达到生命周期终点。 受影响组件的用户应采用以下缓解措施之一:
- 迁移到更新版本的 Bootstrap
- 打上自己的补丁
- 利用 HeroDevs 这样的商业支持合作伙伴提供 EOL 后的安全支持。
解决问题
Bootstrap 3 已达到生命末期,建议迁移到更高版本的 Bootstrap。
另外,HeroDevs 还提供了安全的Bootstrap 3 直接替代品。
尽管 Bootstrap 版本 3 已达到生命末期,HeroDevs 仍加紧提供了一个关键补丁来解决此漏洞。该补丁可确保数据属性得到正确的消毒,从而阻止通过该媒介进行 XSS 攻击的可能性。
购买了 Bootstrap 永无止境支持服务的 HeroDevs 客户已在 Bootstrap 3 的最新 NES 版本([email protected])中收到了此问题的修复程序。如果您尚未安装最新版本或需要帮助,请联系我们的支持团队寻求帮助。
对于所有其他 Bootstrap 3 用户,请考虑尽快从 Bootstrap 3 迁移。或者,请联系我们,了解从 HeroDevs 接收安全Bootstrap 3 更新的便捷性。
学习与预防
为了进一步帮助社区,HeroDevs 提供了详细的指导,以防止今后出现类似的漏洞。主要策略包括对数据输入进行消毒,尤其是与动态按钮内容等关键组件交互的数据输入。我们还建议定期审查和更新第三方库,以便在潜在的安全漏洞被利用之前抓住并解决它们。
结论
CVE-2024-6485 提醒我们,即使软件已经达到报废年限,也必须对其进行维护并确保其安全。有了积极的措施和社区的支持,我们就能确保为所有用户提供一个更安全的数字环境。
如果您有兴趣获得Bootstrap 3和支持库的安全性、合规性和兼容性支持,请联系我们。
确保安全,并使用 HeroDevs 提供的最新补丁更新您的系统。关注我们的博客,了解更多见解和安全更新。
每当我们支持的开源软件修复了新的漏洞,我们就会发出警报。