Hatena::ブログ(Diary)

yvsu (やす) このページをアンテナに追加 RSSフィード

2014-04-25

StrutsのClassLoader脆弱性はSAStrutsに影響しません

Struts2に見つかった脆弱性と同様の脆弱性がStruts1系にも見つかりました。

Apache Struts 2の脆弱性が、サポート終了のApache Struts 1にも影響


HTTP(S)のリクエストJavaのClassLoaderのメソッドが呼び出せてしまうという脆弱性です。


もう少し噛み砕いて言えば、リクエストパラメータをJavaBeansにセットする時に、リフレクションを使い、パラメータ名にaaa.bbb.cccのようなネストした名前をサポートしているフレームワークは同様の問題が起こる可能性があります

パラメータ名をclass.classLoader.xxxのような感じにして、ClassLoaderのメソッドを呼び出す訳です。


このような問題を起こすリフレクションフレームワークで最も有名なのはApache Commons BeanUtilsです。リクエストパラメータをBeanUtilsを使って、JavaBeansにセットしているフレームワークは、Strutsに限らず同じことが起きると思います


SAStrutsは、リクエストパラメータをJavaBeansにセットするのに、BeanDescという独自フレームワークを使っていて、BeanDescはclassプロパティアクセスできないようになっているので大丈夫です。

これは、小林さんがTwitterで言っている通りです。

https://twitter.com/koichik/status/459277890824052736


Seasar2系のWebフレームワークで、リクエストパラメータをJavaBeansにセットするのに、BeanDescを使っているなら、SAStrutsと同様に大丈夫です。独自もしくは、BeanUtilsを使っているWebフレームワークは、至急確認をしてください。


リクエストパラメータをJavaBeansにセットするのに、BeanUtilsではなく、OGNLを使っているプロジェクト危険です(だと思う)。これが元々Struts2で指摘されていた問題です。

通りすがり通りすがり 2014/04/25 16:47 S2Struts 1.2.10は大丈夫でしょうか?

higayasuohigayasuo 2014/04/25 18:59 追加エントリの追記に書きましたが、S2Struts 1.2はNG。1.3はPOJO ActionはOK、POJO ActionFormはNGです。

通りすがり通りすがり 2014/04/25 19:31 情報ありがとうございます。

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

リンク元