ColdFusion セキュリティガイド
2014.12

このガイドの目的について
近年増加傾向にあるWebアプリケーションのセキュリティ問題。
C ldF i 開発者もプログラムの作成や古いバ ジ ンからのColdFusion開発者もプログラムの作成や古いバージョンからの移行の際にコードの品質を上げる事への検討が必要な時期に差し掛かっています。
このガイドでは、ColdFusion開発者に対して、下記の３つの項目に対してセキュリティの情報を紹介します。
1. 作成するプログラム
2. セキュリティに影響する設定
3. 環境面2

（参考ドキュメント：「ロックダウンガイド」）
http://www.adobe.com/content/dam/Adobe/en/products/coldfusion/pdfs/cf11/cf11-lockdown-guide pdf/pdfs/cf11/cf11-lockdown-guide.pdf
 ドキュメントの内容について‐ColdFusion Administrator を介したアタッキングへの最大限の防御‐推奨されるColdFusion Administrator 設定‐そのほか
そのほか ColdFusion
C ldF iや Web
W b サーバーで検討する設定
サ バ で検討する設定
 ポイント‐最新の ColdFusion セキュリティアップデ
セキュリティアップデートを適用するとともにトを適用するとともに、未未来への脅威に備えて /CFIDE/administrator や adminapi
componentutils といった、悪用されると脅威になるフォルダに対する外部からのアクセスを遮断する
3

（参考ドキュメント：「セキュリティ ガイド」）
http://www.adobe.com/content/dam/Adobe/en/products/coldfusion/pdfs/cf11/cfml-developer-security-guide pdf/pdfs/cf11/cfml-developer-security-guide.pdf
 ドキュメントの内容について‐作成するColdFusionベースのアプリケーションで検討すべきセキュリテ
ィ脅威に関する解説‐その他、ログイン設定や検証などのプログラミングに関するガイド
その他
グイン設定や検証などのプ グラミングに関するガイド

4

１．

作成するプログラム

5作成するプログラムに潜むセキュリティの穴
 Webアプリケーションのアプリケーション層への攻撃方法のほとんどはC ldF i プログラムにも当てはまります
とんどはColdFusionプログラムにも当てはまります。
‐ウェブサイトのパフォーマンスの低下からデータの漏えい・攻撃用プログラムの設置など、ColdFusionプログラムのセキュリティの欠陥を突いた攻撃に備える必要があります。

6

① SQLインジェクション

脅威 想定される脅威‐予期しないデータベースクエリが実行されて、データの改ざんや閲覧、予期 な デ タクが実行されデ タ 改ざんや閲覧消去が行われる‐エラーを発生させ、画面に表示されるメッセージからデータベース構造やデータを見られる
 想定シーン
想定‐データベースの処理のSQLに動的なパラメータ受け取りがある処理
 例えばURLパラメ
例えばURLパラメーターを使用した一覧⇒詳細画面へのページ遷移でタ を使用した 覧⇒詳細画面へのペ ジ遷移でa. 想定していない不正なSQL文やパラメーターが渡される
b. プロシージャーを利用した内部コマンドが渡される

9

推奨される対策例
 改善ポイント‐<cfqueryparam>を使用して、プリペアドステートメントのパラメータを使プ
ドトト パ
ター変数を用いる CF11以降は<cfquery>の代わりにQueryExecute関数を使う事もできる‐渡されてくる値が想定されたデータなのかの整合性チェックを行う（IsNumeric, IsValid 他）‐エラ をそのまま画面に表示させない‐エラーをそのまま画面に表示させない‐データベースへ接続するユーザーの権限、ならびに、ColdFusion
Administratorのデータソースの設定で制限する（後述）10② クロスサイトスクリプティング

脅威 想定される脅威‐偽の情報や入力を表示してユーザーから不正に情報を取得する
偽 情報や入力を表示
ザ から不正 情報を取得す‐Cookie情報をスクリプトを使って盗み出す。
 想定シーン‐ユーザーから送信されたデータを画面にそのまま表示した
ユ ザ から送信されたデ タを画面にそのまま表示した‐ユーザーから送信されたデータをhiddenパラメーターなどにそのまま指定した‐ログイン失敗などの再入力を促す画面で、直前のユーザーの入力をそのログイン失敗などの再入力を促す画面で 直前のユ ザ の入力をそのまま入力欄に指定した

13

