エンジニアブログ

エンジニアブログ
MT技術情報

どこよりも早いMovableType4.23の差分を調べる会

ぴろり上西 2008年12月03日

 こんにちは。上西です。4.23(゚∀゚)キターということで、早速、前のバージョンとの差分を取ってみました。Let's diff!
 今回はXSS(Cross Site Scripting)脆弱性への対応ということで、プログラム的な変更よりもテンプレートでの細かい変更が目立ちます。追加されたたくさんの escape="html" に涙がちょちょ切れそうになります。シックス・アパート株式会社の中皆さん、本当にお疲れ様でした。

  • テンプレート中で、ユーザに入力を許す部分(ユーザ名やURL)の出力時にHTMLエスケープ指定が追加されている
  • プログラム中で、フィールドに入力された文字でXSSで利用されうる文字をエラーとして扱うようになった
  • 本体のスキーマバージョンの変化はなし
  • MT::Util::remove_html のロジック変更
  • テンプレートタグ中でも外部からの入力値を使用する際にエスケープを行っている

 当初、MTの管理画面で入力されるフィールドは、システムにログインできる人間が使うだけだったこともあって、このあたりの作りこみが甘い傾向があります。コミュニティパックが公開されて以降、一般のビジタにもブログを与えることができるようになり、この管理画面の機能の一部が完全な第三者にも曝されるようになったわけです。そのため、悪意のある第三者によって、フィールドにシステム管理者の意図しないような値を入力されると、これらの部分が脆弱性として現れやすいようです。前回のHack-a-thonでもそのような裏話がありました。ざっとみた感じでは網羅的にHTMLエスケープが施されているようですが、プログラムがこれだけ巨大化してしまった今、もしかしたら、またすぐに4.24が出ちゃうかもしれませんね!?(泣)