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

羊の夜をビールで洗う

シングルファーザーなプログラマーのワンオペ育児&暮らしのブログ。

Apache Struts2脆弱性(S2-045)対応で、ライブラリ依存関係の解決に結構ハマった。

プログラミング

このブログは、平常運行時は子育てと暮らしのブログなので、こういうネタはQiitaかサブブログ作って書こうよ、という感じですが、どちらもびみょーに面倒くさいので、このままこちらで書いてみることにします。

 

先週末の3月9日にIPAのサイトにも掲載された、Apache Struts 2を使用したシステムで任意のコードが実行されうる脆弱性ですが、攻撃コードが公開されている上に、既に攻撃を受けたサイトやサービスの事例も多数報告されており、対応の緊急度が高い内容となっています。

 

Apache Struts 2 の脆弱性 (S2-045) に関する注意喚起

 

私のお仕事でも、さっそく対応に追われていましたが、一応mavenは導入しているので、対象ライブラリのバージョン変えて再ビルドしたらあっさり終了かな〜、と思っていたのが、各案件でpom.xmlファイルの書き方がまちまちなうえに、依存ライブラリのバージョンを固定で書いてある箇所もあって、個別対応を強いられる箇所が多々あり、思ったよりも時間がかかりました。

 

同じように、実はmaven使ってるのに、なぜか依存関係にハマってる...という方のために、とりあえずバージョンを合わせておいたほうが良さそうなライブラリのリストを列挙してみます。

 

今回更新必須なライブラリは、Struts2の本体「strut2-core」です。以下では、struts2のバージョンを2.3.32に上げる想定で書いています。

 

  • struts2-core 2.3.32
  • xwork-core 2.3.32
  • commons-collections 3.2.2
  • commons-fileupload 1.3.2
  • commons-lang3 3.2
  • freemarker 2.3.22
  • jcl-over-slf4j 1.7.12
  • slf4j-api 1.7.12
  • ognl 3.0.19

 

これだけでいけたものが多かったのですが、 たまにtiles関連のライブラリで依存関係エラーが発生したものもあり、その場合は、以下も合わせてアップデートしました。

 

  • struts2-codebehind-plugin 2.3.32
  • struts2-convention-plugin 2.3.32
  • struts2-dojo-plugin 2.3.32
  • struts2-json-plugin 2.3.32
  • struts2-tiles-plugin 2.3.32
  • tiles-api 2.2.2
  • tiles-core 2.2.2
  • tiles-el 2.2.2
  • tiles-freemarker 2.2.2
  • tiles-jsp 2.2.2
  • tiles-ognl 2.2.2
  • tiles-servlet 2.2.2
  • tiles-template 2.2.2

 

そもそも、mavenってこういう苦労を解決するはずのものなのに、なんでこんなに消耗しているの?感が出ていてお恥ずかしい限りですが、同じレベルで消耗しているJavaエンジニアさんの残業時間削減に、少しでも手助けになれば〜。

 

「pom.xmlってのはもっとこう書いたらええんやで。」という温かい助言があれば、そちらも大歓迎です。特に、commons系のライブラリは、他のフレームワークでも共用しているものが多く、excludeタグなどをどう効果的に使ったらよいものか、未だに定石が分かっていないんですよね...。

 

スポンサーリンク