スライドショー(bxSlider)

現在では便利なスライダーのプラグインが世の中にたくさんリリースされており、a-blog cms の公式テーマでも現在はbxSliderを採用していないことから非推奨になっています。

a-blog cmsでは、画像のスライドショー(bxslider.js)が標準で実装されています。(Ver. 1.6.0より)

1. 設定の編集

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

//----------
// bxslider
    bxsliderMark : '.js-bxslider',
    bxsliderConf : {
    mode : 'horizontal', // horizontal | vertical | fade
    speed : 800,
    captions : true,
    auto : true,
    pause : 6000
},


bxsliderMark bxsliderを適用させるHTMLの要素・属性
bxsliderConf bxsliderの表示設定(bxslider.js

2. HTMLの編集

config.jsで指定した要素・属性をHTMLに記述します。以下のソースコードではバナーモジュールで画像リストを用意してbxsliderでスライドショーを作っています。

<!-- BEGIN_MODULE Banner id="topImage" -->
<ul class="js-bxslider"><!-- BEGIN banner:loop -->
  <li><!-- BEGIN banner#src -->
    {src}[raw]<!-- END banner#src --><!-- BEGIN banner#img -->
    <a href="{url}" target="{target}"><img src="%{ARCHIVES_DIR}{img}" width="{x}" height="{y}" alt="{alt}" /></a><!-- END banner#img -->
  </li><!-- END banner:loop -->
</ul>
<!-- END_MODULE Banner -->

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


a-blog cms で複数の脆弱性が見つかりました。 該当の状況に当てはまる場合は大変お手数ですが以下のご対応をお願いいたします。


JVN識別番号

  • JVNVU#90760614

報告された脆弱性は以下になります。

  • 特定POSTモジュールのサーバーサイドリクエストフォージェリおよびクロスサイトスクリプティングの脆弱性
  • バックアップ機能のパストラバーサルの脆弱性

特定POSTモジュールのSSRFおよびXSS

内容

攻撃者が特定のPOSTモジュールに対して攻撃リクエストを送ることにより、SSRFまたはXSSが発生します。

攻撃条件

  • 特に条件なし

影響を受けるバージョン

  • a-blog cms Ver. 3.1.43 以下のバージョン (Ver. 3.1.x系)
  • a-blog cms Ver. 3.0.47 以下のバージョン (Ver. 3.0.x系)
  • a-blog cms Ver. 2.11.75 以下のバージョン (Ver. 2.11.x系)
  • a-blog cms Ver. 2.10.63 以下のバージョン (Ver. 2.10.x系)
  • a-blog cms Ver. 2.9.52 以下のバージョン(Ver. 2.9.x系)
  • a-blog cms Ver. 2.8.85 以下のバージョン(Ver. 2.8.x系)
  • a-blog cms Ver. 2.7.x 以下のバージョン(フィックスバージョンはありません)

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

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 を修正します。

CMSバージョンアップによる対応

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

謝辞

当該脆弱性をご報告いただいた vcth4nh from VCSLab of Viettel Cyber Security (Vu Chi Thanh) 様に感謝申し上げます。

We appreciate the report of this issue by vcth4nh from VCSLab of Viettel Cyber Security (Vu Chi Thanh), which helped improve the security of this product.

バックアップ機能のパストラバーサルの脆弱性

内容

攻撃者が管理者権限でログインして、バックアップ機能に不正なリクエストを送信することで、パストラバーサルが発生します。

攻撃条件

  • 攻撃者が 管理者権限でログイン可能なこと(* 不正ログインされる脆弱性はありません)

影響を受けるバージョン

  • a-blog cms Ver. 3.1.42 以下のバージョン (Ver.3.1.x系)
  • a-blog cms Ver. 3.0.46 以下のバージョン (Ver.3.0.x系)
  • a-blog cms Ver. 2.11.x 以下のバージョン(フィックスバージョンはありません)

CMSバージョンアップによる対応

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

謝辞

当該脆弱性をご報告いただいた haidv35 (Dinh Viet Hai) at Viettel Cyber Security 様に感謝申し上げます。

We appreciate the report of this issue by haidv35 (Dinh Viet Hai) at Viettel Cyber Security, which helped improve the security of this product.

最後に

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

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

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

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

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

イメージビューアー(SmartPhoto)

Ver.2.8よりa-blog cmsには弊社で開発した画像拡大ライブラリであるSmartPhotoが組み込みJSとして利用できるようになりました。

デモ

使い方

以下のようにimgタグを内包したaタグにclass="js-smartphoto"と記述します。またdata-caption属性を適用することにより、拡大表示した際に画像の説明文を表示することが可能です。

<a href="/path/to/large-image" data-caption="a-blog cmsでどんどんWebサイトを更新しよう" class="js-smartphoto">
  <img src="/path" alt="" width="300">
</a>

Lazy Load とSmartPhotoを併用する場合

Lazyloadを使用して画像を遅延して読み込んでいる場合、SmartPhotoに src 属性ではなく data-src 属性を適用することが可能です。 その場合、以下のようにHTMLを記述します。

<a href="/path/to/large-image" data-caption="a-blog cmsでどんどんWebサイトを更新しよう" class="js-smartphoto">
  <img data-src="/path" alt="" width="300">
</a>

デフォルト設定

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

  SmartPhotoConfig: {
  classNames: {
    smartPhoto: 'smartphoto',
    smartPhotoClose: 'smartphoto-close',
    smartPhotoBody: 'smartphoto-body',
    smartPhotoInner: 'smartphoto-inner',
    smartPhotoContent: 'smartphoto-content',
    smartPhotoImg: 'smartphoto-img',
    smartPhotoImgOnMove: 'smartphoto-img-onmove',
    smartPhotoImgElasticMove: 'smartphoto-img-elasticmove',
    smartPhotoImgWrap: 'smartphoto-img-wrap',
    smartPhotoArrows: 'smartphoto-arrows',
    smartPhotoNav: 'smartphoto-nav',
    smartPhotoArrowRight: 'smartphoto-arrow-right',
    smartPhotoArrowLeft: 'smartphoto-arrow-left',
    smartPhotoImgLeft: 'smartphoto-img-left',
    smartPhotoImgRight: 'smartphoto-img-right',
    smartPhotoList: 'smartphoto-list',
    smartPhotoListOnMove: 'smartphoto-list-onmove',
    smartPhotoHeader: 'smartphoto-header',
    smartPhotoCount: 'smartphoto-count',
    smartPhotoCaption: 'smartphoto-caption',
    smartPhotoDismiss: 'smartphoto-dismiss',
    smartPhotoLoader: 'smartphoto-loader',
    smartPhotoLoaderWrap: 'smartphoto-loader-wrap',
    smartPhotoImgClone: 'smartphoto-img-clone'
  },
  message: {
    gotoNextImage: ACMS.i18n('smartphoto.goto_next_image'),
    gotoPrevImage: ACMS.i18n('smartphoto.goto_prev_image'),
    closeDialog: ACMS.i18n('smartphoto.close_the_image_dialog')
  },
  arrows: true,
  nav: true,
  animationSpeed: 300,
  swipeOffset: 100,
  headerHeight: 60,
  footerHeight: 60,
  forceInterval: 10,
  registance: 0.5,
  resizeStyle: 'fit',
  verticalGravity: false,
  useOrientationApi: false,
  useHistoryApi: true,
  lazyAttribute: 'data-src'
}