推奨される対策例
 改善ポイント‐入力値の表示や入力欄への指定の際に、EncodeForHTML()
入力値 表示や入力欄指定 際やHTMLEditFormatでパラメーターをエンコードする
 EncodeForHTML関数は日本語などもエンコードされる‐入力値が限定できる場合は整合性をチェック（IsNumeric, IsValid）‐<CFCookie>で発行する Cookie には HttpOnly 属性を付け、スクリプトからのアクセスを防御する
 ColdFusion 9.0.2以降の Session Cookie には HttpOnly がデフォルトで付加されている‐ColdFusion
ColdFusion Administrator の スクリプトの保護の設定を有効にする
 補足‐「ColdFusion「ColdFusion Administrator の スクリプトの保護」は、文字（タグ名）一致のみチェックのため、安全対策の一つに過ぎない
14

③ ＣＳＲＦ（クロスサイト・リクエスト・フォージェリ）脅威 想定される脅威‐ログイン済みのサービスに対して、自身の登録情報が不正に書き換えら
グイ 済
サ ビ
対
自身 登録情報が不正 書き換えられ、最悪の場合ユーザーIDを乗っ取られる‐ログイン認証が掛ったサービス（例：ランキング投稿やコメント書き込み）などが勝手に行われる
 想定シーン
想定‐ユーザーがサービスにログインしたまま、攻撃者のページを（そのページ のリンクを）踏んでしまう
ジへのリンクを）踏んでしまう

17推奨される対策例
 改善ポイント‐CSRFGenerateToken、CSRFVerifyToken CF9.0.2 以降で実装(9.0.0/9.0.1は最新セキュリティアップデートを適用)（2016.5）CF10より追加された関数です。訂正してお詫び申し上げます。

‐その他（ユーザーインターフェイスとの兼ね合い） 特定の個人情報の表示や変更時には、二段階認証を実装
 変更前の確認画面の挟み込みや現在の情報を入力（現在のパスワ
変更前の確認画面の挟み込みや現在の情報を入力（現在のパスワードなど）
ドなど）
 CAPTCHA, Re-CAPTCHA などの画像認証を加える

 補足‐CAPTCHA, Re-CAPTCHAなどの画像認証は、文字判別の難解さや、画像解析プログラムも存在する⇒ Capyパズルキャプチャ⇒ Capyアバターキャプチャ
18

④ セッション固定化攻撃 (Session Fixation)

脅威 想定される脅威‐攻撃者のセッションIDでサービスにログインしてしまい、攻撃者に自分攻撃者
サ ビ
グイ
ま攻撃者 自分のサービスを利用されてしまう ColdFusion は、CFIDとCFTOKENの組み合わせ、または、JSESSIONIDのどちらかでセッションを識別する‐CFIDは連番だが、CFTOKENはランダムな値となる。CFTOKENは、UUIDを指定可能
 ユーザーからのCookieの送信の他、URLパラメータとして渡された場合も有
ザ
ら
送信 他
パタ渡
場合 有効である

 想定シーン‐ユーザーが攻撃者のセッションIDを含んだ攻撃ページを（そのページへのリンクを）踏んでしまう21

推奨される対策例
 改善ポイント（下記はすべてCF10以降）‐ログイン処理時にグイ 処理時 SessionRotate()関数でセッションIDを強制変更
関数を強制変更‐ログアウト処理時 SessionInvalid()関数でセッションIDを無効化‐セッションセッション Cookie の有効期間を変更
 補足‐CF10（最新セキュリティアップデートを適用したCF9）以降、サーバーで発行していないセッションIDでリクエストがあった場合は、強制的にセッションIDが書き換えられる。
 最新のCF11では、セッションタイムアウト時のセッションIDの取扱いに変更がある

22

⑤ ファイル アップロード

脅威
 想定される脅威‐想定外の実行プログラム（.cfm等）がアップロードされ、不正なプログ想定外 実行プ グ（等）がプドされ 不正なプ グ
ラムが実行される
 想定シーン‐ファイルのアップロードを受け付けるページ
 ブログの画像アップロードやメールフォームのファイルの添付など‐アップロードしたファイルのチェックに不備
 例：クライアントから送信されるMIMEタイプのチェックしか行わない
例 クライア トから送信されるタイプのチ ックしか行わな

25

推奨される対策例
 改善ポイント‐（CF10以降）<cffile（以降）
