ニュース
Apache Struts 2の脆弱性への攻撃が急増、ラックやJPCERT/CCが注意喚起
リモートから任意のコードを実行可能、バックドアの設置例も
2017年3月10日 18:32
NTTセキュリティ・ジャパン株式会社は、7日に開発元のApache Software Foundationが情報を公開した「Apache Struts 2」の脆弱性を悪用した攻撃について、検知件数の集計をツイートし、注意を喚起している。
これによれば、攻撃は3月7日17時ごろから始まり、20時にピークを迎えた後、翌8日23時ごろに再びピークを迎えている。その後9日19時過ぎまで攻撃が継続しているという。
脆弱性は、multipart/form-data 形式のリクエストを処理する「Jakarta Multipart parser」の処理に起因するもので、パケットに細工をしたユーザーからリモートで任意のコートが実行される可能性があり、すでに実証コードも公開されている。
影響を受けるバージョンは「2.3.5~2.3.31」と「2.5~2.5.10」。Jakarta Multipart parserはデフォルトで有効となっており、この脆弱性の影響を受ける環境は多い。Apache Software Foundationでは、すでに脆弱性を修正したバージョン「2.3.32」および「2.5.10.1」を配布しており、早急な更新を推奨している。
Apache Struts 2の脆弱性S2-045(CVE-2017-5638)の検知件数を集計しました。3月7日の17時には攻撃を検知し、20時に1度目のピークを迎えました。その後、8日の6時ごろから再び件数が増加して深夜にかけて2度目のピークを迎え、現在も攻撃が続いています。pic.twitter.com/3RDXS0aLzy
— NTTセキュリティ・ジャパン株式会社 (@NTTSec_JP)2017年3月9日
同じく注意喚起を行っている一般社団法人JPCERTコーディネーションセンター(JPCERT/CC)では、Apache Tomcat上に配置したStrutsアプリケーションに対し、実証コードを用いて細工を施したHTTPリクエストを送信することで、リモートから任意のコードが実行されたとの検証結果を公開している。なお、サーブレットフィルターを用いてリクエストの前処理を行うことで、脆弱性の影響を回避できるとのことだ。
株式会社ラックが運営するJSOC(Japan Security Operation Center)でも、3月7日ごろより、脆弱性を悪用した攻撃が増加傾向にあることを確認。さらに3月9日頃からは、ウェブサイトにバックドアを設置するなど、重大な被害に繋がる恐れのある攻撃を検知しているという。
SSL/TLSで暗号化された通信経路で攻撃が行われた事例も確認しており、こうした場合は、SSLアクセラレーターを設置するなど復号が可能な環境でなければ、ネットワーク上で脅威に対応するIDS/IPSでは、検知は困難だという。また、脆弱性を悪用する攻撃コードが一般的なリクエストURLではなく、Content-TypeというHTTPヘッダーに挿入されるため、ウェブサーバーのログには攻撃の証跡が記録されない可能性が高いとのこと。さらに、一見存在しないファイルに対する攻撃でも、リクエストURLに指定されたパスで最新版ではないApache Struts 2が稼働していれば、攻撃の影響を受けることを確認しているとのことだ。
このため、脆弱性の影響を受ける可能性が疑われるシステムは、安全性の確認が取れるまで一時的にネットワークから隔離を行うなども検討すべきとしている。
【追記 2017年3月17日 18:50】
記事初出時、JPCERT/CCが検証した結果として、使用するパーサーを「Jakarta Stream Multi Part Request」に変更する回避策を挙げていましたが、この方法でも脆弱性の影響を受けることが同じくJPCERT/CCの検証で確認されたため、該当する記述を削除しました(2017年3月17日付記事『Apache Struts2の脆弱性、「Jakarta Stream Multi Part Request」でも影響』参照)。