再現の手順
3.4.0より前のバージョンのjQueryには、プロトタイプ汚染と呼ばれる中レベルの脆弱性が存在します。サニタイズされていないソースオブジェクトに列挙可能な__proto_property(列挙可能とは、for...nextループで使用できることを意味します)が含まれている場合、悪意のあるコードはネイティブのObject.prototypeオブジェクトにアクセスすることができます。このアクセス権によって、攻撃者はこの基本オブジェクトを、すべてのJavascriptオブジェクトが継承する方法で拡張することができ、それによって多くの攻撃ベクトルが出現する可能性があります。jQuery 3.4.0リリースのブログエントリには、読む価値のある補足説明があります。
問題への対処
クライアントは直ちにjQuery 3.4.0にアップデートし、Prototype pollution脆弱性を防ぐ目的で、カスタムプログラミングがソースオブジェクトをサニタイズしていることを常に確認する必要があります。 jQuery 3に移行できないクライアントのために、HeroDevsは修正済みのjQuery 1と2のNever Ending Supportを提供しています。
学習と予防
オブジェクトのサニタイズに加えて、イミュータブルオブジェクトの使用からプロパティのホワイトリスト化、プロトタイプのないオブジェクトを作成するためのObject.create(null)の使用まで、この問題を回避するのに役立つ多くのプラクティスがあります。このリストはすべてを網羅しているわけではなく、jQuery開発者はこの種の悪用のリスクを減らすために安全なプログラミングプラクティスに精通している必要があることに注意してください。
結論
HeroDevs jQuery Never-Ending Supportは、CVE-2019-11358で説明されている潜在的なセキュリティホールを修正したjQuery 1およびjQuery 2のバージョンを提供します。このようなセキュリティアップデートの最新情報を入手するには、今すぐお問い合わせください。
リソース
弊社がサポートするオープンソースソフトウェアに新たな脆弱性が修正された場合、いつでもアラートを受け取ることができます。