Node.jsライブラリ「node-convict」にプロトタイプ汚染の脆弱性。Webサイトへの影響と対策を解説します(CVE-2022-22143)

こんにちは。「クロジカサーバー管理」プリセールスの高瀬です。

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の設定値に引き渡すような箇所がある場合は注意が必要です。

さいごに

弊社ではお客様サーバーのご利用状況に応じて、エンジニアが日々発表される脆弱性の影響有無を確認して、必要に応じて修正パッケージの適用を行なっております。

サイト制作、運用が多忙でサーバーソフトの脆弱性対策を行うことが難しい場合はぜひご相談くださいませ。

コーポレートサイトクラウドでセキュアに

コーポレートサイトをクラウドでセキュアに クロジカガイドブック

無料ではじめるサーバー管理
クロジカガイドブック

「クロジカサーバー管理」の詳しい内容がわかる資料をご用意しました。
  • コーポレートサイト構築・運用の課題を解決
  • クロジカサーバー管理の主な機能
  • 導入事例
  • 導入までの流れ

詳しい資料をご覧いただけます

クロジカサーバー管理のサービス内容を記載した資料をダウンロードできます。
クロジカの機能や事例が分かる
資料ダウンロード