ColdFusionのLog4jの脆弱性についての参考情報

※本ページは、メーカーサイトの情報を紹介していますが、参考情報としてのご紹介であり、内容の正確さや最新さ、推奨を保証するものではありません。また、本ページの内容とオリジナルの英文ページとの間に齟齬や矛盾があった場合(英文ページで情報が追加・変更された場合も含む)は、オリジナルの英文ページの情報を優先して下さい。


2022.1.12 / 2021.12.22 追記
log4j2 については、さらに 2021年12月18日に新たな脆弱性のCVE-2021-45105が、(2022.1.12 追記)2021年12月28日にCVE-2021-44832が公開されました。ColdFusionではこの脆弱性も影響は確認されていませんが、ベストプラティクスとして ColdFusion 2021 Update 3、および 2018 Update 13を対象に、Log4j2 ライブラリを 2.17.0 にアップグレードするためのパッチが公開されました。(2022.1.12 追記) Log4j2 ライブラリを 2.17.1 にアップグレードするためのパッチが公開されました。パッチの適用をご希望の方は、下記に参考情報ページを公開していますので、ご確認ください。

このパッチを適用する前に ColdFusion 2021 Update 3 / ColdFusion 2018 Update 13を適用している必要があります。Updateについては、続いての 2021.12.20 追記をご確認ください

2021.12.20 追記
(米国時間)2021年12月17日に、log4jに関する脆弱性CVE-2021-44228を解決するColdFusion 2021 Update 3 と ColdFusion 2018 Update 13 がリリースされました。この修正プログラムを適用することで、log4j2関連のjarが2.16.0にアップグレードされます。

※それまでの「回避策/軽減策」として、本記事の内容を行って頂くことも推奨いたします。

ColdFusionとは別のインストーラーで提供されている、「パフォーマンス管理ツールセット(PMT)」、または、「APIマネージャー(APIM)」をインストールされている方は、下記のメーカーサイトの内容にそって、アップデートの適用と一部log4j2の手動差し替え・jvm引数の変更を行ってください

※注:Windowsでは、更新プログラムを手動でインストールする必要があります。
インストールする前に「ColdFusion-PMT-2021|2018-Datastore-Service」を停止し、手動の手順に従って更新プログラムを適用する必要があります。
Windows以外の環境の場合、更新はPMTのダッシュボードまたはコマンドラインからインストールできます。​​​​​

※それまでの「回避策/軽減策」として、本記事の内容を行って頂くことも推奨いたします。


Apache Log4j Java logging libraryに関する脆弱性CVE-2021-44228 に関しては、ColdFusionも当該ライブラリを利用しており、また、「ColdFusion 2021 / 2018」、そしてColdFusionとは別のインストーラーとして提供されている「パフォーマンス管理ツールセット(PMT)」や「APIマネージャー(APIM)」には問題としてあげられているバージョンが含まれています。この事に関して、アドビ社より修正プログラムの提供予定、および、修正プログラムがリリースされるまでの回避策/緩和策を紹介するページが公開されました。現時点で日本語ページが用意されていないため、当ページにて抄訳・補足を含めて紹介させて頂きます。

https://helpx.adobe.com/coldfusion/kb/log4j-vulnerability-coldfusion.html

2021.12.16 追記
日本語のページも公開されましたが、ColdFusion 2018やPMT、APIMのJNDILookUp クラスが取り除かれたパッチファイルが古いファイル名となっていますので、ご注意ください(下記の日本語ページからパッチファイルをダウンロードした際は、ファイル名から-logshellを取り除いてください)
https://helpx.adobe.com/jp/coldfusion/kb/log4j-vulnerability-coldfusion.html

 

アドビは、影響を受けるシステムをApacheソフトウェア財団が推奨する最新バージョンのApache log4j 2に更新するなどの、製品への潜在的な影響の調査や、対応を準備しています。

2021.12.20 追記
ColdFusionとしてこの脆弱性による影響は確認されていませんが、log4j2の脆弱性に対する備えが必要な環境については、回避策/緩和策とUpdateの適用が推奨されます


(米国時間)2021年12月17日に、このlog4jの脆弱性に対する修正プログラムをColdFusion 2021と 2018向けにリリースする予定です。修正プログラムがリリースされるまで、以下の回避策/緩和策の手順を適用されることを推奨します

