全ウェブサイトの84%がjQueryのXSS脆弱性の影響を受ける
2019年10月30日
0 分で読めますSnykの「JavaScriptフレームワークのセキュリティ状況レポート 2019」へようこそ。このブログでは、フロントエンドエコシステムの他のプロジェクトで見つかったセキュリティ脆弱性を紹介します。
主要なJavaScriptフレームワークであるAngularとReactを確認した後、Vue.js、jQuery、Bootstrapなど、厳選したJavaScriptおよびCSSフレームワークを簡単に見ていきます。
jQueryのセキュリティ
jQueryは10年前にウェブ開発を席巻しましたが、その後、AngularやReactなどのシングルページアプリケーション技術によって、ウェブ開発はさらに進化しました。それでも、ウェブ技術の利用状況を定期的に調査・報告しているW3Techsによると、2019年8月に調査したウェブサイトの73%でjQueryが使用されています。
2017年のSnykの調査でもこの状況が浮き彫りになりました。サイトの77%で、少なくとも1つの脆弱なJavaScriptライブラリが使用されていると報告され、Alexaの上位5,000件のURLの79%でjQueryが検出されたことも指摘しています。まだ納得できない方もいるかもしれませんが、過去12か月間だけで、npmのjQueryモジュールは120,641,977回ダウンロードされています。
これまでにリリースされたすべてのjQueryバージョンを対象に、合計6件のセキュリティ脆弱性を確認しました。そのうち4件は中 severity のクロスサイトスクリプティング、1件は中 severity のプロトタイプ汚染、最後の1件は低 severity のサービス拒否脆弱性です。2019年4月10日にリリースされたばかりのjQuery 3.4.0以降を使用していない場合、脆弱なバージョンのjQueryを使用していることになります。

jQueryはレガシーコンポーネントとしてウェブアプリケーションで使われていることが多いため、バージョンの利用傾向とセキュリティ状況を把握することも重要です。
W3Techsの報告によると、jQueryを使用しているウェブサイトのうち、1.x系が83.4%を占め、バージョン2と3は大きく後れを取り、それぞれjQuery利用全体の約8%にとどまります。既知のセキュリティ脆弱性をjQueryのバージョンに対応付けたところ、中 severity のクロスサイトスクリプティング脆弱性4件がjQuery v1に影響していることがわかりました。オープンソースコンポーネントの脆弱性を見つけて修正するためにソフトウェア構成分析を導入していない場合、83.4%という市場シェアを考えると懸念すべき状況です。
多くのウェブサイトやウェブアプリケーションでは、jQueryの機能を拡張するためにjQueryライブラリも利用されており、そのためにコミュニティ提供のライブラリが使われることもあります。
次の表に示すように、脆弱性のあるjQueryライブラリを13件確認しました。以下に主な点をまとめます。
jQueryライブラリのうち3つは、オープンソースコミュニティのモジュールを装った悪意のあるバージョンです。脆弱なバージョンのダウンロード数はnpmレジストリから確認できないため、実際のダウンロード数は算出できませんが、悪意のあるパッケージであるjquery.jsは、過去12か月間に5,444回ダウンロードされたことを特記しておきます。
jQueryライブラリのjquery-mobile、jquery-file-upload、jquery-colorboxは、任意のコード実行やクロスサイトスクリプティングの脆弱性を含み、修正のためのアップグレード手段もないにもかかわらず、過去12か月間に合計340,000回以上ダウンロードされています。
jQueryライブラリ名 | 脆弱性の種類 | 公開日 | 脆弱性の深刻度 | 年間モジュールダウンロード数 | 修正あり? |
悪意のあるパッケージ | 2019-08-06 | 高 | 322 | 該当なし | |
クロスサイトスクリプティング | 2019-07-03 | 中 | 17,898 | ✅ | |
悪意のあるパッケージ | 2019-06-07 | 高 | 232 | 該当なし | |
クロスサイトスクリプティング | 2019-05-04 | 中 | 54,991 | ❌ | |
任意コード実行 | 2018-11-02 | 低 | 19,442 | ❌ | |
クロスサイトスクリプティング | 2018-08-19 | 中 | 79,982 | ✅ | |
正規表現によるサービス拒否(ReDoS) | 2018-02-13 | 高 | 3,069 | ✅ | |
クロスサイトスクリプティング | 2017-11-14 | 中 | 268,513 | ❌ | |
悪意のあるパッケージ | 2017-08-02 | 高 | 5,444 | 該当なし | |
クロスサイトスクリプティング | 2016-07-21 | 高 | 8,934,683 | ✅ | |
クロスサイトリクエストフォージェリ(CSRF) | 2015-06-24 | 中 | 5,763,710 | ✅ | |
クロスサイトスクリプティング | 2013-04-18 | 中 | 1,831,735 | ✅ | |
クロスサイトリクエストフォージェリ(CSRF) | 2012-11-26 | 中 | 8,934,683 | ✅ | |
クロスサイトスクリプティング | 2012-08-01 | 中 | 54,991 | ✅ | |
クロスサイトスクリプティング | 2010-09-02 | 中 | 8,934,683 | ✅ |
*悪意のあるパッケージには修正情報がありません。
レポートの完全版はデジタル形式でのダウンロードを強くおすすめしますが、以下の一般的なセクションもブログ記事として公開しています。
jQueryのXSS脆弱性が全ウェブサイトの84%に影響
Capture the Flagを始めよう
オンデマンドのバーチャル入門ワークショップを見て、Capture the Flagの課題の解き方を学びましょう。
