クライアント側のプロトタイプ汚染

high Web App Scanning プラグイン ID 112719

概要

クライアント側のプロトタイプ汚染

説明

プロトタイプベースのプログラミング言語は、新しいオブジェクトを作成するために、プロトタイプとして使用されるオブジェクトを定義し、その後拡張または複製するプロセスに依存しています。インスタンス化されると、これらのオブジェクトはプロトタイプのプロパティとメソッドを継承します。

JavaScript は、サーバー側コンポーネントとクライアント側コンポーネントの両方において、最新の Web アプリケーションで最も一般的なプロトタイプベースの言語の 1 つです。ほとんどすべての JavaScript オブジェクトは Object のインスタンスであり、Object プロトタイプのプロパティとメソッドを継承します。

攻撃者が Web ブラウザのコンテキストで Object プロトタイプのプロパティを変更できる場合に、クライアント側のプロトタイプ汚染の脆弱性が存在し、アプリケーションユーザーがクロスサイトスクリプティングやサービス拒否攻撃などのさらなる問題にさらされます。

ソリューション

一部の操作 (オブジェクトのマージや複製など) 中にプロトタイプやコンストラクターなどのプロパティを利用する場合に Object プロトタイプが変更されないよう、入力を適切にサニタイズする必要があります。JavaScript オブジェクトは、Object.create (null) コンストラクターを使用して、プロトタイプなしで明示的にインスタンス化することもできます。最後に、Map プロトタイプキーは Object プロトタイプキーを含まないため、汚染の発生を防ぐためにキーと値のストレージとして使用することを推奨します。

参考資料

https://portswigger.net/daily-swig/prototype-pollution-the-dangerous-and-underrated-vulnerability-impacting-javascript-applications

https://research.securitum.com/prototype-pollution-and-bypassing-client-side-html-sanitizers/

https://snyk.io/blog/snyk-research-team-discovers-severe-prototype-pollution-security-vulnerabilities-affecting-all-versions-of-lodash/

プラグインの詳細

深刻度: High

ID: 112719

タイプ: remote

ファミリー: Web Applications

公開日: 2021/5/6

更新日: 2023/7/6

スキャン テンプレート: full, pci, scan

リスク情報

VPR

リスクファクター: Medium

スコア: 6.7

CVSS v2

リスクファクター: Medium

Base Score: 6.5

ベクトル: CVSS2#AV:N/AC:L/Au:S/C:P/I:P/A:P

CVSS スコアのソース: CVE-2021-20083

CVSS v3

リスクファクター: High

Base Score: 8.8

ベクトル: CVSS:3.0/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

CVSS スコアのソース: CVE-2021-20083

脆弱性情報

エクスプロイトが利用可能: true

エクスプロイトの容易さ: Exploits are available

参照情報

CVE: CVE-2021-20083, CVE-2021-20084, CVE-2021-20085, CVE-2021-20086, CVE-2021-20087, CVE-2021-20088, CVE-2021-20089