Apache Struts 2の脆弱性を狙った攻撃の観測情報

IIJでは、IIJマネージドセキュリティサービスで得られた情報を基に、情報分析基盤を通して分析活動を行っています。既知の脆弱性ではありますが、Apache Struts 2の「CVE-2017-5638/S2-045」脆弱性を悪用した攻撃が、2017年10月20日から急増していることを観測しました。この攻撃の急増は、大規模な調査活動によるものと考えられます。この記事では、観測した攻撃内容についてご紹介します。

Apache Struts 2とCVE-2017-5638/S2-045脆弱性とは

Apache Struts 2は、Webアプリケーションフレームワークであり、広く利用されています。また、Apache Tomcatなどのアプリケーションサーバ上で動作します。

「CVE-2017-5638/S2-045」は、Apache Struts2の脆弱性であり、2017年3月9日に注意喚起されたものです。

Apache Sturts 2は、「OGNL(Object Graph Navigation Language)」という言語で処理を記述できる機能を備えており、「CVE-2017-5638/S2-045」は、その「OGNL」を利用して、任意のコード実行が可能となる脆弱性です。過去の被害としては、情報流出に繋がった事案が多く、悪用されると非常に危険な脆弱性であることが分かります。

攻撃の観測情報

「CVE-2017-5638/S2-045」脆弱性を悪用した攻撃推移

IIJでは、「CVE-2017-5638/S2-045」脆弱性を悪用した攻撃の急増を観測しました。攻撃件数及び送信元として観測されたIPアドレス数は、2017年10月20日から急増し、2017年10月24日まで高い件数で推移しています。

以下は、2017年10月15日から2017年10月28日に観測した「CVE-2017-5638/S2-045」脆弱性を悪用した、1サイトあたりの攻撃件数及び送信元として観測されたIPアドレス数の推移を示しています。

図-1 「CVE-2017-5638/S2-045」脆弱性を悪用した1サイトあたりの攻撃件数及び送信元IPアドレス数

送信元の国別検知件数の割合

送信元の国の総計は、60カ国を超えており、中国(CN)、フランス(FR)、米国(US)からの攻撃件数の割合が3割を超えていました。

以下は、2017年10月15日から2017年10月28日に観測した、攻撃の送信元国別検知数の割合を示したものです。

図-2 攻撃の送信元国別検知数の割合

2017年10月20日と2017年10月24日の攻撃の急増は、送信元が中国(CN)とフランス(FR)からの攻撃が大きく関与していました。

以下は、2017年10月15日から2017年10月28日に観測した、1サイトあたりの攻撃送信元の国別検知数を示しています。

図-3 1サイトあたりの攻撃送信元の国別検知数

急増した攻撃の分析

攻撃パケットの分析

攻撃者は、HTTPヘッダのContent-Type:フィールドにOGNL(Object Graph Navigation Language)の記述により実行したいコマンドを埋め込みます。このヘッダを含むHTTPリクエストをWebサーバに送信することで、そのWebサーバが脆弱性を有する場合には、攻撃者が指定したコマンドがサーバ上で実行されます。

今回観測した攻撃には”nMaskCustomMuttMoloz”という通常は存在しないコマンド名が指定されたものがありました。”nMaskCustomMuttMoloz”の文字列を含む攻撃通信の傾向を確認すると、2017年10月20日から急増していることがわかりました。そのため、「CVE-2017-5638/S2-045」脆弱性を悪用した攻撃の急増は、文字列”nMaskCustomMuttMoloz”を含む攻撃通信が、大きく関与していることになります。

以下は、2017年10月15日から2017年10月28日に観測した、1サイトあたりの”nMaskCustomMuttMoloz”の文字列を含む攻撃と、定常的に観測している攻撃の検知数を示しています。

図-4 1サイトあたりの”nMaskCustomMuttMoloz”の文字列を含む攻撃と定常的に観測している攻撃の検知数

以下に、今回観測した攻撃コードを示します。HTTPヘッダのContent-Type:フィールドの中に”nMaskCustomMuttMoloz”の文字列が含まれています。

図-5 観測した攻撃コード

Webサーバに「CVE-2017-5638/S2-045」脆弱性がある場合には、攻撃者が指定したコマンド “nMaskCustomMuttMoloz”が実行されます。”nMaskCustomMuttMoloz”は通常存在しないOSコマンドのため、「コマンドが見つからない」というエラー応答が出力されます。

攻撃者は、Webサーバからの「コマンドが見つからない」というエラー応答を確認することで、「CVE-2017-5638/S2-045」脆弱性が存在していることを判断します。

また、今回観測した攻撃では、「CVE-2017-5638/S2-045」脆弱性のあるバージョンへの探索も確認しています。以下に、攻撃対象となったURLの一部を示します。

図-6 攻撃対象となったURLの一部

攻撃者は、1つのWebサーバで、複数のApache Struts 2を運用している場合を想定して調査活動を行っているものと考えられます。攻撃者は幅広い調査活動を行っており、「CVE-2017-5638/S2-045」脆弱性に対処していないものを、1つでも多く探そうとしています。

急増した攻撃について

今回観測した「CVE-2017-5638/S2-045」脆弱性を悪用した攻撃の急増は、”nMaskCustomMuttMoloz”という通常存在しないコマンドを実行する攻撃を多く検知したことによるものでした。

60カ国を超える送信元からの攻撃にもかかわらず、共通の”nMaskCustomMuttMoloz”という文字列がコマンド名として指定されているため、共通の攻撃ツールを使用しているということが考えられます。また、”nMaskCustomMuttMoloz”コマンドにより、Webアプリケーションのエラー応答を確認しているだけに留まっていることから、今回急増した攻撃は、「CVE-2017-5638/S2-045」脆弱性を悪用できるWebサーバに対する調査活動であったと考えられます。

まとめ

IIJで観測した「CVE-2017-5638/S2-045」脆弱性は、現在から半年以上前に公表され、修正が提供された脆弱性です。「CVE-2017-5638/S2-045」脆弱性を悪用した攻撃は、定常的に一定の攻撃件数を検知していますが、今回大量に検知したことから、未だ攻撃の手が止んでいないことが分かります。また、送信元の国が60カ国程度あり、その攻撃に用いられた内容に共通した文字列が用いられていることから、大規模なBotNetを利用した攻撃である可能性があります。

その為、Apache Struts 2を運用中のシステム管理者様は、本脆弱性について、今一度アプリケーションのバージョンを確認いただき、脆弱性の影響があるバージョンをご利用中の場合は、本脆弱性を修正したApache Struts 2のバージョンアップを行うことをご検討下さい。また、本稿の情報を元に攻撃の影響を受けていないかご確認ください。

今回観測した攻撃は、WebアプリケーションファイアウォールやIPS/IDSを用いて、攻撃をブロックすることができます。バージョンアップが難しい場合は、セキュリティ機器による防御もご検討ください。