action="upload" ..>は、アップロードしたファはプ
ド た
イルの先頭数バイトが読み込まれてMIMEタイプが決定される
 旧来の拡張子によるチェック等に戻すには、新たに追加された strict 属性を指定（strict="false"） する。その場合は別途ファイルチェックが必要。
 新しいチェック処理では、例えばMicrosoft Officeファイルなどのチェックの検知が環境により異なる場合もあるため、許容するファイルの種類に応じて複数の手段で検証する‐IsImageFile、IsPDFFile、IsSpreadsheetFile、FileGetMimeTypeなど、アップロードしたファイルに対するチェックを行う‐ファイル拡張子が想定されているものかを検証する
フ イル拡張子が想定されているものかを検証する‐アップロードしたファイル名を動的に変更する

26

⑥ ファイルパス インジェクション

脅威 想定される脅威‐Webページとは無関係な
ジとは無関係な OSの設定ファイル・データファイル等がブラ設定
イル デ タイル等がブウザに表示される‐不正な .cfm ページがインクルード・実行され、正常な処理を阻害する‐他の攻撃手段と組み合わされ、攻撃者がアタックコードを含む.cfmファイルを実行する
 想定シーン‐URLパラメーターにファイル名が含まれている処理
URLパラメ タ にファイル名が含まれている処理 パラメーターを使用してCSSファイルを読み込む処理 ファイルに対して操作を行う CFタグのパラメータ…CFHTTP,

CFDIRECTORY, CFFILE
CFDIRECTORY
CFFILE, FileOpen 等ファイル
等ファイル・ディレクトリ操作を行う
ディレクトリ操作を行う
タグや関数
29

推奨される対策例
 改善ポイント‐可能な限りパラメータにファイル名を直接指定するような実装を避ける
可能な限りパタ
イル名を直接指定すうな実装を避‐ディレクトリ・トラバーサルにつながる「..」 「../」やその他の予期しない文字を取り除く‐ファイルを開く際は、対象のディレクトリを限定し、かつファイル名にディレクトリ名が含まれないようにする‐ファイル名のチェック
ファイル名のチェック30

⑦ ＨＴＴＰ・ＭＡＩＬヘッダ インジェクションＨＴＴＰ・ＭＡＩＬヘッダ インジェクション
 想定される脅威‐HTTPやSMTPでヘッダを送信する処理に、改行コードCRLF
HTTPやSMTPでヘッダを送信する処理に 改行コ ドCRLF （0D,（0D0A）が含まれ、改行の次の情報が不正なヘッダ情報が追記され、攻撃や漏えいにつながる可能性ある
 ColdFusion側の対応‐CF9.0.2 以降（9.0.0 / 9.0.1 は最新のセキュリティアップデートで追加）は、改行コ ドは強制的に削除されるようになっている加）は、改行コードは強制的に削除されるようになっている
 留意点‐ヘッダに改行コードが含まれていると強制的に削除されるため、データが予期しない書き換えが発生しないか注意 <CFCookie>、<CFHeader>、<CFMailParam>に指定された値
 クライアント変数を Cookie に保存 特にデータの暗号化を行っている場合、暗号化データに改行コードがないか
32

注意が必要となる

⑧ ハッシュ衝突攻撃 (Hash Collision Attack)ハッシュ衝突攻撃 (Hash Collision Attack) 想定される脅威‐サーバーへのパラメーターの送信(GET,POSTなど)で、複数の異なるキサ バ
パタ送信など複数 異な キーが同じハッシュ値になるようなパラメータを大量に送り付け、サーバーのCPUを高負荷状態（Dos）にする
 ColdFusion側の対応‐CF9.0.2 以降（9.0.0 / 9.0.1 は最新のセキュリティアップデートで追加）はPOSTの上限数が追加された（デフォルト100）‐CF10 以降は、Tomcat側でも対策済みのバージョンを利用している 留意点‐デフォルトのPOSTの上限数は 100なので、旧バージョンから移行する際などは、エラーにならないように適切な上限値にする

34

⑨ OS コマンド インジェクション

OS コマンド インジェクション
 想定される脅威‐他の攻撃手段を利用して、OSのコマンドを実行するColdFusionプログ
他 攻撃手段を利ドを実行す
プ グ
ラムを実行され、予期しないプログラムの実行や情報の漏えいが発生する
 ColdFusion側の対応‐<cfexecute>や.NET呼び出しを行うページを処理する際は、動的なパラメーターの使用の有無やセキュリティ面に懸念がないかを確認する‐Webサーバー側で不要なDLLプログラムが実行されないように注意する

