攻撃コードも公開されて騒ぎになっていますが、攻撃側がやり放題になりますので至急対応しましょう
リクエストパラメーターに特定のパターンがあるので、そこで遮断できるのがポイントです
たいおう
Apache Struts 2の脆弱性が、サポート終了のApache Struts 1にも影響
~国内でいまだ大量稼働するStruts 1利用企業に、直ちに緩和策を~ | セキュリティ情報 | 株式会社ラック - http://goo.gl/pXi54f
にあるように、
《Struts 1の場合》
サポートが終了しているため、公式アップデートは提供されないと思われます。しかし、提供ベンダーが個別のサポートを実施していることもありますので、その場合は当該ベンダーの指示に従ってください。そうでない場合は、次のような影響緩和策が有効です。
- 不正な文字列がパラメータに含まれる場合(正規表現:「(^|\W)[cC]lass\W」に合致するパラメータ名が含まれる場合等)にリクエストを拒否するフィルタ機能を実装する。
- WAF、IPSなどネットワーク側で当該攻撃を遮断する。
《Struts 2の場合》
CVE-2014-0094では2.13.16.1で修正されているとされていますが、修正が不十分であることが報告されています(※)。報告されている暫定対応を行うか、今後リリースされるバージョンを適用してください。
いっぱんてきな問題
Struts に限りませんが、脆弱性により直接任意のコードが実行されることもそうですが、実行可能なエリアに任意のファイルが作成される可能性がある状態、が危険です。任意のファイルが作成される可能性の方が、任意のコードを実行するよりも脆弱性としては存在する可能性が高いです。jsp ファイルはウェブアプリケーションサーバー上で実行可能なスクリプトです。jsp が設置されるディレクトリに、拡張子 .jsp のファイルを設置できれば攻撃は完成します。
公開されている攻撃方法について
今回、ログの出力先を .jsp 実行可能なエリアに変更云々、という攻撃手法が公開されています。ログの出力であれば、パーミッションの制限をうまく回避しつつ、簡単に任意のコードを書き込むことができるという残念ながら上手な方法です。
ほんとうにあった怖い話
その昔、とあるウェブサービスを提供する企業が、システム連携するために使ってくださいと渡されたコード(モジュール)がこんな実装でした
- 外部サーバーにHTTPリクエストを投げてファイルをダウンロード
- そのファイルを .jsp として設置
- .jsp 内の関数を読んで連携完成
怖くて実装を拒否しましたが、便利ゆえの危険性を認識して、許容できる範囲内の実装をしてほしいものです。