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