【脆弱性について】MovableType6、7(MT4、MT5 PowerCMSも対象)XMLRPC API コマンドインジェクションの防御策

  1. Movable Typeの脆弱性について
  2. コマンドインジェクションの概要
  3. 対象のMovable Typeのバージョン
  4. 対策方法(MovableTypeをアップデートできる場合)
  5. アップデートの入手方法について
  6. MovableTypeのアップデートができない場合

Movable Typeの脆弱性について

筆者がテンプレート制作やサイトの仕様決めなど案件として携わった経験があるCMSのMovable Typeですが、今回はこのMovable Typeの脆弱性についてです。
2022年9月2日、IPA 独立行政法人 情報処理推進機構のサイトに掲載されていますが、バージョンによってはMovable Typeの XMLRPC API に「コマンド・インジェクション」の脆弱性が存在します。

IPA 独立行政法人 情報処理推進機構のサイト
「Movable Type」の XMLRPC API における コマンド・インジェクションの脆弱性について(JVN#57728859)
https://www.ipa.go.jp/security/ciadr/vul/20220824-jvn.html

コマンドインジェクションの概要

コマンドインジェクションは、外部からのデータ入力を受け付けるWebサイトに対して不正なコードを含めた内容を入力/送信することで、Webサーバー側で不正な処理が実行されてしまう攻撃手法で、対策がされていないMovable TypeのWebサイトが攻撃を受けた場合、脆弱性を突かれて第三者によって任意のコマンドが実行される恐れがあります。

対象のMovable Typeのバージョン

Movable Typeは以下の製品が対象です。

  • Movable Type 7 r.5202 およびそれ以前 (Movable Type 7系)
  • Movable Type 6.8.6 およびそれ以前 (Movable Type 6系)
  • Movable Type Advanced 7 r.5202 およびそれ以前 (Movable Type Advanced 7系)
  • Movable Type Advanced 6.8.6 およびそれ以前 (Movable Type Advanced 6系)
  • Movable Type Premium 1.52 およびそれ以前
  • Movable Type Premium Advanced 1.52 およびそれ以前

(https://www.ipa.go.jp/security/ciadr/vul/20220824-jvn.html
 更新:「Movable Type」の XMLRPC API におけるコマンド・インジェクションの脆弱性について より引用)

MovableType4.0以降のすべてのバージョンやMovable Typeがベースになっている「PowerCMS」も、バージョンによってはこの脆弱性の影響を受けます。

対策方法(MovableTypeをアップデートできる場合)

Movable Type6、7、Movable Type Advanced6、7、Movable Type Premium(Advanced)は、脆弱性が修正されたバージョンがリリースされていますので、それぞれ最新版にアップデートしてください。
MovableType4やMT5をお使いの方がアップデートする場合、最新版のMT7のライセンスを購入して、MTをアップグレードする必要があると思います。
既存サイトのカスタマイズされている内容によっては、アップグレード時に不具合が出る可能性があるので、ステージング環境などで動作検証した上で本番環境に反映すると良いでしょう。

アップデートの入手方法について

脆弱性対応版MovableTypeの入手方法は、「シックス・アパート ユーザーサイト」に登録されているMovableTypeライセンスやバージョンによって異なります。
詳細はシックス・アパートのサイトをご確認ください。
[重要] Movable Type 7 r.5301 / Movable Type 6.8.7 / Movable Type Premium 1.53 の提供を開始(セキュリティアップデート)

PowerCMSの方は、PowerCMSサポートサイトから修正ファイルをダウンロードして適用してください(要ログイン)
XMLRPC API におけるコマンド・インジェクションの脆弱性対策 (JVN#7602487) | 新着情報 | PowerCMS - カスタマイズする CMS

MovableTypeのアップデートができない場合

現在使用しているMovableTypeのバージョンが古く、アップデートができない場合、XMLRPC APIを無効化することで、この影響を回避することができます。(※無効化なのでXMLRPC API機能が使えなくなります。)

XMLRPC API無効化の方法

まずWebサーバーにFTPで接続します。MovableTypeがインストールされている階層に移動したら、ファイル一覧の中から「mt-xmlrpc.cgi」を選択、パーミッションの設定画面を開きます。(FTPソフトによって画面が異なります)

「オーナー/グループ/その他」それぞれ実行権限があります。
「実行」にレ点が入っているのは、cgiが実行できる状態です。
図の赤で囲っている箇所のチェックを外してOKボタンを押すと設定が保存され、実行権限が無くなり外部から実行されない状態になります。 (パーミッションの属性値は604など)

この方法以外、サーバーから「mt-xmlrpc.cgi」を削除する方法もあります。

公式サイト(シックス・アパート)では、対応方法として以下の方法を紹介しています。

アップデートが行えない場合は、次の方法で脆弱性の影響を回避、軽減することができるので対応を行なってください。
  • mt-xmlrpc.cgi への外部からのアクセス制限を行う、IPアドレスでの制限や BASIC 認証などのアクセス制限を行う
  • CGI/FCGI として利用している場合には mt-xmlrpc.cgi を削除する、もしくは実行できないようにする
  • PSGI で実行している場合、Movable Type 6.2 以降と Movable Type Premium では、設定ファイル mt-config.cgi に RestrictedPSGIApp xmlrpc を設定する
  • PSGI で実行している場合、Movable Type 6.1 以前では、設定ファイル mt-config.cgi に XMLRPCScript [ランダムで充分に長い文字列] を設定する

https://www.sixapart.jp/movabletype/news/2022/08/24-1100.html
[重要] Movable Type 7 r.5301 / Movable Type 6.8.7 / Movable Type Premium 1.53 の提供を開始(セキュリティアップデート) | Movable Type ニュース より引用

ちなみに上記にある「PSGI」は、以下のような技術です。
PSGIとは、Perl Web Server Gateway Interface の略で、Perl で書かれたウェブアプリケーションのサーバーレイヤーを抽象化するための仕様です。Python の WSGI や Ruby の Rack に相当します。
Movable Type 5.2 以降で対応しており、PSGI で動作させることで FastCGI 以上のパフォーマンス向上が見込めます。
https://www.movabletype.jp/faq/about-psgi.html
PSGI とは何ですか - Movable Type Q&A | CMSプラットフォーム Movable Type ドキュメントサイト より引用

MovableTypeインストール後、一度もバージョンアップしていないなあと思った方、インストールされているMTのバージョンを確認してください。もし上記のような脆弱性があった場合は早めの対応を。

MovableType/WordPressを使ったホームページ制作、機能追加や設置代行などの改修、システム開発、サイトの保守を手掛けております。


アナタが実現させたい機能、やりたい事をお聞かせいただけませんか? そのイメージを一緒に実現しましょう!
お問い合わせは以下のページから!!

やまライダーのサイトへ

書いた人:やまライダー

やまライダーです。仙台市でブロガー兼システム寄りのWebディレクターとして働きながら嫁と一緒に子育て奮闘中!
タスク管理ツール「Todoist」でガントチャートが作成ができる補助ツール「Todoist ガントチャートコンバータ」作者。
鳥が好きでキンカチョウ(錦花鳥)を飼っています。

プロフィールを見る
やまライダーのTwitter(自転車用アカウント)
やまライダーのTwitter(システム寄りwebディレクター用)
やまライダーのInstagram