概要
Bootstrapは、レスポンシブでモバイルファーストなWebサイトやアプリケーションを開発するための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)をボタンのstate機能に関連付けることは、コンテンツ・サニタイズの対象にはなりません。その結果、ボタン内部に表示できるHTMLに制限が適用されません。この結果、悪意のあるスクリプト(XSS)が注入され、機密データがリモートサーバーに流出する可能性があります。
再現の手順
ボタンコンポーネントのコードでは、data-[文字列]-text 形式に従う属性に配置され、.button() メソッドと共に使用されるコンテンツが適切にサニタイズされません。data属性を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 が End-of-Life に達しました。 影響を受けるコンポーネントのユーザーは、以下のいずれかの緩和策を適用してください:
- 新しいバージョンのBootstrapに移行する
- 独自のパッチを適用する
- EOL後のセキュリティ・サポートには、HeroDevsのような商用サポート・パートナーを活用する。
問題への対処
Bootstrap 3はサポートが終了したため、より新しいバージョンのBootstrapへの移行をお勧めします。
また、HeroDevsは、安全なBootstrap 3のドロップイン置き換えを提供しています。
Bootstrapバージョン3が使用期限を迎えたにもかかわらず、HeroDevsはこの脆弱性に対処するための重要なパッチの提供に踏み切りました。このパッチは、データ属性が適切にサニタイズされることを保証し、このベクトルによるXSS攻撃の可能性をブロックします。
Bootstrapのネバーエンディングサポートをご利用いただいているHeroDevsのお客様には、Bootstrap 3の最新ファミコンバージョン(bootstrap@3.4.5)でこの問題の修正を行いました。まだ最新バージョンをインストールしていない場合、またはサポートが必要な場合は、サポートチームまでご連絡ください。
他のすべてのBootstrap 3ユーザーの皆様は、Bootstrap 3からの迅速な移行をご検討ください。または、HeroDevsから安全なBootstrap 3のアップデートを受け取ることがいかに簡単か、お問い合わせください。
学習と予防
コミュニティをさらに支援するために、HeroDevsは今後同様の脆弱性を防ぐための詳細なガイダンスを提供しています。主要な戦略には、データ入力のサニタイズ、特に動的なボタン・コンテンツのような重要なコンポーネントと相互作用するデータ入力のサニタイズが含まれます。また、悪用される前に潜在的なセキュリティ上の欠陥を発見し、対処するために、サードパーティのライブラリを定期的に見直し、更新することを推奨します。
結論
CVE-2024-6485は、ソフトウェアが使用期限を迎えた後であっても、ソフトウェアを保守し、安全性を確保することの重要性を再認識させるものです。積極的な対策とコミュニティのサポートにより、すべてのユーザーにとってより安全なデジタル環境を確保することができます。
Bootstrap 3およびサポートライブラリのセキュリティ、コンプライアンス、互換性サポートにご興味のある方は、こちらまでご連絡ください。
HeroDevsの最新パッチでシステムを確実にアップデートし、安全な状態を維持しましょう。より多くの洞察とセキュリティアップデートについては、当社のブログをフォローしてください。
弊社がサポートするオープンソースソフトウェアに新たな脆弱性が修正された場合、いつでもアラートを受け取ることができます。