最近、多数のクライアントサーバーにインストールされているレガシーWebアプリケーションを更新して、多数の脆弱性がある1.10.2ではなく、jQuery 3.3.1の現在のバージョンを使用するように依頼されました。
システムが使用するバージョンを更新してセキュリティを強化する必要がありますか、それともサーバーから古いjQueryファイルも削除する必要がありますか?
システムはjQueryをかなり限られた方法でのみ使用するので、更新によって過度の再開発が発生することはないと思います。これを念頭に置いて、システムが脆弱性のある機能を使用していない場合でも、jQueryを更新する必要がありますか?
ライブラリを更新するときは、サーバーから(おそらく問題のある)コードを削除する必要があります。これは、Webアプリケーションがライブラリの脆弱な部分を使用していない場合にも当てはまります。
それには十分な理由があります。
そのWebサーバーから提供された問題のあるコードは、攻撃で悪用される可能性があります。攻撃は [〜#〜] csp [〜#〜] によって軽減されます。
Webアプリケーションの脆弱性が(たとえば)XSSを可能にする場合、Webアプリケーションが(通常)使用するライブラリの部分に関係なく、攻撃者は古いバージョンの脆弱性を利用して、より制御された実行を可能にする可能性があります。
ご覧のように、脆弱なコードを実際に悪用するには別の脆弱性が必要ですが、問題ではないとの主張に従うと、CSP全体が役に立たなくなります。そのファイルを削除しても、CSPは有用です。
さらに、コードがまだ利用可能である場合、コードの一部が依然として古いライブラリに依存しているかどうかを識別するのは難しいため、不要になったライブラリを削除することをお勧めします。
それは脆弱性に依存します。
たとえば、XSSの脆弱性はクライアント側のみです。脆弱なバージョンのライブラリをページに含めない限り、クライアントはそれをロードしないので、サイトは脆弱ではありません。
一部のJavaScriptライブラリには、サーバー側の部分もあります(jQueryのファイルアップロードプラグインなど)。クライアントからライブラリを削除しても、サーバーは脆弱なライブラリを引き続き実行するため、サーバーは引き続き脆弱です。
私の意見では、サーバーから古いjQueryファイルも削除する必要があります。それらはもう必要ありません。さらに、すべてのページを新しいバージョンに更新しましたか?脆弱なアプリケーションに必要なのは、1つの監視だけです。
また、いくつかの既存の制限を回避するために複数の脆弱性が同時に使用される可能性があることを説明する Toby Naryの回答 も参照してください。
ソフトウェアの脆弱性は通常、コードがアクティブに使用されている場合にのみ利用できます。可能であれば古いファイルを削除して、一部の不完全な実装がそれらのファイルを引き続き使用しないようにしたいと述べました(他のソフトウェアが正常に動作していると決して想定しないでください)。ただし、jQuery用に設定された キャッシュコントロール 設定とjqueryをロードするHTMLファイルによっては、ユーザーのブラウザーが既存の(脆弱な)jQueryインストールのキャッシュバージョンをしばらく使用し続ける場合があることに注意してください。サーバーからファイルを削除しても。