読者です 読者をやめる 読者になる 読者になる

この日記は私的なものであり、所属会社の見解ではありません。 GitHub: takahashikzn

struts-2.3.14.2緊急リリース

Struts2

毎度おなじみの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を使っている方は
さっさとアップデートするのが確実でございます。