Movable Type 6.3.7 リリースノート
このバージョンでは、いくつかのセキュリティ上の課題が修正されています。多くの場合には問題が発生する可能性は低いと考えますが、互換性に影響を及ぼす修正がいくつか含まれており、ご利用中のプラグインによっては動作に影響を及ぼす場合があります。アップデートを行う際には、データベースのバックアップを必ず取得したのち、上書きアップデートではなく別ディレクトリへインストールする形でのアップデートを強くおすすめします。
セキュリティ修正
- [MTC-24856][MTC-24811][MTC-24830] オブジェクトの作成時と保存時における blog_id のチェックを厳格に実施するように変更しました。
- [MTC-24858] 内部的に別名が定義されているオブジェクトに対しての権限チェックを厳格に実施するように変更しました。
- [MTC-24888] システム権限レコードが書き換わる場合がある問題を解決しました。
- [MTC-10795][MTC-24813] XSS 対策が不十分な箇所が存在したためエスケープ処理を追加しました。
- [MTC-24812][MTC-24833] 適切な権限を有していない場合でもアイテムの検索結果を表示できる問題を解決しました。
- [MTC-24798] 一覧の表示オプションを書き換えられる問題を解決しました。
[MTC-24831] リクエスト対象の blog_id に対する権限チェックを厳密に行うように変更しました。
Movable Type クラウド版
[MTC-10725] OpenSSLの複数の脆弱性に対応したモジュールに入れ替えを行いました。 ( CVE-2017-3735, CVE-2017-3736 )
新機能・改善された機能
検索
[MTC-9375] カテゴリの AND 検索が利用できるようになりました。「category:”Foo AND Bar”」と指定した場合、Foo カテゴリと Bar カテゴリの両方に属する記事を抽出できるようになります。
サーバー配信
[MTC-13483] サーバー配信のログに実施した設定名とスケジュール配信か即時配信かの情報が表示されるようになりました。
新しく追加されたコールバック
cms_class_param_filter.$TYPE
MT::CMS::Common::save メソッドにおいて、’class’ パラメータを受け付けるかの判定をするコールバックです。$TYPE には _type で指定されたオブジェクトタイプ名が入ります。 指定されたオブジェクトを許可する場合は、コールバックから 1 を 返却します。
パラメータ
$cb, $app
コールバック実装例
sub cms_class_param_filter {
return 1;
}
applications:
cms:
callbacks:
cms_class_param_filter.category: >
sub {
return 1;
}
新しく追加された環境変数
XXSSProtection
指定すると CGI からのレスポンスヘッダーに X-XSS-Protection が追加されます。初期値はありません。
設定例
XXSSProtection 1; mode=block
DefaultClassParamFilter (all | moderate | none)
MT::CMS::Common::save を利用する場合に入力値として class の値を受け付けず、エラーとさせるオブジェクトの範囲を指定します。ただし、DefaultClassParamFilter の値が none の場合を除き cms_class_param_filter.$TYPE の結果が優先させます。(コールバックの結果が 1 のとき、値を許容する)
初期値は all です。
設定できる値
- all: 全ての MT::Object に対して受け付けない。
- moderate: MTの提供するオブジェクトに対してのみ受け付けない。
- none: 全ての MT::Object に対して受け付ける。
その他
- [MTC-9923] アイテムの編集画面に、アイテムを別ウィンドウで開く機能とパーマリンクをコピーする機能を追加しました。
- [MTC-13502] ダッシュボードに表示されている MT ニュースをクリックしたとき、別ウィンドウで表示するように変更しました。
変更された機能
開発者向け
MT::App::permissions は、現在サインインしているユーザーがリクエストに対して適切な権限を有していない場合に、 undef を返します。以下のようなコードは実行時エラーを引き起こしますので修正をする必要があります。
If ( $app->permissions->can_xxxxxx ) {
......
}
修正後のコードは以下のようになります。
my $perms = $app->permissions;
If ( $perms && $perms->can_xxxxxx) {
......
}
また、class_type をエンティティクラスに持つオブジェクトについて、MT::CMS::Common::save でオブジェクトの保存を行う場合には、入力値として「class」が渡された場合にエラーとなるようにしました。「class」を入力値として利用される場合は、MT::CMS::Common::save ではなく、独自の save メソッドを用意して form から __mode を指定してください。save_xxxxx (xxxxx は _type の値)を定義している場合も同様です。 この動作は、前述の cms_class_param_filter コールバックを利用してハンドルすることができます。
Movable Type for AWS / Movable Type Advanced for AWS
- [MTC-10076][MTC-24941] 初期セットアップ時にユーザーのメールアドレスを必須入力から任意入力に変更しました。これは、AWS Marketplace の規約によるものです。Movable Type から送信されるメールアドレスの送信者には、引き続きシステムのメールアドレスが利用されますので、初期セットアップ時にメールアドレスを入力しなかったときは、Movable Type の導入後「システム」-「設定」から設定を行ってください。
Movable Type クラウド版
- [MTC-10969] run-periodic-tasks の CPU 占有率の上限を 40% に設定しました。これは、パフォーマンス上の理由によるものです。
- [MTC-11019] nginxをアップデートしました。
- [MTC-11046] Apache httpd サーバーをアップデートしました。
アイテム
- [MTC-13179] アイテム編集画面において、作成者の表示をユーザー名からユーザー表示名に変更しました。
その他
- [MTC-24799] 明示的にウェブサイト、ブログに対して権限を割り当てられていないシステム管理者は、記事オプションが保存されません。記事の作成や管理行為に影響はありません。
修正された問題
Movable Type クラウド版
- [MTC-10777] Apache 版において、httpd.conf 内の ServerName が正しく設定され無い問題を解決しました。
- [MTC-10801] マルチドメインで利用しているとき、ドメイン名を変更するとサイトパスが変わってしまう問題を解決しました。
- [MTC-10819] CMSSearchLimit 環境変数を設定できない問題を解決しました。
- [MTC-13135] Apache 版において、サイトの設定を保存したとき応答がない問題を解決しました。
アイテム
- [MTC-9870] EnableUploadCompat 環境変数が有効なとき、アイテム一覧へのアクセス権限を有する場合でもアイテムのアップロード後に遷移しない問題を解決しました。
- [MTC-24853] アップロード直後に「編集」をクリックするとエラーが発生する問題を解決しました。
- [MTC-24982] ユーザー画像のアップロードダイアログを開くとエラーになる問題を解決しました。
- [MTC-25013] ユーザー画像のアップロードダイアログにおいて、一覧に表示されるアイテムが正しくない問題を解決しました。
スマートフォンオプション
- [MTC-9997] PSGI 環境下において、スマートフォンで管理画面を参照したあと、PC から管理画面を参照したときに、古いアップロード画面が有効になる問題を解決しました。
ダイナミック・パブリッシング
- [MTC-9902] MTWidgetSet/MTWidgetManager に parent=”1” を指定したとき、ダイナミック・パブリッシングで正しく動作しない問題を解決しました。
- [MTC-9933] MTAssetURL が、サポートディレクトリではなく mt-static ディレクトリを参照する URL を生成する問題を解決しました。
- [MTC-9965] MTSubCategories/MTSubFolders のソート結果がスタティック・パブリッシングと違う問題を解決しました。
- [MTC-9978] MTPageNext/MTPagePreviousにおいて by_folder モディファイアが実装されていない問題を解決しました。
- [MTC-10022] リクエスト終了時に データベース接続を明示的にクローズするように変更しました。
- [MTC-10069] MT クラスの display() 関数を呼び出すとき、内部的に init_plugins() が呼び出されていないためにエラーとなる問題を解決しました。
- [MTC-10074] MTEntries の tag モディファイアで NOT 指定が有効にならない問題を解決しました。
テンプレート
- [MTC-10072] identifier モディファイアで呼び出されるモジュールが「インクルードテンプレート」に一覧されない問題を解決しました。
テンプレートタグ
- [MTC-9935] MTIf において、ne モディファイアで判定する変数が未定義の場合、挙動が不定になる問題を解決しました。
- [MTC-9974] MTEntryAssets/MTPageAssets において、lastn の挙動が limit と同様であった問題を解決しました。
- [MTC-10037] MTIncludeBlock タグブロック内部において、contents 変数を参照すると自己参照によるエラーが発生する問題を解決しました。
- [MTC-12989] MTMultiBlog において、mode モディファイアが “context” のとき、include_with_website=”1” を指定してもウェブサイトの記事が含まれない問題を解決しました。
- [MTC-10056] MTBuildTemplate がテンプレートのプレビュー時にモジュールの ID を表示する問題を解決しました。
ユーザー管理
- [MTC-10052] ユーザー名に “0” を指定したとき、未入力のエラーが発生する問題を解決しました。
ロールと権限
- [MTC-10024] 「ウェブサイトと所属ブログの管理」を含むロールを保存したとき、「ウェブサイト管理者」の権限がロールから削除される問題を解決しました。
- [MTC-25069] 「ユーザーの管理」だけを有するユーザーが「権限の追加」モーダル内でユーザーを検索できない問題を解決しました。
その他
- [MTC-24857] 権限を削除された場合でも、サイトセレクターにウェブサイト、ブログに表示が残っていた問題を解決しました。
- [MTC-24916] 新しいバージョンの Perl で mt-check.cgi を実行するとエラーが出力される問題を解決しました。
- [MTC-25008][MTC-10073] タイポを修正しました。
- [MTC-10027] is_url の判定を見直しました。
- [MTC-10077] サポートディレクトリに書き込み権限がないとき、ウィザードがエラーとなる問題を解決しました。
- [MTC-13386] reset_password の引数を見直しました。
- [MTC-25017] 不要なデバッグコードを削除しました。
- [MTC-25054] Memcached のキーのバリデーションを追加しました。
Thanks To
このリリースには Movable Type コミュニティーから報告された多くの、バグ修正、パッチ提供が取り込まれています。FogBugz / Jira を通じてパッチおよび、バグレポートを提供してくださったコミュニティーメンバーのお名前は以下の通りです。皆様のご協力に感謝します!(順不同、敬称略)
- 渡邊慎吾@alfasado (MTC-9923, MTC-10073, MTC-10072)
- Norio Saito (MTC-24916)
- Junnama Noda (MTC-24856, MTC-24857, MTC-24858, MTC-24812, MTC-24811, MTC-9933, MTC-9935, MTC-24798, MTC-24799, MTC-25068)
- tinybeans (MTC-25008)
- takatoshi kondoh (MTC-24813, MTC-10024)
- naoki onozaki (MTC-10074)
- Ryuji Sakai (MTC-25069)
※ FogBugz から Jira へ移行した際にレポートを頂いた方の情報が引き継がれていないことにより、名前が載っていない方が数名いらっしゃいますが、改めてお礼申し上げます。