概要
脆弱性名(Ja) | Moment.js 2.18.x< 2.29.4正規表現のサービス拒否 |
脆弱性名(En) | Moment.js 2.18.x < 2.29.4 Regular Expression Denial of Service |
ID | 113312 |
危険度 | High |
ファミリー | Component Vulnerability |
説明
Moment.jsは、JavaScriptで日付や時間を扱うための非常に便利なライブラリで、特に日時のフォーマット変換や比較、タイムゾーンの調整などを簡単に行えるため、世界中の開発者に広く利用されています。
ウェブアプリケーションのフロントエンドとバックエンドの両方よく使われます。
バージョン2.29.4より前のMoment.jsには、正規表現の処理に関する「サービス拒否(DoS)」の脆弱性(CVE-2022-31129)が存在します。
この脆弱性は、from-string.js内のpreprocessRFC2822()
関数が非常に長い入力を処理する際に、無限ループが発生する可能性があり、結果としてサーバーがリソースを使い果たし、サービスが停止する恐れがあります。
リスク
この脆弱性は、攻撃者が正規表現の無限ループを発生させ、サーバーリソースを枯渇させることで、サービス拒否攻撃(DoS)を実行できます。
サービスが停止することで、ユーザーがアプリケーションにアクセスできなくなり、業務の中断や収益の損失、ユーザーの信頼低下といったビジネスへの重大な影響が生じる可能性があります。
検出トリガー
- Moment.jsのバージョンが2.18.x ~ 2.29.4 の場合
- 「検出されたテクノロジー」にて、Moment JS Framework(v 2.18.x ~ 2.29.4)が検出している。
- 該当ページは分かるが、どの部分で使われているか分からない場合、
tenable解説「検出されたテクノロジー」で検出された箇所を特定する
をご参照ください。
- 該当ページは分かるが、どの部分で使われているか分からない場合、
対策
Moment.jsのアップグレード(推奨)
Moment.jsを2.29.4以上にアップグレードすることで、この脆弱性は修正されます。
npm install moment@2.29.4
# 最新バージョンの利用の場合:
npm install moment@latest
(その他) 入力値検証
正規表現に渡される文字列の形式を厳密にチェックし、不正なデータが入力されるのを防ぐことで、サーバーに過度な負担をかけないようにします。
関連リンク
危険度が脆弱性ツールによって異なる場合があります。
Tenable Plugin | https://jp.tenable.com/plugins/was/113312 |
GitHub Advisory Database | https://github.com/advisories/GHSA-446m-mv8f-q348 |
CVE | https://nvd.nist.gov/vuln/detail/CVE-2017-18214 |