回避策/緩和策の手順:

ColdFusion2021:

CF 2021 には、log4j 2.13.3 と 1.2 が含まれています。前者(v.2.13.3)はこの脆弱性の影響を受けますが、後者(v.1.2)は影響を受けません。

手順:

  1. ColdFusionを停止します
  2. <cf_root>\<インスタンス(cfusion等)>\bin ディレクトリに移動します
  3. jvm.config ファイルを開き、java.args= のセクションに -Dlog4j2.formatMsgNoLookups=true 引数を追加して保存します。
    • 作業の前にjvm.config ファイルをバックアップすることを推奨します。また、引数はスペース区切りで追加します(改行などは行わないでください)
  4. もし、別途log4j2を使用しているサードパーティ製のライブラリを独自に追加されている場合は、そのライブラリを使用し続けることで脆弱な状態が懸念されます。追加したライブラリ、および<cf_root>ディレクトリ内に log4j-core が無いかを検索してください。バージョンが2.0-beta9~2.10のlog4j2ファイルが見つかった場合は、そのlog4j2から JndiLookupクラスを削除してください
    • Windows OSの場合は、log4j-core-2.x.jar を解凍し、該当するクラスを削除します: org/apache/logging/log4j/core/lookup/JndiLookup.class。そして、再びlog4j-core-2.x.jar に圧縮します(x は、フォルダ内で見つかった log4j2のバージョン番号です)
    • Windows OS以外の場合は、クラスパスからJndiLookup クラスを削除します: "zip -q -d log4j-core-2.x.jar org/apache/logging/log4j/core/lookup/JndiLookup.class"(x は、フォルダ内で見つかった log4j2のバージョン番号です)
  5. ColdFusionを起動し、動作を確認します。
    • 起動に失敗した場合は、変更を元に戻すなどをして動作が復帰することを確認し、再び作業をやり直してください
  6. 複数のインスタンスでColdFusionを運用されている場合は、すべてのインスタンスに対してこれを繰り返します。

 

ColdFusion2018:

CF 2018 は、log4j 2.13.3 (Update 11以降) または 2.9.0(Update 10以前)、と log4j 1.2 が含まれています。前者(v.2.13.3またはv2.9.0)はこの脆弱性の影響を受けますが、後者(v.1.2)は影響を受けません。

