毎度おなじみのOGNL関連の脆弱性です。
つい数日前にリリースされたstruts-2.3.14.1で、デフォルトではOGNLの評価が無効化されました。
しかし今回の脆弱性はそれとは関係なく発生します。
以下のURLにある詳細によると、
http://struts.apache.org/release/2.3.x/docs/s2-014.html
s:urlとs:aタグの属性であるincludeParamsにおいて、getおよびallを値として指定した場合にリモートコードを実行できてしまうようです。
詳細
includeParamsはHTTPリクエストに含まれるパラメータを取り込んでURLを生成せよという指示を行なっているわけですが、パラメータを取り込む際に、OGNLとして解釈してしまうようです。
例えば、
<s:url id="url" action="HelloWorld" includeParams="all">
というJSPを書いて、そのページに
http://localhost:8080/struts2-blank/example/HelloWorld.action?aaa=1${%23_memberAccess[%22allowStaticMethodAccess%22]=true,@java.lang.Runtime@getRuntime().exec('calc')}
のようなURLでアクセスすると、電卓が起動してしまいます。(Runtime.execが実行される)
allowStaticMethodAccessを強制的にtrueにできるので、設定ファイルで何を指定しようが防げません。
まあこんな感じですので、includeParamsを使っている方は
さっさとアップデートするのが確実でございます。