Zotabox製「FB Messenger Live Chat」プラグインに発見された深刻なXSS脆弱性とは?
WordPressは世界中で圧倒的なシェアを誇るCMSであるため、ハッカーたちは人気のあるWordPressプラグインに対して絶えず攻撃を仕掛けています。その結果、WordPressプラグインにおける脆弱性の公開は、まるで終わりのないプロセスのように続いています。今回発見されたのは、Zotaboxが提供する「FB Messenger Live Chat」プラグインに存在する持続的(Stored)XSS脆弱性です。
公式のWordPressプラグインディレクトリによると、このプラグインは3万件以上のアクティブインストール数を誇ります。また、WordPress.orgの情報によれば、脆弱性を修正した新バージョン「1.4.9」がすでにリリースされています。
FB Messenger Live ChatにおけるXSS脆弱性の詳細
この脆弱性の核心は、WordPressのAJAX機能(ページを再読み込みすることなくスクリプトへデータを送受信する仕組み)にあります。問題となっているのは、update_zb_fbc_codeという関数が誰でもアクセス可能な状態になっていた点です。
以下のコードを見ると、ログイン済みユーザー向けのwp_ajax_update_zb_fbc_codeと、未認証ユーザー向けのwp_ajax_nopriv_update_zb_fbc_codeの両方が、同じ関数update_zb_fbc_codeを呼び出していることがわかります。つまり、ログイン状態にかかわらず、あらゆるユーザーがプラグインの設定を変更できてしまうのです。この脆弱性がいかに重大であり、どれほど悪用され得るかは強調しきれません。
154 add_action("wp_ajax_update_zb_fbc_code", "update_zb_fbc_code");
155 add_action("wp_ajax_nopriv_update_zb_fbc_code", "update_zb_fbc_code");
さらに問題なのは、update_zb_fbc_code関数には権限チェック機能が備わっておらず、設定変更を行う前のCROSS-SITE REQUEST FORGERY(CSRF:クロスサイトリクエストフォージェリ)対策も存在しないことです。加えて、この関数による入力値のサニタイズ(無害化)およびバリデーション(検証)は非常に限定的です。行われているのはaddslashes()によるエスケープ処理のみであり、変更された設定値がフロントエンド側で表示されることを考えると、これは明らかに不十分です。
157 function update_zb_fbc_code(){
158 header('Access-Control-Allow-Origin: *');
159 header('Access-Control-Allow-Credentials: true');
160 $domain = addslashes($_REQUEST['domain']);
161 $public_key = addslashes($_REQUEST['access']);
162 $id = intval($_REQUEST['customer']);
163 $zbEmail = addslashes($_REQUEST['email']);
164 if(!isset($domain) || empty($domain)){
165 header("Location: ".admin_url()."admin.php?page=zb_fbc");
166 }else{
167 update_option( 'ztb_domainid', $domain );
168 update_option( 'ztb_access_key', $public_key );
169 update_option( 'ztb_id', $id );
170 update_option( 'ztb_email', $zbEmail );
171 update_option( 'ztb_status_disconnect', 2 );
172 wp_send_json( array(
173 'error' => false,
174 'message' => 'Update Zotabox embedded code successful !'
175 )
176 );
177 }
178 }
このXSS脆弱性により、その後の処理にも連鎖的な影響が及びます。このプラグインは、WordPressのページ読み込み時にinsert_zb_fbc_code()を実行するよう登録しています。
151 add_action( 'wp_head', 'insert_zb_fbc_code' );
そして、この関数からprint_zb_fbc_code()関数へと処理が引き継がれます。
139 function insert_zb_fbc_code(){
140 if(!is_admin()){
141 $domain = get_option( 'ztb_domainid', '' );
142 $ztb_source = get_option('ztb_source','');
143 $ztb_status_disconnect = get_option('ztb_status_disconnect','');
144 $connected = 2;
145 if(!empty($domain) && strlen($domain) > 0 && $ztb_status_disconnect == 146$connected){
147 print_r(html_entity_decode(print_zb_fbc_code($domain)));
148 }
149 }
150 }
180 function print_zb_fbc_code($domainSecureID = "", $isHtml = false) {
181
182 $ds1 = substr($domainSecureID, 0, 1);
183 $ds2 = substr($domainSecureID, 1, 1);
184 $baseUrl = '//static.zotabox.com';
185 $code = <<<STRING
186 <script type="text/javascript">
187 (function(d,s,id){var z=d.createElement(s);z.type="text/javascript";z.id=id;z.async=true;z.src=" {$baseUrl}/{$ds1}/{$ds2}/{$domainSecureID}/widgets.js";var sz=d.getElementsByTagName(s)[0];sz.parentNode.insertBefore(z,sz)}(document,"script","zb-embed-code"));
188 </script>
189 STRING;
190 return $code;
191 }
安全確保のためにはアップデートを
最も基本的かつ重要な安全対策は、修正済みバージョンのプラグインへアップデートすることです。FB Messenger Live Chatプラグインはバージョン1.4.9へと更新されています。悪用の試みからサイトを守るため、必ず速やかにこのバージョンへアップデートしてください。
さらに、堅牢なサニタイズ・バリデーション体制を構築することで、XSSやCSRFなどの攻撃からウェブサイトを守ることができます。
包括的なセキュリティソリューションを導入しよう
昨今の状況において、セキュリティを軽視すれば取り返しのつかない損失を被りかねません。ウェブサイトを継続的かつ包括的に監視する体制を整えることは、サイトの安全性を高める上で非常に効果的です。WordPress向けに特化したセキュリティソリューション「Astra WordPress Security Suite」は心強い味方となるでしょう。Astraはファイアウォールを提供し、XSS、CSRF、悪質なボット、SQLインジェクションなど100種類以上の攻撃からサイトを保護します。まずはAstraのデモをお試しいただくか、お気軽にメッセージをお送りください。喜んでサポートいたします。
-
Facebookが放つZoom対抗馬「Messenger Rooms」とは?特徴・使い方を徹底解説
2020年4月下旬に発表されたFacebookの「Messenger Rooms(メッセンジャールーム)」が、デスクトップとモバイルの両方で全世界に展開されました。 Zoomはかつてないほどの人気を博しましたが、感染症の流行を受けて企業がビデオチャットアプリを探し始めたことをきっかけに必需品となり、一方でSNS各社には逆風が吹き荒れました。この状況を打開するため、各プラットフォームは新機能の追加に乗り出しています。 そして今回、Facebookはその魅力を取り戻し、Zoomに対抗すべく、最大50人が参加できるビデオ通話をホストできる「Messenger Rooms」をローンチしました。 何よ
-
Facebook Messengerでライブロケーション(現在地)を共有する方法【手順解説】
週末の予定を立てるためにMessengerを使っている人は多いのではないでしょうか。写真や動画の共有にも便利で、友人と集まる際には欠かせない万能ツールとなっています。そんな中、Facebookは新たに、移動中のリアルタイム位置情報を友人や家族と共有できる機能を追加しました。帰宅途中にこの機能を活用すれば、安全性への不安が和らぐという声もあります。Facebook社は月曜日、Messengerアプリにおいて、1対1のメッセージやグループチャット内で最長60分間、位置情報を継続的に共有できる機能をリリースしました。受信者側では、あなたが車で到着するまでのおおよその所要時間(ETA)を確認することも