Maven Centralとnpmで最もよく見られる脆弱性
2018年6月27日
0 分で読めますこのブログ記事の全文は、Snykがゲスト投稿として Cloud Foundryブログに掲載したものです。
この記事では、脆弱性データベースで追跡している主要なエコシステムのうち、Maven Centralとnpmにおける最も一般的な脆弱性の種類を見ていきます。Snyk Vulnerability databaseには、Composer、Go、Maven Central、npm、NuGet、pip、Rubygemsを使用する、追跡対象の100万を超えるオープンソースパッケージの脆弱性が登録されています。
2017年、追跡対象のエコシステムで公表された脆弱性の数は過去最高に達し、2016年から83%増加しました。ここでは、主要な2つのエコシステムで最も多く見られた脆弱性の種類を紹介します。

4月と5月の記事では、これらの脆弱性の一部をさらに掘り下げ、どのように悪用されるのかを解説します。
JavaScript(npm)
1. ディレクトリトラバーサル – 例:stパッケージ。
npmエコシステムで最も一般的な脆弱性は、ディレクトリトラバーサルです。相対ディレクトリパスが指定されても検証されない場合に、一般的に発生します。検証がなければ、指定された相対パスから親ディレクトリを参照でき、機密データにアクセスされるおそれがあります。たとえば、HTMLエンティティを使って「.」を「%2E」と表し、攻撃を実行する手法がよく使われます。この場合、次のURLへのリクエスト「/%2E%2E/%2E%2E/%2E%2E/etc/password」によって、「/etc/passwd」の内容が漏えいします。
2. 安全でないプロトコル経由でのリソースのダウンロード – 例:Chromedriver。
この脆弱性を悪用すると、攻撃者が中間者(MitM)攻撃を実行できます。安全でないプロトコル経由でリソースをダウンロードする場合、攻撃者が通信を傍受し、受信するパッケージを改ざんできる可能性があります。
3. クロスサイトスクリプティング(XSS) – 例:handlebarsパッケージ。
XSS攻撃では、攻撃者がユーザーのブラウザーをだまして、被害者自身の環境で悪意あるJavaScriptコードを実行させます。このようなスクリプトは、対象ドメインのセッションCookieを盗んだり、入力されたパスワードやクレジットカード情報を取得したり、コンテンツを収集または改ざんしたり、ユーザーに代わって操作を実行または変更したりできます。これらの操作は通常、ブラウザーの同一オリジンポリシーによってブロックされます。詳しくは、XSS攻撃、その次の波をご覧ください。
Maven Central
1. サービス拒否(DoS) – 例:jacksonデータプロセッサー。
サービス拒否(DoS)とは、バックエンドサーバーのリソースを枯渇させ、他のユーザーからのリクエストにも影響を及ぼす脆弱性です。CPUを過剰に消費させるケースが多いものの、サーバーのディスクやメモリ、その他のリソースを満杯にすることもあります。
2. 任意コード実行 – 例:Apache Strutsライブラリ。
任意コード実行とは、脆弱なサーバー上で悪意あるコードを実行させることです。このコードは、多くの場合、リモートマシン上でコマンドを実行します。これは、Strutsの事例におけるデシリアライゼーション脆弱性のように、別の脆弱性が原因となることがよくあります。
3. クロスサイトスクリプティング(XSS) – 例:Jenkins CI Server Plugin。
XSSについては、上記のnpmのセクションをご覧ください。
これらのエコシステムでよく見られるその他の脆弱性については、Cloud Foundryブログの投稿全文をご覧ください。
CTFを始めよう
オンデマンドのバーチャル入門ワークショップを視聴して、CTFの課題の解き方を学びましょう。
