今回は、Movable Type Advent Calendar 2021 の9日目の記事です。
私は開発者というわけではなく、立場としてはWEBディレクターなのですが、最近では営業やWEBプロデューサー寄りの業務が増えています。
そのため、Movable Typeには毎日触っているのですが、開発したものがあったり実装したTipsなどがあまり見つからず。そこで、いま対応している人も多いかもしれませんが、セキュリティ対策についての話題を。
1日目にYoshiki Katoさんも書いていましたXMLRPC APIの脆弱性をついた攻撃についてと、改めてセキュアなMT構築について確認します。
「Movable Type」の XMLRPC API における OS コマンド・インジェクションの脆弱性について
この脆弱性について、10月20日に IPA(情報処理推進機構)のサイトへ重要なセキュリティ情報として掲載されました。
「Movable Type」の XMLRPC API における OS コマンド・インジェクションの脆弱性について(JVN#41119755)
その後、数回にわたってページは更新されています。
11月5日には、本脆弱性を悪用した攻撃が確認されているため、出来るだけ早急に、対策するように。また、11月9日には「Movable Type」をベースとした 「PowerCMS」でも対応が必要との掲載でした。
この脆弱性については、最初に掲載された10月20日の時点で、シックス・アパート社からも重要なセキュリティアップデートの連絡がありました。またTwitterなどでも注意喚起とともに、アップデートのお知らせがありました。
[重要] Movable Type 7 r.5003 / Movable Type 6.8.3 / Movable Type Premium 1.47 の提供を開始(セキュリティアップデート)【2021/12/1 追記】
上記のようにニュース記事としても公開されており、こちらも数回にわたって更新されています。
11月9日には、悪質な攻撃が観測されているということで、不明なPHPの設置や .htaccessファイルの書き換えなどが起こっているとのこと。早急に対策する必要性あることが記載。
11月22日には、攻撃を受けてしまった場合の対策について。12月1日には、その他の複数の問題にも対応した 最新版のリリースがお知らせされています。
脆弱性の内容については、1日目のYoshiki Katoさんの記事を参照ください
Movable Type の XMLRPC API における OS コマンドインジェクションの脆弱性 (CVE-2021-20837) を悪用した攻撃被害に関する対応メモ
行った対応や受けた相談
私が最初に気づいたのは @movabletypejp のツイート。対象はMovable Type 4.0 以上で、必ず対応してくださいというものでした。
ニュース記事を確認し、すぐに対応した方が良さそうと感じましたが、すべてのクライアントですぐにアップデートができるとは考えにくいところ。しかし、すぐにアップデートできない場合の対処法も記載されていたので、まずは、その対応を行うことに。
XMLRPC API を使っていないのがほとんどでしたので、mt-xmlrpc.cgiの実行権限をなくすことが早そうということで、弊社で管理している、サーバー情報がわかるものは無償で全て対応し、クライアントに事後報告するようにしました。
いま考えると、このときにすぐに対応して良かったと思っています。
弊社で構築していないサイトですが、知り合いの制作会社などから、この脆弱性の影響でサイトにアクセスできなくなったり、不明なファイルが置かれてしまったということで、相談を受けました。アップデートの相談も受けましたが、mt-xmlrpc.cgiの削除か実行権限をなくす対応を伝えています。2社ほど相談を受けましたが、いずれもバックアップファイルから復元したようです。アップデートについては見積もり調整中。
この時、どうやって最新の情報を確認しているかの相談もありましたが、Twitterで先に気づきましたが、メールでのお知らせがあったことを伝え、メールマガジンなども伝えました。ただ、どうやらメールマガジンは登録済みのよう。メールは受信していたけど読んでいなかったようです。一応、ざっとは読むようにしましょう。
その後、弊社で構築していながらすぐにサーバー情報がわからなかったサイトなどで、11月下旬に複数サイトで問題が出てきました。共通しての現象は、.htaccessが書き換えられていたことと、不明なディレクトリやPHPファイルが置かれていたこと。
その他、MTのプログラムファイルが収められたディレクトリが削除されているものもありました。
MTファイルが削除されていないものは、不要なファイルの削除や.htaccessファイルをバックアップから復元などで回復できましたが、MTファイルがなくなり、定期的にバックアップが取られていないサイトが苦労しました。
結果としては、DBは無事のようだったので、同じバージョンのMTを再インストールし、プラグインなども再インストールすることで復元しました。
今後の対応
攻撃されたサイトで、MTファイルが削除されているなど面倒だったものは、トップディレクトリ直下に /mt/ などとデフォルトに近い状態でインストールされたものが多く、そのようなインストールをしたのはかなり前の意識が未熟なときなものが多かった印象。
現在は、セキュリティ対策を別途、予算を取って対応するところもあるので、そのようなサイトは、今回の影響を受けていません。その対応は、シックス・アパート社で公式に案内している「Movable Type セキュリティ対策ガイド」に従ったもの。
別途予算が付かない場合は、やや疎かになってしまうので、できるだけ基本的に対応するようにした方が良いだろうと考えています。ある程度対応できているものもありますが、簡単にご紹介します。
- 最新のMTを利用
- 管理画面にBASIC認証
- 管理画面をSSL通信する
- CGIスクリプト名を変更
mt-config.cgi に設定する環境変数で変更できます
- 使わないCGIスクリプトの権限を変更
これを行っていれば、今回も大丈夫だったはずです
- パスワードの強度を上げる
- ロックアウトを設定
- Data APIの権限設定
- サーバーのセキュリティを見直し
サーバーについては、別問題でもありますが、合わせて確認したいところ。
今回、XMLRPC API を使っているサイトがあったので、そこは mt-xmlrpc.cgiを無効にしつつ、アップデートの相談中です。
普段は、WPなどよりセキュリティ面で優位と案内しているだけに、このような時は慌ててしまいます。改めて、普段の構築からセキュリティ対策を考えるようにしようと思いました。
Movable Type は、インターネット上で利用されるソフトウェアです。もちろん、ベンダーの責任として細心の注意を払って設計し提供していますが、必然的にセキュリティ問題とは無縁ではいられません。では、どうすればいいのでしょうか。Movable Type それ自体でできることだけでなく、ソフトウェア以外の部分でもできることがありますので、具体的に説明します。 最新のバージョンでは、新機能の追加や不具合修正だけではなく、脆弱性の修正や新しいセキュリティ対策も施しています。これは、当社内で発見したものだけでなく、利用者、セキュリティ専門家などにより発見され報告されたものも含まれています。常に最新版にアップデートをし続けることは、手間が掛かりますが、既知の脆弱性を利用したセキュリティリスクを低減する上で、最も有効な方法です。 Movable Type では過去のバージョンのメンテナンスも一定の期間行っています。 プロダクトライフサイクル を確認し、利用している Movable Type が最新版であることを確認してご利用ください。 開発・サポートが終了しているバージョンをご利用の場合は、アップグレードをご検討ください。各バージョンの開発・サポートのスケジュールについては「 プロダクト・ライフサイクルポリシー 」をご確認ください。 Movable Type は管理画面を経由して、管理するウェブサイトに様々な操作を行うことができます。Movable Type それ自体のセキュリティ問題だけでなく、アカウント情報の漏洩やなりすましなどによるリスクを低減するために簡単に実施できる対策としては、管理画面に BASIC 認証を設定する方法があります。このとき、認証用の ID とパスワードは、Movable Type のユーザー名 、パスワードとは別の情報を用いた方が良いでしょう。 BASIC 認証を利用する場合は、SSL 通信も併せて有効にすることをおすすめします。 Movable Type のアカウント情報や認証情報、操作内容のネットワーク上での盗聴や漏洩のリスクを低減するため、管理画面へのアクセスを SSL 通信にする事を推奨します。SSL通信を有効にする方法は、ご利用のウェブサーバーのドキュメントをご参照ください。 Movable Type の CGI スクリプト名は、標準では [mt.cgi] や [mt-upgrade.cgi] など、どの環境でも同じ名前です。BASIC 認証や、SSL 通信を利用できないサーバーをお使いの場合でも、CGI スクリプト名を予測しにくい名前に変更することで、第三者からの不正アクセスのリスクを低減できます。 Movable