Apache Strutsは、Java EE (Java Platform, Enterprise Edition) 仕様のWebアプリケーションフレームワークです。WebアプリケーションフレームワークやWebアプリケーションミドルウェアやCMS (Contents ManagementSystem) は、手軽に素早くWebサイトを構築できるため、広く利用されています。しかしながら、手軽にWebサイトを構築することだけを目的に導入されたソフトウェアは、運用が疎かになっており脆弱性が未修正のままであることがあります。
まず、2013年7月に大きなニュースとなりJPCERT/CCからも注意喚起が発表されたApache Strutsの脆弱性に関するセキュリティアドバイザリと関連ニュースをご紹介します。
OSベンダーやアプリケーションベンダーが発表するセキュリティアドバイザリやリリース情報などは、システムの脆弱性管理を行う上で重要かつ必要な情報です。また、それらの脆弱性に関連するUS-CERT、JC3 (旧CIAC)、IPA、JPCERT/CCなどの機関から発表される注意喚起などの情報も、脆弱性の脅威や影響を判断するために役立ちます。但し、OSベンダーやアプリケーションベンダーが発表するセキュリティアドバイザリの発表形式や発表方法は、それぞれに異なっていますので複数のOSやアプリケーションを利用している場合は、その分の手間が必要となります。
前述のApache StrutsからのアドバイザリやインターネットニュースやJPCERT/CCなどの機関から発せられたセキュリティ情報に触れた場合、疑問となるのが自分が管理するシステムに影響する脆弱性なのか、ということです。実際のところ、自分のシステムへの脆弱性の影響の有無を判断するためには、アドバイザリや注意喚起を知る前に、システムで利用しているOSやアプリケーションのバージョンや構成を知ることが必要です。OSやアプリケーションのバージョン確認方法は、OSやアプリケーション毎に固有であり、その確認方法を知っておくことは大切です。ここでは、Apache Strutsのバージョン確認方法をご紹介します。なお、SIDfmのコンテンツ内にはOS、アプリケーションやアプライアンスなどのバージョン確認方法を記載しています。
Apache Strutsのバージョンは、.jarファイルを展開した後のMETA-INF/MANIFEST.MFファイル内に記述されています。確認する .jar ファイルは、Apache Struts 1では、struts.jarファイル、Apache Struts 2では、struts2-core-<version number>.jarファイルとなります。Apache Struts 2は、ファイル名にバージョン番号が含まれているため、それにより確認することもできます。ファイル名は、環境により異なる場合があります。
.jarファイルを展開します。
% unzip struts2-core-2.3.15.1.jar
META-INF/MANIFEST.MFファイル内のSpecification-Version/Implementation-Versionの値を確認します。
% more META-INF/MANIFEST.MF Manifest-Version: 1.0 Archiver-Version: Plexus Archiver Created-By: 1.6.0_32 (Apple Inc.) Built-By: rene Build-Jdk: 1.6.0_32 Specification-Title: Struts 2 Core Specification-Version: 2.3.15.1 Specification-Vendor: Apache Software Foundation Implementation-Title: Struts 2 Core Implementation-Version: 2.3.15.1 Implementation-Vendor-Id: org.apache.struts Implementation-Vendor: Apache Software Foundation Export-Package: org.apache.struts2;uses:="javax.servlet.http,javax.ser
では、Apache Strutsのどのバージョンにどのような脆弱性が存在するのでしょうか。ここでは、Apache Struts 2.3.15を例にSIDfmを利用して、利用中のApache Strutsのバージョンに存在する脆弱性とそのリスクを調べ、評価する方法をご紹介します。
SIDfmを利用して、Apache Struts 2.3.15に存在するセキュリティホールを調べる方法をご紹介します。SIDfmは、アプリケーションとバージョンの組合せを認識(例外有り)し検索しますので、手順は非常に簡単です。
検索結果表示欄では、できる限り多くの指標を見せながらも、リスクの判断に必要な指標を分かりやすく表示しています。すべての指標は更に絞り込むことが可能となっていますので、対処が必要なリスクの特定が容易となり、セキュリティホールマネージメントに役立ちます。
個々のセキュリティホールコンテンツは、リスク判断に最も重要なCVSS指標を大きく固定で表示し、その他の概要や対処方法などはタグ切替で必要な時に必要な情報にアクセスできます。難しくなりがちなセキュリティホール情報を分かりやすくするための工夫があります。
これまでの一連の作業をいつ発表されるか分からないセキュリティアドバイザリに対して毎日続けることは、大変な負担です。SIDfmはOSやアプリケーションに脆弱性が発見された際に、その脆弱性内容をセキュリティアナリストが分析し、関連する周辺情報と共にデータベースに登録します。ユーザが事前に、OSやアプリケーションの情報を SIDfmのフィルタに登録しておくことにより、「脆弱性情報のチェック」「脆弱性関連情報のチェック」「脆弱性内容の分析」「脆弱性の自システムへの影響評価」の負担を無くし、確実に脆弱性を管理できるようになります。
フィルタへの登録は、組織のリスク判断基準に合わせて細かく設定できます。1つのフィルタに、標準で5アイテム登録できます。通知メールは、4つのタイミングで送信できます。