36

２．

セキュリティに影響する設定

37

例外処理

例外処理40

その他

セキュアプロファイル
 CF10以降、インストール時に本番公開に適したセキュリティ

設定でインスト ルが可能設定でインストールが可能。
‐CF11では、インストールのAdministratorでも、プロファイルを切り替える事が可能になった

42

データソース設定
 概要‐データベースへの接続ユーザーの権限が適切かどうかの確認
デ タ
接続
ザ
権限が適切かどうか 確認‐不要なSQLコマンドの実行を防ぐために、データソースの詳細 ポイント‐不要なSQLコマンドの実行を防ぐために、データソースの詳細設定にある「使用可能な SQL」で必要のないコマンドを無効にする

43

ＲＤＳの 有効 / 無効 概要

‐ローカルロ カル / リモートからColdFusionに接続し、ファイルの一覧やデータ
リモ トからColdFusionに接続し ファイルの 覧やデ タソースの接続先情報にアクセスできる
 ポイント‐本番環境ではOFF！リモートからの不要な接続を許さない‐開発環境でRDSを使用する場合もAdministratorのログインパスワードとは別のパスワードを指定し 必要のない社内メンバーからの接続を防ぐとは別のパスワードを指定し、必要のない社内メンバーからの接続を防ぐ

44

セッションCookie設定
 CF10以降、セッションCookieに対するタイムアウト時間等の設定変更がAd i i t t から可能にな た
設定変更がAdministratorから可能になった‐従来からの<CFCookie>タグによる強制的なCFID, CFTOKENの上書
き設定は動かなくなったため、プログラムの改修が必要
 下記のAdministratorの設定と同レベルの設定をプログラムで指定可

45

スケジュールタスク
 概要‐指定された日時にColdFusionページを実行することができ、日次バッチ指定された 時ジを実行すとが き
次バ チ
処理などに多用されている‐タスクを使って.cfmファイルを書き出すような処理があった場合、ColdFusionの攻撃コードを外部から読み込み、結果を.cfmファイルとして書き出させると、その.cfmをリクエストされて攻撃される
 ポイント‐不必要なバッチが実行されていないか？
‐ColdFusion 10 以降、スケジュールタスクの結果をファイルに出力する
際に指定できる拡張子に制限がある
 デフォルトでは .txt / .log に制限される

 ColdFusion 9は最新のセキュリティアップデートを当てることで同9は最新のセキュリティアップデ トを当てることで同様の制限が有効となる
46

<CFInclude> ColdFusion 11より<CFInclude>タグでインクルードするファイルの内容を処理する拡張子を指定可能。
イルの内容を処理する拡張子を指定可能‐例えば、.conf ファイルに<cfset>で変数をセットするようなページを作成していた場合、「conf」または「＊（デフォルト）」をセットしないと、ファイルの内容が処理されない
 ColdFusion Adminisrator または Application .cfc のThis.compileextforinclude,<cfapplication>タグのThis
compileextforinclude <cfapplication>タグのcompileextforinclude で拡張子をリスト形式で指定する

47

Administratorへのアクセス制限
 CF10よりAdministratorへのアクセスをIPアドレスで制限‐ただし、CF10
