さっきStruts 2.3.16.2(問題の2.3.16.1の修正版)が出たらしいので追加
mbsdに具体的なソースがあったのだが、そのソースコードへのリンクが消えている
(4月28日 12時現在:ソースのURLを直接打てば、存在する)
まず、この問題は、
「Strutsの脆弱性を突く攻撃を検知、早急な対策を」、ラック西本専務
http://itpro.nikkeibp.co.jp/article/NEWS/20140425/553442/
にあるとおりなのだが(Struts2でもStruts1でも起こる。
ただし、Struts1はEOLでパッチが出ないので、自分で対応する必要あり)
そのリンク先をたどると、
Apache Struts 2の脆弱性が、サポート終了のApache Struts 1にも影響
~国内でいまだ大量稼働するStruts 1利用企業に、直ちに緩和策を~
http://www.lac.co.jp/security/alert/2014/04/24_alert_01.html
に行き着く。たしかにラックの対応はでている。
ただ、ここで書かれているのは、「Struts 1の場合」「フィルタを作れ」と
書いてあるだけで、具体的にどのようにフィルタを作るのか書いてない。
そこで、具体的な作り方を
Struts1.X系に脆弱性の続きー対応策、こうしろと言ってる?(中間報告:その2)
http://blog.goo.ne.jp/xmldtp/e/9f9c7356bbeb365b48a94b287aaa9393
に書いた。ここで、フィルタのソースは、
暫定対応版のソースコード
http://www.mbsd.jp/img/testFilter.java
を参照しているのだが、このソースコードが、
2014/4/22
Apache Struts2(2.3.16、S2-020の修正版)に対するゼロディを弊社エンジニアが発見いたしました。
http://www.mbsd.jp/news20140422.html
からたどれなくなっている。ラックの上記説明では、このページを参照しているので、
暫定対応のソースをどう書けばいいのかわからない!
■この「暫定対応のソース」の、どこがすごいのか!
この情報をみたとき、パラメータというのは、URLのなかのパラメータ
を想像したのではないだろうか。わたしもそうだ。
で、上記「暫定対応版のソースコード」も、doFilterのはじめのループ
while (params.hasMoreElements())
で、それをチェックしている。
問題は、そのあと・・・
Cookie cookies[] = httpreq.getCookies();
して、クッキーの中も見ているのだ!
つまり、クッキーの中に問題のclassって言葉があると、それをみて、
実行しちゃうことを、はじいているように見える
たしかに、セッションIDなどは、クッキーに入っているので、
クッキーをtomcat,strutsが見ている可能性はある。
そして、もし、悪いやつらが、ブラウザではなく、Javaのプログラムを
作って、アクセスしてきた場合、クッキーに、問題となるパラメータを
仕込んで送信することもできるだろう・・・
・・・パラメータって、もしかして、クッキーも含んでいる???
これ、そのことには気づかないだろう(私は気づかなかった)
そこまで、やっている処理なので、これはすごいのだ
(それに比べたら、classという引数をプログラムで使っている
問題などは、問題にならん)
なので、このソースは、残しておいてほしいのだ・・・
今は、リンクがたどれないだけになっているけど、
そのうち、ソースコードも消されるかもしれない。
いまのうちに、Let'sダウンロード!
12時追加
P.S ごめん、これだと、mbsdが悪いように読めちゃうね!
mbsdはわるくない。なぜなら、この記事は、struts2の記事で、
struts2は、対応パッチが出たらしい・・・
24 April 2014 - Struts 2.3.16.2 General Availability Release - Security Fix Release
http://struts.apache.org/announce.html#a20140424
(バージョンを確認してほしい。上記mbsdに書かれているのは、2.3.16.1、
上のアナウンスは、2.3.16.2,バージョンがあがっているから、
修正しているみたい)
mbsdは、Struts2の話しかしてなくて、その対応版が出たのだから、
暫定版を削除してしまうのは、当たり前の話なのだ。
だけど、そうされると、struts1の人は・・・っていうことで
このエントリは、struts2に上げられない、貧しい子のためのお願いなのだ。。)
詳しくは、あとで
mbsdに具体的なソースがあったのだが、そのソースコードへのリンクが消えている
(4月28日 12時現在:ソースのURLを直接打てば、存在する)
まず、この問題は、
「Strutsの脆弱性を突く攻撃を検知、早急な対策を」、ラック西本専務
http://itpro.nikkeibp.co.jp/article/NEWS/20140425/553442/
にあるとおりなのだが(Struts2でもStruts1でも起こる。
ただし、Struts1はEOLでパッチが出ないので、自分で対応する必要あり)
そのリンク先をたどると、
Apache Struts 2の脆弱性が、サポート終了のApache Struts 1にも影響
~国内でいまだ大量稼働するStruts 1利用企業に、直ちに緩和策を~
http://www.lac.co.jp/security/alert/2014/04/24_alert_01.html
に行き着く。たしかにラックの対応はでている。
ただ、ここで書かれているのは、「Struts 1の場合」「フィルタを作れ」と
書いてあるだけで、具体的にどのようにフィルタを作るのか書いてない。
そこで、具体的な作り方を
Struts1.X系に脆弱性の続きー対応策、こうしろと言ってる?(中間報告:その2)
http://blog.goo.ne.jp/xmldtp/e/9f9c7356bbeb365b48a94b287aaa9393
に書いた。ここで、フィルタのソースは、
暫定対応版のソースコード
http://www.mbsd.jp/img/testFilter.java
を参照しているのだが、このソースコードが、
2014/4/22
Apache Struts2(2.3.16、S2-020の修正版)に対するゼロディを弊社エンジニアが発見いたしました。
http://www.mbsd.jp/news20140422.html
からたどれなくなっている。ラックの上記説明では、このページを参照しているので、
暫定対応のソースをどう書けばいいのかわからない!
■この「暫定対応のソース」の、どこがすごいのか!
この情報をみたとき、パラメータというのは、URLのなかのパラメータ
を想像したのではないだろうか。わたしもそうだ。
で、上記「暫定対応版のソースコード」も、doFilterのはじめのループ
while (params.hasMoreElements())
で、それをチェックしている。
問題は、そのあと・・・
Cookie cookies[] = httpreq.getCookies();
して、クッキーの中も見ているのだ!
つまり、クッキーの中に問題のclassって言葉があると、それをみて、
実行しちゃうことを、はじいているように見える
たしかに、セッションIDなどは、クッキーに入っているので、
クッキーをtomcat,strutsが見ている可能性はある。
そして、もし、悪いやつらが、ブラウザではなく、Javaのプログラムを
作って、アクセスしてきた場合、クッキーに、問題となるパラメータを
仕込んで送信することもできるだろう・・・
・・・パラメータって、もしかして、クッキーも含んでいる???
これ、そのことには気づかないだろう(私は気づかなかった)
そこまで、やっている処理なので、これはすごいのだ
(それに比べたら、classという引数をプログラムで使っている
問題などは、問題にならん)
なので、このソースは、残しておいてほしいのだ・・・
今は、リンクがたどれないだけになっているけど、
そのうち、ソースコードも消されるかもしれない。
いまのうちに、Let'sダウンロード!
12時追加
P.S ごめん、これだと、mbsdが悪いように読めちゃうね!
mbsdはわるくない。なぜなら、この記事は、struts2の記事で、
struts2は、対応パッチが出たらしい・・・
24 April 2014 - Struts 2.3.16.2 General Availability Release - Security Fix Release
http://struts.apache.org/announce.html#a20140424
(バージョンを確認してほしい。上記mbsdに書かれているのは、2.3.16.1、
上のアナウンスは、2.3.16.2,バージョンがあがっているから、
修正しているみたい)
mbsdは、Struts2の話しかしてなくて、その対応版が出たのだから、
暫定版を削除してしまうのは、当たり前の話なのだ。
だけど、そうされると、struts1の人は・・・っていうことで
このエントリは、struts2に上げられない、貧しい子のためのお願いなのだ。。)
詳しくは、あとで