多くの脆弱性修正したバージョンをリリース

多くの脆弱性修正したバージョンをリリース

この記事では、2025年4月30日にリリースされたバージョンについて紹介いたします。 今回りリースしたバージョンでは、多くの脆弱性を修正されております。お早めにバージョンアップのご検討をお願いいたします。

リリースしたバージョン

  • Ver. 3.1.44
  • Ver. 3.0.48
  • Ver. 2.11.76
  • Ver. 2.10.64
  • Ver. 2.9.52
  • Ver. 2.8.86

Ver. 3.1.44 リリースノート

修正点

  • CMS-7118 インクルードの変数にバックスラッシュが入った文字列を渡すと、変数が空になってしまう問題を修正
  • CMS-7119 jQuery の $.ajax() を利用するとクロスオリジンのリクエストでも X-Csrf-Token ヘッダーが付与されてしまう問題の修正
  • CMS-7120 バージョンの切り替え時(承認含む)、コメントがあった場合コメントが削除されてしまう問題を修正
  • CMS-7121 Category_Insert モジュールで SQL_Select::setOrder メソッドの第2引数に無効な値を指定している問題の修正
  • CMS-7123 カスタムフィールドのテキスト置換を行うとphpエラーが発生する問題を修正
  • CMS-7130 セキュリティ修正によりメディア変数 {hoge@thumbnail} への resizeImg 校正オプションが動作しなくなっている問題の修正
  • CMS-7131 静的書き出しで必要ない余分なリクエストを除外するように改善 & エントリー書き出しのインターバル時間を調整
  • CMS-7133 引用ユニットで、OGP画像のパスが長すぎると画像URLの保存に失敗し、画像が出力されない問題を修正
  • CMS-7134 非公開ユニットにリンクを追加するとモーダルが少し奥まっている問題を修正
  • CMS-7143 監査ログでリクエストをより調査しやすいように、詳細情報を残すレベルをERRORからNOTICEに変更
  • CMS-7144 メディアモーダルを閉じたときにフォーカスがモーダルを表示するために利用したボタンに戻らない問題の修正
  • CMS-7156 メディアの中心点の設定が、カスタムフィールドからだとリセットされてしまう問題の修正
  • CMS-7171 正常なアクセスであっても、Undefined constant "MIME_TYPE" or "IS_DEVELOPMENT" エラーが発生してしまう問題を修正
  • CMS-7170 Ver. 3.1.37 のセキュリティ修正より、Xログインの OAuth 認証ができない問題の修正
  • CMS-7172 ルール毎に設定した管理メニュー設定がコンフィグやモジュールID管理画面で反映されない問題を修正

セキュリティフィックス

  • CMS-7177 .htaccessのリダイレクトの安全性を向上
  • CMS-7137 CSRFトークンのセッションID更新タイミングを調整
  • CMS-7150 .htaccess と jsonレスポンスのセキュリティ・パフォーマンス系ヘッダーの安全性を向上
  • CMS-7145 ソルト発行と、認証URL周り処理のセキュリティ向上
  • CMS-7127 Content-Typeが正しく設定されていないJSON出力を修正
  • CMS-7163 URLが入る変数のXSS対策
  • CMS-7159 投稿者権限で一部必要ない管理画面を表示できてしまう問題を修正(実行は不可)
  • CMS-7125 テキストユニット(編集画面)のXSS対策(投稿者以上限定)
  • CMS-7152 プレビュー機能のXSS対策(投稿者以上限定)
  • CMS-7154 テンプレート書き出し機能のトラバーサル・RCE対策(編集者以上限定)
  • CMS-7161 ナビゲーションモジュールの「http://」によるテンプレート取得機能を廃止・SSRF対策(管理者限定)
  • CMS-7165 モジュールユニット機能のパストラバーサル対策(管理者限定)
  • CMS-7167 Webhook機能のSSTI対策(管理者限定)
  • CMS-7173 特定のPOSTモジュールのSSRF・XSS対策

Ver. 3.0系以下の修正点は、リリースノート をご覧ください

Ver. 3.1系、Ver. 3.0系のセキュリティ修正について

以下修正項目は、ログイン前提の脆弱性になります。信頼されないユーザーが投稿者権限以上をもつ場合は必ずアップデートをお願いします。

