こんにちは。「クロジカサーバー管理」プリセールスの高瀬です。
2022年5月にNode.jsライブラリ「node-convict」について脆弱性(CVE-2022-22143)が発表されました。
脆弱性を悪用することでプロトタイプ汚染を引き起こす可能性があり、アメリカ国立標準技術研究所の脆弱性データベースでは危険度がCriticalとなっています。
https://nvd.nist.gov/vuln/detail/CVE-2022-22143
プロトタイプ汚染を引き起こすことでサーバーサイドのプログラム内でオブジェクトのプロパティなどを書き換えられてしまい、予期せぬエラーや挙動を引き起こされる可能性があります。
脆弱性の対象となるバージョン
「node-convict」はNode.jsのシステム内で用いる設定を実装するためのライブラリです。影響を受けるバージョンは「node-convict」 6.2.2未満となります。
https://nvd.nist.gov/vuln/detail/CVE-2022-22143
脆弱性の対策
開発元から修正版が出ているため、アップデートする形になります。
https://github.com/mozilla/node-convict/blob/master/CHANGELOG.md
また、プログラム上の対策として、海外の脆弱性情報サイトではプロトタイプ汚染を防止するために下記の手法が提唱されています。
・Object.freeze (Object.prototype) を使用することで、オブジェクトのプロトタイプ書き換えを禁止する。
・JSON入力に対して必ずスキーマ検証を行う
・安全でない再帰的マージ関数を実装・使用しないようにする。
・プロトタイプを持たないオブジェクトの使用を検討する。(たとえば、Object.create(null))
・Objectの代わりにMapを使用する。
https://security.snyk.io/vuln/SNYK-JS-CONVICT-2340604
Webサイトへの影響について
対象バージョンの「node-convict」を組み込んでいるWebサイトについて、設定値に細工した値を入力されることで、プログラム内でプロパティなどを書き換えられてしまい、予期せぬエラーや挙動を引き起こされる可能性があります。
そのため、影響内容はサーバーサイドのプログラム実装によって様々ですが、もしもユーザーの入力値をconvictの設定値に引き渡すような箇所がある場合は注意が必要です。
さいごに
弊社ではお客様サーバーのご利用状況に応じて、エンジニアが日々発表される脆弱性の影響有無を確認して、必要に応じて修正パッケージの適用を行なっております。
サイト制作、運用が多忙でサーバーソフトの脆弱性対策を行うことが難しい場合はぜひご相談くださいませ。
コーポレートサイトをクラウドでセキュアに
無料ではじめるサーバー管理
クロジカガイドブック
- コーポレートサイト構築・運用の課題を解決
- クロジカサーバー管理の主な機能
- 導入事例
- 導入までの流れ