SECURITY セキュリティ情報
2018/05/18 コードインジェクションをはじめとする複数の脆弱性
コードインジェクションをはじめとする複数の脆弱性
2018年05月18日
baserCMSに、コードインジェクションをはじめとする複数の脆弱性があります。
baserCMSの旧バージョンで運営されている方は必ずご対応をお願いいたします。
影響を受けるシステム
- baserCMS 3.0.15 およびそれ以前のバージョン
- baserCMS 4.1.0.1 およびそれ以前のバージョン
想定される影響
- (1)コマンドインジェクション
システム管理グループ以外のユーザーに管理システムへのログインを許可している場合、固定ページにおいて任意のコードを実行される可能性があります。 - (2)クロスサイトスクリプティング
システム管理グループ以外のユーザーに管理システムへのログインを許可している場合、パンくず、canonicalタグ、ニックネームにおいて任意のコードを実行される可能性があります。 - (3)アップロードファイル管理機能における危険なタイプのファイルの無制限アップロード
システム管理グループ以外のユーザーに管理システムへのログインを許可している場合、phpファイル等の危険なタイプのファイルがアップロードされる可能性があります。 - (4)コンテンツ管理機能におけるアクセス制限不備
システム管理グループ以外のユーザーに管理システムへのログインを許可している場合、コンテンツ一覧を制限していても、URLを直接入力する事により、各コンテンツの編集画面にアクセスされる可能性があります。 - (5)公開期限が過ぎたコンテンツに対するアクセス制限不備
インストールが正常に行われていない場合、URLを直接指定する事により、ファイルアップローダーでアップロードしたファイルについて公開期限外でもアクセスされる可能性があります。 - (6)テーマ管理機能におけるクロスサイトスクリプティング
システム管理グループ以外のユーザーに管理システムへのログインを許可している場合、テーマのファイル管理において任意のコードを実行される可能性があります。 - (7)メールフォームのファイル添付機能におけるアクセス制限不備
インストールが正常に行われていない場合、URLを直接指定する事により、メールフォームで送信したファイルについてアクセスされる可能性があります。
対策方法
最新バージョンにアップデートする
最新バージョン 3.0.16 / 4.1.1 にアップデートすることで対応する事ができます。
次のページより最新バージョンのダウンロードを行い、リリースノートに基づきバージョンアップ作業を行います。
修正プログラムを適用する
早急に対応する場合には提供されている修正プログラムを適用します。
なお、以前、8月23日に配布した修正プログラムを適用しておらず、そちらも適用する場合は、上記の修正プログラムの前に適用しておきます。
(1)コマンドインジェクションについての対策
baserCMSでは、固定ページにおいて、PHPコードの登録を許容する仕様となっていますが、システム管理者グループ以外のユーザーへのPHPコード登録を許容しない場合は、最新版へのアップデート後、または、修正プログラムの適用後に、app/Config/install.php の一番最後の行に、下記のコードを記述し保存してください。
<?php Configure::write('BcApp.allowedPhpOtherThanAdmins', false); ?>
なお、最新版の新規インストールにおいては、初期状態にて、システム管理者グループ以外のユーザーへのPHPコード登録を許容しない設定となっています。
(2)クロスサイトスクリプティングについての対策
現在利用しているテーマにおいて、下記のファイルが存在する場合は、最新版アップデート後、または、修正プログラムの適用後に、ファイルの修正が必要です。
なお、ファイル内に対象コードが存在しない場合は対応は不要です。
Elements/crumbs.php
$this->BcBaser->addCrumb($crumb['name']); ↓ $this->BcBaser->addCrumb(h($crumb['name']));
$this->BcBaser->addCrumb($crumb['name'], $crumb['url']); ↓ $this->BcBaser->addCrumb(h($crumb['name']), $crumb['url']);
Elements/widgets/blog_author_archives.php
<?php $this->BcBaser->link($title, $this->request->params['Content']['name'] . '/archives/author/' . $author['User']['name']) ?> ↓ <?php $this->BcBaser->link($title, $this->request->params['Content']['name'] . '/archives/author/' . $author['User']['name'], ['escape' => true]) ?>
Elements/smartphone/widgets/blog_author_archives.php
<?php $this->BcBaser->link($title, $this->request->params['Content']['name'] . '/archives/author/' . $author['User']['name']) ?> ↓ <?php $this->BcBaser->link($title, $this->request->params['Content']['name'] . '/archives/author/' . $author['User']['name'], ['escape' => true]) ?>
(4)コンテンツ管理機能におけるアクセス制限不備についての対策
コンテンツ管理機能でアクセス制限を行う際には、配下のコンテンツの詳細画面について、該当ページのURLを全て登録してください。
謝辞
この脆弱性情報公表にあたり、IPA、JPCERT/CC に謝辞を申し上げます。