Us技術者ブログクラウド型WAF「Scutum(スキュータム)」の開発者/エンジニアによるブログです。s3fsとjetS3tの速度比較。Strutsに脆弱性が見つかっています。過去にもStrutsではOGNL関係で任意のJavaコードが実行可能な脆弱性が見つかっていますが、今回もそれによく似た原因に起因するもののようです。攻撃者によって任意のJavaコードが実行され、サーバが攻撃を受ける可能性があります。本脆弱性に関して、JPCERTコーディネーションセンターより以下の注意喚起が行われています。【2013.07.19】Scutumでは先月より、この脆弱性を狙ったものと思われる下記のような攻撃を観測しています(リクエストは一部加工されています)。JSESSIONID=12345Accept-Languageを見ると、何となくどの方向から攻撃が来たのか伝わってくるようなリクエストです。リクエスト行をURLデコードすると次のようになります。/foo/foo.action?redirect:${#req=#context.get('com.opensymphony.xwork2.dispatcher.HttpServletRequest'),#a=#req.getSession(),#b=#a.getServletContext(),#c=#b.getRealPath("/"),#matt=#context.get('com.opensymphony.xwork2.dispatcher.HttpServletResponse'),#matt.getWriter().println(#c),#matt.getWriter().flush(),#matt.getWriter().close()}特に悪意あるコマンドをサーバ上で実行するものではなく、アプリケーションサーバに関する情報を収集するような内容に見えます。Keep-AliveUser-AgentとしてGooglebotを名乗っていますが、実際のIPアドレスはGoogleではありませんでした。見ると、GETリクエストなのにContent-Typeヘッダが付いていたりとExploitコードらしい不自然さがあります。リクエスト行をURLデコードすると次のようになります。char[50000],#d.read(#e),#matt=#context.get('com.opensymphony.xwork2.dispatcher.HttpServletResponse'),#matt.getWriter().println(#e),#matt.getWriter().flush(),#matt.getWriter().close()}ProcessBuilderクラスを利用してサーバ上でプロセスを作成し、whoisコマンドを実行しようとしています。no-cacheリクエスト行だけ見ると「その1」とよく似たリクエストですが、リクエストヘッダの各フィールドはかなり違っています。User-Agentが「Sturt2」となっており、明らかにExploitコードです。リクエスト行をURLデコードすると次のようになります。java.io.FileWriter(#p)).append(#req.getParameter("c")).close()}&c=ExploitコードはPHP製?脆弱性が公表された直後から、Exploitコードはネット上で簡単に手に入る状態になっていました。PHP製というのも興味深いですし、実行例がWindowsのコマンドプロンプトであるところなども非常に面白いです(個人的に、「phpstudy」というディレクトリ名がツボです...)。WAFの導入をこのような、フレームワークに見つかる脆弱性というのはなかなか厄介です。可能な限り、急いでアップデートを行ってください。簡単にはアップデートできないよ!という人には、私たちの提供しているSaaS型WAFであるScutum(スキュータム)のように、一ヶ月単位で契約可能なWAFサービスもありますので、まずは気軽にご相談ください。s3fsとjetS3tの速度比較。