手順:

    1. ColdFusionを停止します
    2. <cf_root>\<インスタンス(cfusion等)>\bin ディレクトリに移動します
    3. jvm.config ファイルを開き、java.args セクションに -Dlog4j2.formatMsgNoLookups=true 引数を追加して保存します
      • 作業の前にjvm.config ファイルをバックアップすることを推奨します。また、引数はスペース区切りで追加します(改行などは行わないでください)
      • 現在 Update 10以前を使用している場合も、今後、Update 11や12を適用した際に、log4j-core-2.13.3.jarに置き換わる可能性がありますので、この設定も必ず行って下さい
    4. <cf_root>\<インスタンス>\lib ディレクトリに移動し、Update 10以前の場合は、log4j-core-2.9.0.jarファイルが見つかりますので、そのファイルを一時的に別の場所に移動します
      • 必ずColdFusionのルートフォルダ以外に移動してください。ファイル名を変えただけでファイルを移動しなかった場合は、引き続き脆弱性のあるファイルを読み込む原因となります
    5. (4.でlog4j-core-2.9.0.jarを別の場所に移動した場合は)パッチが適用された log4j-core-2.9.0.jar ファイル(JNDILookUp クラスが取り除かれたパッチファイル)をダウンロードし、このフォルダに配置します
      • (追記①)2021.12.16更新:ファイルのリンク先が更新され、ファイル名がオリジナルと同じlog4j-core-2.9.0.jarになりましたのでファイル名の変更は不要になりましたファイル名がlog4j-core-2.9.0-logshell.jarとなっています。このままでも読み込まれますが、log4j-core-2.9.0.jar にファイル名を変更してください
        • このファイル名のまま今後Update 11以降を適用した際に、log4j-core-2.9.0-logshell.jarのファイル名だと新しいlog4jに置き換えることができず残ってしまうためです
      • (追記②)(特に)Unix環境では、差し替えるファイルの権限(他のlog4j-xxx.jarと権限を合わせてください)や所有者(ColdFusion実行ユーザーに変更してください)に注意してください
        • 権限や所有者が変更されていないと、今後のUpdateを適用する際に、そのファイルを操作できず、ファイルの差し替えが出来なくなるなどが生じる恐れがあります
      • (追記③)Update 11や12を適用済みの環境では、<cf_root>\<インスタンス>\hf-updates\hf-2018-00011-326016 や hf-2018-00012-328566 の backup\lib 内に log4j-core-2.9.0.jarファイルが置かれている場合がありますので、安全のためにパッチファイルをダウンロードし、backup/libフォルダのファイルと置き換えてください
        • もし、今後、Update 11や12をUpdate10以前にロールバックした時に、backupに置かれているlog4j-core-2.9.0.jarに戻されるためです
      • (追記④)IEなどのブラウザではダウンロード時に.jarが.zipに変更される場合があるようです。その場合は拡張子を.jarに戻してください
    6. もし、別途log4j2を使用しているサードパーティ製のライブラリを独自に追加されている場合は、そのライブラリを使用し続けることで脆弱な状態が懸念されます。追加したライブラリ、および<cf_root>ディレクトリ内に log4j-core が無いかを検索してください。バージョンが2.0-beta9~2.10のlog4j2ファイルが見つかった場合は、そのlog4j2から JndiLookupクラスを削除してください
      • Windows OSの場合は、log4j-core-2.x.jar を解凍し、該当するクラスを削除します: org/apache/logging/log4j/core/lookup/JndiLookup.class。そして、再びlog4j-core-2.x.jar に圧縮します(x は、フォルダ内で見つかった log4j2のバージョン番号です)
      • Windows OS以外の場合は、クラスパスからJndiLookup クラスを削除します: "zip -q -d log4j-core-2.x.jar org/apache/logging/log4j/core/lookup/JndiLookup.class"(x は、フォルダ内で見つかった log4j2のバージョン番号です)
    7. ColdFusionを起動し、動作を確認します。起動が確認できましたら、一時的に別の場所に移動したlog4j-core-2.9.0.jarファイルは削除してください
      • 起動に失敗した場合は、変更を元に戻すなどをして動作が復帰することを確認し、再び作業をやり直してください
    8. すべてのインスタンスに対してこれを繰り返します

     

    ColdFusion2016:

    ColdFusion 2016は、log4j2 ではなく、log4jの1.x系のみが含まれています。ですが、もし、別途log4j2を使用しているサードパーティ製のライブラリを追加されている場合は、そのライブラリを使用し続けることで脆弱な状態が懸念されます。ライブラリおよび<cf_root>ディレクトリ内に log4j-core が無いかを検索してください。バージョンが2.0-beta9~2.10のlog4j2ファイルが見つかった場合は、そのlog4j2から JndiLookupクラスを削除してください(上記CF2021, 2018の手順を参考にしてください)

    (補足①)以下の情報などからも、log4j の1.x系は影響等は受けない模様です。
         https://www.jpcert.or.jp/at/2021/at210050.html
        (抜粋)なお、すでにEnd of Lifeを迎えているApache Log4j 1系のバージョンは、
         Lookup機能が含まれておらず、JMS Appenderが有効でもクラス情報がデシリ
         アライズされないため影響を受けないとの情報を確認しています。
        (※更新: 2021年12月13日追記の情報も参考になると思います)

    (補足②)ColdFusion 2016よりも前のバージョンもlog4jの1.xのみが含まれていますが、
         別途何らかのライブラリを追加されている場合は、そのライブラリにlog4j2が
         含まれていないかを確認してください

     

    以下は、ColdFusionとは別のインストーラーで、「パフォーマンス管理ツールセット(PMT)」、または、「APIマネージャー(APIM)」をインストールされている方のみ対象となります。


    パフォーマンス管理ツールセット(PMT)2021:

    PMT 2021 は log4j 2.11.1 と log4j 2.3 が含まれています。どちらのバージョンにも脆弱性の影響があります。

    手順:

    1. PMT 及びデータストアを停止します
    2. <PMT_Home>\datastore\configディレクトリに移動します
    3. jvm.options ファイルを開き、#log4j 2のセクションに-Dlog4j2.formatMsgNoLookups=true引数を追加して保存します
    4. <PMT_Home>\lib ディレクトリに移動します。
    5. log4j-core-2.3.jar ファイルを一時的に別の場所に移動します
      • 必ずPMTのルートフォルダ以外に移動してください。ファイル名を変えただけでファイルを移動しなかった場合は、引き続き脆弱性のあるファイルを読み込む原因となります
    6. パッチが適用された log4j-core-2.3.jar ファイル(JNDILookUp クラスが取り除かれたパッチファイル)をダウンロードし、このフォルダに配置します
      • (追記①)2021.12.16更新:ファイルのリンク先が更新され、ファイル名がオリジナルと同じlog4j-core-2.3.jarになりましたのでファイル名の変更は不要になりましたファイル名がlog4j-core-2.3-logshell.jarとなっています。このままでも読み込まれますが、log4j-core-2.3.jar にファイル名を変更してください
        • このファイル名のまま今後Updateを適用した際に、log4j-core-2.3-logshell.jarのファイル名だと新しいlog4jに置き換えることができず残ってしまう懸念があるためです
      • (追記②)特にUnix環境では、差し替えるファイルの権限や所有者を他のlog4j-xx.jarと同じにしてください
        • 権限や所有者が変更されていないと、今後のUpdateを適用する際に、そのファイルを操作できず、ファイルの差し替えが出来なくなるなどが生じる恐れがあります
      • (追記③)IEなどのブラウザではダウンロード時に.jarが.zipに変更される場合があるようです。その場合は拡張子を.jarに戻してください
    7. PMT及びデータストアを開始してください。起動が確認できましたら、一時的に別の場所に移動したlog4j-core-2.3.jarは削除してください

     

    パフォーマンス管理ツールセット(PMT)2018:

    PMT 2018 は、log4j 2.9.1 と log4j 2.3 が含まれています。どちらのバージョンにも脆弱性の影響があります。

    手順:

    1. PMT 及びデータストアを停止します
    2. <PMT_Home>\datastore\configディレクトリに移動します
    3. log4j-core-2.9.1.jarファイル を一時的に別の場所に移動します
      • 必ずPMTのルートフォルダ以外に移動してください。ファイル名を変えただけでファイルを移動しなかった場合は、引き続き脆弱性のあるファイルを読み込む原因となります
    4. パッチが適用されたlog4j-core-2.9.1.jar  ファイル(JNDILookUp クラスが取り除かれたパッチファイル)をダウンロードし、このフォルダに配置します
      • (追記①)2021.12.16更新:ファイルのリンク先が更新され、ファイル名がオリジナルと同じlog4j-core-2.9.1.jarになりましたのでファイル名の変更は不要になりましたファイル名がlog4j-core-2.9.1-logshell.jarとなっています。このままでも読み込まれますが、log4j-core-2.9.1.jar にファイル名を変更してください
        • このファイル名のまま今後Updateを適用した際に、log4j-core-2.9.1-logshell.jarのファイル名だと新しいlog4jに置き換えることができず残ってしまう懸念があるためです
      • (追記②)特にUnix環境では、差し替えるファイルの権限や所有者を他のlog4j-xx.jarと同じにしてください
        • 権限や所有者が変更されていないと、今後のUpdateを適用する際に、そのファイルを操作できず、ファイルの差し替えが出来なくなるなどが生じる恐れがあります
    5. <PMT_Home>\lib ディレクトリに移動します。
    6. log4j-core-2.3.jar ファイルを一時的に別の場所に移動します
      • 必ずPMTのルートフォルダ以外に移動してください。ファイル名を変えただけでファイルを移動しなかった場合は、引き続き脆弱性のあるファイルを読み込む原因となります
    7. パッチが適用された log4j-core-2.3.jar ファイル(JNDILookUp クラスが取り除かれたパッチファイル)をダウンロードし、このフォルダに配置します
      • (追記①)2021.12.16更新:ファイルのリンク先が更新され、ファイル名がオリジナルと同じlog4j-core-2.3.jarになりましたのでファイル名の変更は不要になりましたファイル名がlog4j-core-2.3-logshell.jarとなっています。このままでも読み込まれますが、log4j-core-2.3.jar にファイル名を変更してください
        • このファイル名のまま今後Updateを適用した際に、log4j-core-2.3-logshell.jarのファイル名だと新しいlog4jに置き換えることができず残ってしまう懸念があるためです
      • (追記②)特にUnix環境では、差し替えるファイルの権限や所有者を他のlog4j-xx.jarと同じにしてください
        • 権限や所有者が変更されていないと、今後のUpdateを適用する際に、そのファイルを操作できず、ファイルの差し替えが出来なくなるなどが生じる恐れがあります
      • (追記③)IEなどのブラウザではダウンロード時に.jarが.zipに変更される場合があるようです。その場合は拡張子を.jarに戻してください
    8. PMT及びデータストアを開始してください。起動が確認できましたら、一時的に別の場所に移動したlog4j-core-2.3.jarおよび log4j-core-2.9.1 を削除できます

     

     APIM 2021 および APIM 2018、2016:

    APIM 2021 と 2018、2016 には log4j 2.3 が含まれています。このバージョンは影響を受けます

    手順:

    1. APIM server(<APIM_Home>\bin)とAnalytics (<APIM_Home>\database\analytics\bin) サービスを停止します。
    2. <APIM_Home>\lib ディレクトリに移動します。
    3. log4j-core-2.3.jar ファイルを一時的に別の場所に移動します
      • 必ずAPIMのルートフォルダ以外に移動してください。ファイル名を変えただけでファイルを移動しなかった場合は、引き続き脆弱性のあるファイルを読み込む原因となります
    4. パッチが適用された log4j-core-2.3.jar ファイル(JNDILookUp クラスが取り除かれたパッチファイル)をダウンロードし、このフォルダに配置します
      • (追記①)2021.12.16更新:ファイルのリンク先が更新され、ファイル名がオリジナルと同じlog4j-core-2.3.jarになりましたのでファイル名の変更は不要になりましたファイル名がlog4j-core-2.3-logshell.jarとなっています。このままでも読み込まれますが、log4j-core-2.3.jar にファイル名を変更してください
        • このファイル名のまま今後Updateを適用した際に、log4j-core-2.3-logshell.jarのファイル名だと新しいlog4jに置き換えることができず残ってしまう懸念があるためです
      • (追記②)特にUnix環境では、差し替えるファイルの権限や所有者を他のlog4j-xx.jarと同じにしてください
        • 権限や所有者が変更されていないと、今後のUpdateを適用する際に、そのファイルを操作できず、ファイルの差し替えが出来なくなるなどが生じる恐れがあります
      • (追記③)IEなどのブラウザではダウンロード時に.jarが.zipに変更される場合があるようです。その場合は拡張子を.jarに戻してください
    5. APIM serverと Analytics を開始します。
    6. 起動が確認できましたら、一時的に別の場所に移動したlog4j-core-2.3.jarは削除してください


     


    記事公開日:2021年12月15日
    最終更新日:2022年01月12日

     


    x

    Sample Modal Window

    This is just a sample…

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent suscipit iaculis libero sed tristique. Quisque mollis dolor non tellus placerat vitae sodales lectus porta. Curabitur ut suscipit tellus. Maecenas rhoncus, ante vitae vehicula vestibulum, metus sapien dapibus tellus, et mattis dolor neque vitae nisl. Nullam eleifend ultrices ipsum eget pretium. Curabitur semper metus ut ante adipiscing nec volutpat sem rutrum. Nullam a nisi lacus, non interdum ante. Vivamus ante augue, commodo vel egestas sed, pharetra nec dui. Quisque sed tellus felis. Donec ipsum mauris, sagittis eu accumsan in, aliquam non ipsum.

    Vestibulum tempor nunc nec felis scelerisque eget elementum erat dignissim. Ut vel ipsum mollis orci venenatis luctus. Aenean vehicula quam vel quam porttitor ac iaculis elit pulvinar. Proin consequat, ipsum eu venenatis semper, justo turpis posuere tortor, ac placerat metus nisl et lectus. Nulla cursus dui id nunc ullamcorper sed semper nisl lobortis. Aliquam erat volutpat. Phasellus arcu ante, imperdiet in ornare sed, laoreet eu massa.