ただのアクセス制限は、セキュリティ面では不完全であり、ク
制限はキ
面 は不完全 あり
CF11 で改良されている
CFIDE/main/*
CFIDE/i /*CFIDE/adminapi/*
CFIDE/administrator/*
CFIDE/componentutils/*
CFIDE/wizards/*
CFIDE/servermanager/*‐CF11では、さらに外部Webサーバーコネクタの設定でも制限が可能
48

アップデートの提供方法について
 概要‐ColdFusion10以降は、一部を除き
C ldF i 10以降は部を除き ColdFusion
C ldF iAd
Administrator
i i t t の[サーバー更新]機能から行う セキュリティ問題を修正
 不具合の修正
 ドライバやライブラリの更新 などが行われる

 留意点‐修正は累積で行われる、つまり最新のアップデートを当てると過去の修正も反映される
 いくつかのアップデートをスキップして最新パッチを適用する際は、過去の
く かプデ トを キ プし 最新パ チを適 す 際は 過去修正が影響した問題が発生しないかを調べる
 Webサーバーのコネクタなど、アップデートの一部には、追加の手順が発生する場合がある
49

３．

環境面
（W bサ バ（Webサーバー、JVM）
JVM）

50

Ｗｅｂサーバーリモートからの脅威に備える必要性
 ColdFusion Administrator、adminAPI、 componentutils

フォルダに対する遠隔（リモ ト）攻撃
フォルダに対する遠隔（リモート）攻撃‐基本的にはパスワードセキュリティが掛っているが、ColdFusion
Administratratorのログイン認証をバイパス（すり抜け）し、管理機能を利用して攻撃やコードの盗み見をしている脆弱性が過去にあった。
‐未知の脆弱性にも備えるためには、それらのフォルダに対するリモートからのアドレスを遮断したい 最新のセキュリティアップデートと複雑なパスワードの指定だ
最新のセキュリティアップデ トと複雑なパスワ ドの指定だ

けでは、未知の脅威まで防ぐことはできない

53

補足
 補足

‐メーカーが推奨する防御方法は、「ロックダウンガイド」に掲載されてカ が推奨す 防御方法は 「クダウ ガイド」 掲載されいる方法となる。
 ガイドに掲載されている方法は、実行ユーザーの変更やファイルアクセスの制限が行われてるため、プログラムの追加・改修やセキュリティアップデー
トのAdminsitratorからの適用に制限が生じる場合もある‐他にもロードバランサーでのアクセス遮断、WebサーバーでのIPアドレ
ス制限などがあるが、外部のみならず内部（ホスティング環境などの場合は接続してくるユーザー等）からの脅威を想定して、適切なWebサーバーセキュリティ設定を行うことを強く推奨する。

54

ＪＶＭ

Java サポートについて （2012年9月以降）Javaサポートに関するポリシー‐従来）メーカーで動作を確認したJVMのバージョンのみサポート従来）
カ動作を確認 たバ ジ
サポ ト‐最新）製品がサポートするJavaバージョンの最新のマイナーアップバー
ジョンもサポート対象
 http://wwwimages.adobe.com/content/dam/Adobe/en/products/c

oldfusion/pdfs/cf11/coldfusion11-support-matrix.pdf‐All ColdFusion users can upgradepg
Java to the latest minor version
for their ColdFusion servers. For example, ColdFusion users using
jdk 1.6.0̲x can upgrade to the latest jdk 1.6.0̲x update. (At thetime of writing, the current version is jdk 1.6.0̲35.) All future JDK
1 6 0 x releases are supported.
1.6.0̲xsupported Java自体のセキュリティの問題が発覚した際は、深刻度に応じて最新のマイナーバージョンに切り替えることを推奨56

サポートするJavaバージョン CF 9.0.x と CF10（旧インストーラー）には、JRE 6が同梱

‐JVMメーカーのカOracle 社では、2013年2月に無償サポートが終了
社 は年 月 無償サポ トが終了
 Javaの最新のセキュリティ問題に対する対応は、以後Oracle社が提供する有償サポートに加入する必要がある

 Java 7サポート‐最新の累積ホットフィックスを適用したColdFusion 9.0.x‐ColdFusion
C ldF i10 UpdateU d t 8 以降
‐2013年3月に公開された新しい ColdFusion 10 インストーラー‐ColdFusion 11
 Java 8サポート (New!!)‐ColdFusion 10 Update 14 ‒ 2014年10 月公開‐ColdFusion 11 Update 3 ‒ 近日公開予定
57

お問い合わせ先
株式会社サムライズ
アドビソフトウ ア事業部 ColdFusion
アドビソフトウェア事業部
C ldF i ビジネスユニット
ビジネス ニ ト◆サムライズ ColdFusion公式サイト「製品情報 製品価格 購入前FAQ セミナ 資料の配布など」「製品情報・製品価格・購入前FAQ・セミナー資料の配布など」

http://www.samuraiz.co.jp/coldfusion/◆ColdFusion Associate「ColdFusion開発会社・パッケージベンダー・技術FAQなど」「ColdFusion開発会社
パッケ ジベンダ 技術FAQなど」
http://cfassociates.samuraiz.co.jp/◆ColdFusionカフェテリア「寄稿連載記事・ColdFusion入門・その他サンプルプログラムなど」
載」
http://forum.samuraiz.co.jp/
ColdFusion は、Adobe Systems Incorporated（アドビ システムズ社）の米国ならびに他の国における登録商標または商標です。
その他、記載されている会社名や製品ブランド名は、各社の商標または登録商標です。
58