これらの修正は、メンテナンスポリシー に沿って、Ver. 3.1系、Ver. 3.0系でのみ修正されております。

  • CMS-7150 .htaccess と jsonレスポンスのセキュリティ・パフォーマンス系ヘッダーの安全性を向上
  • CMS-7127 Content-Typeが正しく設定されていないJSON出力を修正
  • CMS-7163 URLが入る変数のXSS対策
  • CMS-7159 投稿者権限で一部必要ない管理画面を表示できてしまう問題を修正(実行は不可)
  • CMS-7125 テキストユニット(編集画面)のXSS対策(投稿者以上限定)
  • CMS-7152 プレビュー機能のXSS対策(投稿者以上限定)
  • CMS-7154 テンプレート書き出し機能のトラバーサル・RCE対策(編集者以上限定)
  • CMS-7161 ナビゲーションモジュールの「http://」によるテンプレート取得機能を廃止・SSRF対策(管理者限定)
  • CMS-7165 モジュールユニット機能のパストラバーサル対策(管理者限定)
  • CMS-7167 Webhook機能のSSTI対策(管理者限定)

Ver. 2.8系 〜 Ver. 3.1系のセキュリティ修正について

以下修正項目は、ログイン不要の脆弱性になります。アップデートもしくは後述の応急処置の対応をお願いします。

この修正はサポートが終了している、Ver. 2.8 から Ver. 2.11 でもフィックスバージョンをリリースしております。

  • CMS-7173 特定のPOSTモジュールのSSRF・XSS対策

ワークアラウンド(応急処置)

config.server.phpHOOK_ENABLE1 に設定します。

define('HOOK_ENABLE', 1);

extension/acms/Hook.php を修正します。

public function beforePostFire($thisModule)
{
    $thisModule->Post->delete('protocol'); // この行を追加
}

extension/acms/Hook.php が存在しない場合は、php/ACMS/User/Hook.php を修正します。

謝辞

以下当該脆弱性をご報告いただいた haidv35 (Dinh Viet Hai) at Viettel Cyber Security 氏に感謝申し上げます。ご協力ありがとうございました。
This issue was reported by haidv35 (Dinh Viet Hai) at Viettel Cyber Security. We appreciate your cooperation.

  • CMS-7127 Content-Typeが正しく設定されていないJSON出力を修正
  • CMS-7163 URLが入る変数のXSS対策
  • CMS-7159 投稿者権限で一部必要ない管理画面を表示できてしまう問題を修正(実行は不可)
  • CMS-7125 テキストユニット(編集画面)のXSS対策(投稿者以上限定)
  • CMS-7152 プレビュー機能のXSS対策(投稿者以上限定)
  • CMS-7154 テンプレート書き出し機能のトラバーサル・RCE対策(編集者以上限定)
  • CMS-7161 ナビゲーションモジュールの「http://」によるテンプレート取得機能を廃止・SSRF対策(管理者限定)
  • CMS-7165 モジュールユニット機能のパストラバーサル対策(管理者限定)
  • CMS-7167 Webhook機能のSSTI対策(管理者限定)

以下当該脆弱性をご報告いただいた vcth4nh from VCSLab of Viettel Cyber Security (Vu Chi Thanh) 氏に感謝申し上げます。ご協力ありがとうございました。
This issue was reported by vcth4nh from VCSLab of Viettel Cyber Security (Vu Chi Thanh). We appreciate your cooperation.

  • CMS-7173 特定のPOSTモジュールのSSRF・XSS対策

最後に

できるだけ早めのバージョンアップをご検討ください。 当プロジェクトの安全性向上にご協力くださった皆さまに深く感謝申し上げます。

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

生成AIポッドキャスト時代なので a-blog cms の mp3対応を考えてみる

NotebookLM で生成AIポッドキャストの生成が話題になっています。標準的に a-blog cms で MP3 をそのまま扱うことが残念ながらできません。しかし管理画面の設定と、テンプレートのカスタマイズで簡単に実装できる内容ですのでご紹介します。

高さを揃える(レスポンシブ対応)

ブロック要素の高さを揃える機能が標準で実装されています。「ブロック要素の高さを揃える(autoheight)」とは違い、行ごとのに内包している要素の高さを揃えます。ウィンドウ幅が可変したときも動作し、レスポンシブ対応版になります。(Ver. 2.5.0より)

