JVNに報告された脆弱性への対応について


a-blog cms で複数の脆弱性が見つかりました。 すでに問題に対応したバージョンはリリースしておりますので、該当のバージョンに当てはまる場合は大変お手数ですが以下のご対応をお願いいたします。

今回は見つかった脆弱性は以下の3つです。

  • クロスサイトスクリプティング
  • テンプレートインジェクション
  • IPアドレスによるログイン制限の突破

JVN識別番号

  • JVN#14706307

クロスサイトスクリプティング・テンプレートインジェクション

問題の対象となる状態

プロフィールページのユーザー名または、デフォルトテーマのテンプレートのエントリータイトルがサニタイズせず出力しているため、クロスサイトスクリプティングまたはテンプレートインジェクションの脆弱性が存在します。
信頼されない投稿者以上のユーザーがログインするサイト、または会員機能がありユーザーが名前を入力できるようにしているサイトの場合は、ご対応をお願いいたします。

影響を受けるバージョン

  • a-blog cms Ver. 3.0.1 より前のバージョン (Ver.3.0.x系)
  • a-blog cms Ver. 2.11.42 より前のバージョン (Ver.2.11.x系)
  • a-blog cms Ver. 2.10.44 より前のバージョン (Ver.2.10.x系)
  • a-blog cms Ver. 2.9.40 より前のバージョン (Ver.2.9.x系)
  • a-blog cms Ver. 2.8.75 より前のバージョン (Ver.2.8.x系)
  • a-blog cms Ver. 2.8.0 未満のバージョン(フィックスバージョンはありません)

IPアドレスによるログイン制限の突破

問題の対象となる機能

管理ページ > コンフィグ > アクセス制限にある 「ログイン制限」「権限制限」「ベーシック認証(認証スキップ)」 機能をご利用の場合

詳細

IPアドレスによるログイン制限を突破されてしまう可能性が存在します。 管理ページ > コンフィグ > アクセス制限にある 「ログイン制限」 機能をご利用の場合は、アップデートをお願いいたします。
(※この脆弱性によりIPアドレスによる制限は突破される可能性がありますが、ログイン機能自体に脆弱はなく、ユーザー名とパスワードによる認証は正常に機能します。)

影響を受けるバージョン

  • a-blog cms Ver.2.11.41 より前のバージョン (Ver.2.11.x系)
  • a-blog cms Ver.2.10.43 より前のバージョン (Ver.2.10.x系)
  • a-blog cms Ver.2.9.39 より前のバージョン (Ver.2.9.x系)
  • a-blog cms Ver.2.8.74 より前のバージョン (Ver.2.8.x系)
  • a-blog cms Ver. 2.8.0 未満のバージョン(フィックスバージョンはありません)

問題への対応方法

各マイナーバージョン毎にフィックスバージョンがリリースしております。 「影響を受けるバージョン」 よりも新しいフィックスバージョンにアップデートを行なってください。

バージョンアップ 以外の対応方法

  • IPアドレスによるログイン制限機能の代わりに、.htaccessなどのWebサーバー側の機能を利用する
  • エントリータイトルを出力しているテンプレートを確認しエスケープ漏れしていないか確認する([raw]校正オプションがついていたら削除し、escape校正オプションを追加)
  • 会員サイトの場合、名前を出力している箇所を確認し、エスケープ漏れしていないか確認する([raw]校正オプションがついていたら削除し、escape校正オプションを追加)またグローバル変数「%{USER_NAME}」「 %{SESSION_USER_NAME}」 を利用している場合は、使用しないようにテンプレートを修正する。

この度はご迷惑をおかけしてしまい申し訳ございません。
該当する問題がありましたら、お早めにバージョンアップのご検討をお願いいたします。 また、迅速にご報告いただいたユーザーの皆さま、誠にありがとうございました。

今後もご報告いただいた内容に対して真摯に受け止め修正と改善を行ってまいります。 よろしくお願いいたします。

本件に関するお問い合わせ先

