質問: はじめまして。 今度運用することになった Web サイトで、専門業者より XSS の脆弱性が指摘されました。 内容は・・・ > > 最新版でないバージョンのjQueryが使用されています。 > > 古いバージョンのjQueryでは、クロスサイトスクリプティング等の脆弱性が報告されているため、新しいバージョンのjQueryを使用することを推奨します。 > > > とのことでした。 その Web サイトの jQuery のバージョンは v1.4.3 なので、確かに古いです。しかしながら、 jQuery というのは新しいバージョンにすると、今まで使っていたものが使えなくなっていたり、仕様が変わって Web サイトの画面の動作に影響するので、安易にバージョンアップするのはとても危険だと思います。 また、 jQuery というのは頻繁にバージョンアップされているので、バージョンアップするたびに最新版の jQuery に置き換えて XSS の対応しなければならないのは、とても現実的でないと感じています。 jQuery の XSS 対応について、何か良い方法はないものでしょうか? どうかお知恵をお貸しください。
回答: > > 最新版でないバージョンのjQueryが使用されています。 > > 古いバージョンのjQueryでは、クロスサイトスクリプティング等の脆弱性が報告されている... > > > と言う指摘事項は、jQuery1.6.3未満のバージョンに存在するCVE-2011-4969の脆弱性についての指摘です。アプリケーションコードに起因するXSSを指摘されているわけではありません。監査内容にもよりますがツールによる簡易診断程度であれば間違いなくアプリケーションコードは対象外で、アプリケーションコードに起因する脆弱性があるかないかは判断できません。以下の回答もアプリケーションコードに起因する脆弱性に対する対処は考慮していません。 一般原則は、 * セキュリティアップデートはできるだけ速やかに適用する。 * セキュリティアップデートでないものは、変更内容と開発の状況を考慮し適宜実施する。 です。セキュリティアップデートでないからといって古いバージョンで放置していると、もし脆弱性が発見されたときに、バージョンアップに伴う非互換の対応も慌てて実施しなければならないことになります。それを避けるため、ある程度は最新版に追随する必要があります。そういうことも考慮にいれての「適宜」です。 今脆弱性が発見されたらどのバージョンで対応されるのか、そのバージョンに更新するにはどの程度の確認や変更が必要になるのか、は把握しておく必要があります。 ただし、セキュリティアップデートがリリースされた場合の対応の例外として、その脆弱性の詳細について十分理解した上で、 * 自分の環境にはその攻撃経路が存在しないと明確に判断できる * 信頼できるワークアラウンドを適用する * アプリケーションコード側で対策を実施している/できる 場合については、アップデートをある程度先回しにするという判断をする場合もあります。この場合の判断は個々の環境次第ですので、環境を知らない人の意見やワークアラウンドの提案は聞くべきではありません。自分で判断ができないのであれば、原則に従い速やかにアップデートしてください。 > > jQuery というのは新しいバージョンにすると、今まで使っていたものが使えなくなっていたり、仕様が変わって Web サイトの画面の動作に影響するので、安易にバージョンアップするのはとても危険だと思います。 > > > この点については全くその通りです。バージョンアップの必要性を検討し、動作検証を行った上で実施されるのが当然のことです。 しかし、jQueryの1.4.3で脆弱性を指摘されているというのは、1.6.3未満で存在しているXSS脆弱性のことでしょう。これが公表されたのは2011年のことです。1.4.3のリリースは2010年です。4年前のプロダクトを使用していて3年以上以前の問題が放置されているというのは、「安易にアップデートするのは危険」だから許容されるレベルを遙かに超えています。 そして、jQueryではそれ以降、jQueryそのものについてセキュリティに関わるアップデートはされていないはずです。したがって、 > > バージョンアップするたびに最新版の jQuery に置き換えて XSS の対応しなければならないのは、とても現実的でないと感じています > > > というのは的外れです。 以後余談。 jQuery以外は大丈夫なのか、というのが非常に心配です。HTML+Javascriptのみのwebサーバだとしても、OS自体に存在するここ最近のHeartBleedやShellShockなどの大物の脆弱性の対応は済んでいるのでしょうか。CMSなどの既製品のプロダクトが動いているのであればそちらの対応は大丈夫でしょうか。想像したくないですがもし既製品でない(自作や外部委託で作成された)Webアプリケーションが動いているようであれば、アプリケーションに特化した個別のセキュリティ監査は受けられていますか。 業務で運用されているWebサイトで、jQuery1.4.3の脆弱性が放置されていてどう対応すべきかわからない、というのはかなり深刻な状況です。受けられた監査がどのような物か分かりませんが、指摘事項がjQueryだけなのであれば、外部からソフトのバージョンや一部の設定をチェックする程度の簡易監査だと思われます。静的なHTML+JavascriptだけのWebサイト以上のことをやっているのであれば、システムについては詳細なセキュリティ監査を、運用についてもコンサルティングを受けられるべきだと強くおすすめします。(下手に事故が起きるとあなたの責任が問われますよ?)