Movable Type の CSRF による脆弱性が公表
本日、シックス・アパート株式会社から Movable Type の脆弱性に関する公式アナウンスがありました。この問題、既に 2004 年 8 月に SG::Acme で提起されて以来、MT hxxks などを始めとして一部ではずっと前から啓蒙されていた問題なのでかなりの「今更感」がありますよね。MT がずっと引きずっていた脆弱性です。余談ですが私はこの脆弱性に関連して CSRF という用語を知りました。最近では社会的に知名度のある有名な組織のウェブサイトも Movable Type を利用したものが幾つか立ち上がっています。自分はそんなサイトに出会うなり、個人的興味から mt.cgi を探って、意外と簡単にログインページを見つけては「大丈夫かなぁ?」と心配したりしたものです。また、個人のブログではこの脆弱性の存在があまり知られていないためか、探りを入れれば簡単に mt.cgi を見つけることができてしまいます。それならまだしも中には「管理用」などとご丁寧に mt.cgi へのアンカーが記述されているブログもあります。管理者や投稿者の利便性だけのために。上記シックス・アパートによるアナウンスにトラックバックしているほとんどのサイトは、こんな事実があったのかという触れ様で、やはりあまり認知されていないということでしょうか。
さて、私は Movable Type 3.16 がリリースされてすぐ、そのソースコードを凝視しました。3.16 は数字の上ではマイナーなバージョンアップですが、3.2 としても良いくらいに、かなり広範に渡った仕様変更やソースコードの書き換えがされています。上記の脆弱性に関しても、3.16 の広範に渡る修正によって対策がされています。Sixapart の新しいソフトウェア品質保証チームが初めてリリースする Movable Type ということもあり、大量のバグフィクスもされています。ここ最近は数えられる幾つかのファイルを差し替えるだけでアップデートできましたが、今度はそうもいかないでしょう。PostgreSQL での利用で起こる MT::PluginData の問題も、3.16 では新規インストールに限って解消されています。これは DB 作成時に用いるスキーマが更新されたためで、既存のユーザには次期リリース (3.2?) で対応するとされています。
ところで、コメントとトラックバックのスパムから Movable Type を守ってくれるプラグイン、MT-Blacklist は近くオープンソースになるとのことで、少し前に作者の Jay Allen 氏は MT-Blacklist をベースにした新しいプラグイン Spamlookup を高く評価し、利用を推奨しています。MT-Blacklist をアンインストールして Spamlookup をインストールし利用する手順に自信が無く、上記 PostgreSQL の MT::PluginData もあるので環境をリセットして 3.16 を新規インストールしよう、なんて一時は考えていたのですが、今はやはり考え直しました。なんだそれ。
ほとんど効果は無いみたいですが、問題になっているスクリプトのファイル名変更関して補足します。
公式マニュアルの設定ガイドには 5 つのスクリプトについて変更方法が記載されています。実際にはこれに加えて AdminScript と AtomScript の 2 つについてスクリプトを変更できます。各スクリプトを任意のファイル名を変更したら、mt.cfg で変更したスクリプトについて設定します。今回の問題に関係ありそうなスクリプトは AdminScript と XMLRPCScript、AtomScript の 3 つでしょうか。蛇足ですが初期のコメントスパムやトラックバックスパムには、ここで CommentScript と TrackbackScript の変更をしておくだけでもかなりの効果がありました。
AdminScript mt-uha-ok-wwwwwwwww.cgi
CommentScript mt-comments-UHA-OK-wwwwwwwww.cgi
TrackbackScript tb-wwwwwwwww.cgi
SearchScript mT-sEaRCh-uhA-oK-wWwWwWwWw.cgi
XMLRPCScript uha-wwwwwwwww.cgi
ViewScript wwwwwwwww
AtomScript mt-atom.uha
この例では ViewScript を拡張子の無い wwwwwwwww というファイル名にし、AtomScript を .uha という拡張子の mt-atom.uha に変更しています。拡張子を抜いたり変更したりした場合には、.htaccess 等でさらに CGI ハンドラを設定する必要があります。
# .uha を CGI script とする
AddHandler cgi-script .uha
# wwwwwwwww を CGI script とする
# <Files mt-atom.uha> # AddHandler を用いずこちらも可
<Files wwwwwwwww>
SetHandler cgi-script
</Files>
また、公式のマニュアルに記載されている mt.cfg の保護方法には誤りがあります。以下のように Limit で method を限定せずに、全てにおいて外部から保護した方がより自然でしょう。
<Files mt.cfg>
Order allow,deny
Deny from all
</Files>
さらに、mt.cfg の権限に関しても適切な設定を確認しましょう。これは環境によって設定が異なるので一概に言えないところが難しいですが、詳しくは利用しているサーバの設定やヘルプを参照すると良いでしょう。好ましいのはオーナーのみの 600 や 400、他には 604 や 644 などでしょうか。
パッチによるこの脆弱性の修正を期待する声も少なくないようですが、version 3.16 のソースを凝視した私が推測するに、多分恐らくパッチは提供されないだろうと思います。あくまでも推測ですが。修正が広く多くのファイルに及んでいるので、それぞれにパッチを当てるなら 3.16 にバージョンアップする方が良さそうです。もしパッチによる修正をするならば、脆弱性の公表と同時にパッチを配布したでしょう……
真琴さんからご指摘いただいたのですが「CSRF による脆弱性」というのは語弊があるというか、誤りでした。ここに訂正して謝罪します。
まとめます。特に Movable Type に限ったことではない CMS 全般が抱える普遍的な脆弱性に関して、シックス・アパートが誤解を招きかねない解り難いプレスリリースを何故か突然発表、それを受けたメディアの報道、さらに個人のブログ、そして読者へと「Movable Type は危険!」みたいな風潮が一部で広がってしまったようです。そこに naoya さんがシックス・アパートのプレスリリースを上手く指摘・解説し、それをフォローするコメントもこの問題の本質を的確にまとめています。私も当エントリで「危険だ!」と騒ぎたて警鐘を鳴らすまではしませんでしたが、シックス・アパートのプレスリリースが意図する内容を一部勘違いしていました (CSRF による脆弱性、ではなかった )。最近知った CSRF という知識を上手く噛み砕いて自分のものにできていなかったので、少し混乱していたようです。そういうわけで、このエントリの前半で述べていることはあまり的を得ていません。
- タグ
- Movable Type
- plugins
- PostgreSQL
- 公開日時
- 2005-05-12T19:46:30+09:00 @490
- 更新日時
- 2005-05-14T01:24:01+09:00 @725
- Permalink URI & TrackBack URL
- http://blog.drry.jp/2005/05/12/1946
TrackBack ( 1 )
- Movable Type における CSRF の可能性と各種対処法 from MT hxxks
- 2005-05-13T21:24:48+09:00 @490
- 今回シックスアパートが発表したのは、同じような対処法が考えられますが CSRF による脆弱性じゃないと思います。
コメント