本件についてご不明点などありましたら以下のお問い合わせよりご連絡ください。

有限会社アップルップル
メールアドレス:info@a-blogcms.jp
お問い合わせフォーム:https://www.a-blogcms.jp/contact/

Google Translate APIを使って翻訳ボタンを作る


Google Translate API を利用した翻訳機能は Ver. 3.1.12 で廃止されました。


a-blog cms Ver.2.8.0に組み込みJSに翻訳機能がつきました。この機能を使うことで日本語を例えば英語に変換して別のテキストエリアに翻訳結果を自動入力するカスタマイズが可能になります。

まずは Google Translate API を使用するために以下の2つのステップが必要になります。

  1. API key の取得
  2. API key を CMS のプロパティ設定で登録する。

1. API key の取得


まずは、Google API Console にアクセスしてログインしてください。ログイン後、任意の名前でプロジェクトを作成します。 上の画像のように 1, 2 の手順でプロジェクトを新規作成できます。


左上のセレクトメニューをクリックし、先ほど作成したプロジェクトを選択します。



次は、サブカラムより「ライブラリ」という項目をクリックし、API ライブラリのページに移動します。そのページにて、Google Cloud Translation APIという項目を検索して有効化してください。



最後に「認証情報」をクリックして認証情報の設定画面に移動します。そこで新たに API key を作成します。今回はキーの制限は「なし」でも大丈夫です。ただしセキュリティ上、「IP アドレス」を指定し、アクセスできるIPアドレスを制限しておくことをオススメします。


この時発行される API key を覚えておきましょう。

2. API key を CMS のプロパティ設定で登録する。


プロパティ設定

プロパティ設定

a-blog cms Ver. 3.0 系 の APCuキャッシュに関する不具合について


a-blog cms Ver. 3.0系で、 APCu というphp共有メモリキャッシュ について問題が見つかりました。 同じphp実行ユーザーで動作させる a-blog cms 環境がサーバー内に複数ある場合、別々の a-blog cms でもキャッシュが共有されてしまう可能性がございます。

対象となる条件 (AND条件)

  • ご利用のサーバーでAPCuが有効の場合
  • 同サーバー内に複数の a-blog cms を設置
  • .envファイルで、キャッシュにAPCuを指定している場合(デフォルト設定)

問題への対応方法1

Ver. 3.0.7 へのアップデートを行う事で、この問題は解消されます。

問題への対応方法2

APCuキャッシュが問題になりますので、APCuキャッシュを利用しないようにします。
ドキュメントルートにある 「.env」 ファイルを編集します。各項目のキャッシュドライバーに 「apcu」 が指定されている場合は、他のドライバーに変更します。

デフォルトの状態だと、以下の3つに 「apcu」 ドライバーが選択されています。

  • テンプレートキャッシュ (ACHE_TEMPLATE_DRIVER)
  • フィールド情報キャッシュ (CACHE_FIELD_DRIVER)
  • 一時キャッシュ(CACHE_TEMP_DRIVER)

これは、他のドライバーに変更します。 テンプレートキャッシュ、フィールド情報キャッシュは、「file」、一時キャッシュは「memory」が推奨です。

# テンプレートのキャッシュをするドライバーを選択します
CACHE_TEMPLATE_DRIVER=file
CACHE_TEMPLATE_NAMESPACE=template
CACHE_TEMPLATE_LIFETIME=2678400

# フィールド情報のキャッシュをするドライバーを選択します
CACHE_FIELD_DRIVER=file
CACHE_FIELD_NAMESPACE=field
CACHE_FIELD_LIFETIME=86400

# 一時キャッシュで利用するドライバーを選択します
CACHE_TEMP_DRIVER=momory
CACHE_TEMP_NAMESPACE=temp
CACHE_TEMP_LIFETIME=10800

この度はご迷惑をおかけしてしまい申し訳ございません。
該当する内容の場合、バージョンアップなどご対応のほどよろしくお願いいたします。
今後とも a-blog cms をよろしくお願いいたします。