デフォルトの設定

この機能の設定は、/js/config.jsの以下の箇所にあります。設定を変更する場合は、適用しているテーマ内にJavaScriptファイルを別途作成してください。詳しくは「組み込みJSについて:設定を編集する」を参照してください。

//-------------
// autoHeightR
autoHeightRMark : '.js-autoheight-r',
autoHeightRConf : {
  style   : 'min-height',
  element : '',
  offset  : 0,
  parent  : 'parent',
  list    : ''
},
autoHeightRArray: [
    //    {
    //        'mark'    : '',
    //        'config'  : {}
    //    }
],

autoHeightRMark 基準となる高さをもつ要素のクラス名を設定
style style:CSSで設定される高さ(height,min-height,max-height)
element 高さのスタイルを適応するクラスを設定(空の場合はautoHeightRMarkの要素に適応)autoHeightRMark以下の要素を指定してください。
offset 設定した高さにオフセットを設定
parent 実際に並んでいる要素の親要素のクラスを設定(parentを設定した場合、autoHeightRMarkの親要素)
list 実際に並んでいる要素のクラスを指定(指定してない場合、autoHeightRMarkの要素)

設定のカスタマイズ

config.jsのデフォルトの設定からカスタマイズする場合、別途作成したJSファイルに下記のように記述します。

ACMS.Ready(function(){
  ACMS.Config.autoHeightRMark = '.js-autoheight-r';
  ACMS.Config.autoHeightRConf = {
    style   : 'min-height',
    element : '',
    offset  : 0,
    parent  : 'parent',
    list    : ''
  }
});

autoHeightRArrayでは配列を渡せるようになっているので、複数の設定を指定したいときに使います。
configにはautoHeightRConfの設定を指定できます。

class属性を.ah-markにし、parent、listなどの項目を追加する場合には以下のように記述します。

ACMS.Ready(function(){
  ACMS.Config.autoHeightRArray = [
  {
      mark: '.ah-mark',
      config: {
        style: 'height',
        element: '',
        offset: 0,
        parent: '.ah-container',
        list: '.ah-list'
      }
    }
  ];
});

並んでいる要素間で高さを揃えたい場合

HTML

<div class="acms-grid">
  <div class="js-autoheight-r acms-col-md-4" style="background:#ee8;">
    <p style="height: 50px;">1つめの要素</p>
  </div>
  <div class="js-autoheight-r acms-col-md-4" style="background:#e8e;">
    <p style="height: 25px;">2つめの要素</p>
  </div>
  <div class="js-autoheight-r acms-col-md-4" style="background:#8ee;">
    <p style="height: 75px;">3つめの要素</p>
  </div>
  <div class="js-autoheight-r acms-col-md-4" style="background:#eee;">
    <p style="height: 40px;">4つめの要素</p>
  </div>
</div>

デモ

1つめの要素

2つめの要素

3つめの要素

4つめの要素

並んでいる要素の子要素の高さを基準に揃えたい場合

※設定を追加したい場合は、,で配列を繋いでもいいですが、pushを使って設定を追加することもできます。別のJavaScriptファイルから設定を追加したいときに便利です。

HTML

<script>
  ACMS.Ready(function(){
    ACMS.Config.autoHeightRArray.push({
      mark: '.ah-mark',
      config: {
        style: 'height',
        element: '',
        offset: 0,
        parent: '.ah-container',
        list: '.ah-list'
      }
    });
  });
</script>

<div class="ah-container acms-grid">
  <div class="ah-list acms-col-md-4">
    <div class="ah-mark" style="background:#ee8;">
      <p style="height: 50px;">1つめの要素</p>
    </div>
  </div><!-- /.ah-list -->
  <div class="ah-list acms-col-md-4">
    <div class="ah-mark" style="background:#e8e;">
      <p style="height: 25px;">2つめの要素</p>
    </div>
  </div>
  <div class="ah-list acms-col-md-4">
    <div class="ah-mark" style="background:#8ee;">
      <p style="height: 75px;">3つめの要素</p>
    </div>
  </div>
  <div class="ah-list acms-col-md-4">
    <div class="ah-mark" style="background:#eee;">
      <p style="height: 40px;">4つめの要素</p>
    </div>
  </div>
</div>

デモ

1つめの要素

2つめの要素

3つめの要素

4つめの要素