CVE-2021-42574 の FAQ

アトラシアン ナレッジベース

このページの内容

お困りですか?

アトラシアン コミュニティをご利用ください。

コミュニティに質問

全般的な情報

このページでは、レンダリングされないユニコードの双方向のオーバーライド文字についてのセキュリティ勧告 ( に公開) に関連する、よくある質問と回答をご案内します。


アップグレードを行えるようになるまでに何かできることはありますか?

アプリ内で Unicode の双方向のオーバーライド (bidi) 文字を視覚的に表示するためのアップグレードまでの間に行える、プロアクティブな手順があるかどうかについてのご質問と理解しております。この新しい表示方法を利用できる唯一の方法はアップグレードですが、ご利用のアプリケーション内でこれらの文字をスキャンするために利用できるいくつかのクエリをご用意しています。これにより、管理者は任意で、それらの文字が正当な方法で使用されているかの評価を行うことができます。これは、アップグレードであっても、管理者やセキュリティ チームに推奨されるプラクティスです。

なお、これは、管理者がシステムへのアクセスを得られるようになる新しい方法ではありません。このような文字や、潜在的な悪意のあるコードを追加するには、ユーザーがコンテンツを投稿可能である必要があります。現在およびアップグレード後に、次のようなセキュリティのベスト プラクティスを組織内で共有することをおすすめします。

  1. ソース コードに外部のソースのコード スニペットをコピー アンド ペーストしないこと
  2. コマンド シェルへのコピー アンド ペーストを行う際は特に気をつけること

これら 2 つは、対象の文字が意図せず追加され、意図しない結果を引き起こす場合のよくある例です。

繰り返しになりますが、この修正は、ユーザーが画面でコードに関連する作業を行うときに対象の文字を表示するものであり、ユースケースによっては正当なものもあります。対象の文字が見つかった場合は、その使用が正当かどうかを引き続き判断する必要があります。

弊社の開発チームとともに、管理者やデータベース チームがいくつかの弊社製品で対象の文字を発見するために使えるクエリを作成しました。以降でご確認ください。

Bitbucket Server と Data Center、および Fisheye/Crucible の場合、リポジトリのコンテンツで bidi 文字を検索する必要があります。弊社では、お客様のリポジトリでのこれらの文字の検索方法についてのガイダンスを提供することはできません。ベスト プラクティスが必要な場合は社内のセキュリティ チームにコンサルティングを依頼することをおすすめします。以降では、修正済みバージョンで表示するようになった bidi 文字の一覧をまとめています。


双方向文字が存在する場合、私のインスタンスは侵害されているのでしょうか?

いいえ。このような文字は一部のスクリプトにおいては適切なユースケースがあります。たとえば、アラビア語用の広く使用されているスクリプトが考えられます。アラビア語は右から左に読まれます。双方向文字により、このようなスクリプトをユーザー向けに翻訳することができます。双方向文字が悪意のある操作や意図しない操作を行うために使用されているかどうかを確認するには、コードやロジックの内容や、それらでの双方向文字の使用方法を理解することが重要です。


ホモグリフ文字/CVE-2021-42694 の軽減策を教えてください。アトラシアンでは修正に取り組んでいるのでしょうか?

ホモグリフ文字は、さまざまなソフトウェアやコードベースにおいて既知であり、適切な事例で幅広く利用されています。一部のスクリプトではホモグリフ文字の使用が必須であるほか、これらはECMAScript specification でサポートされています。

アトラシアンは、弊社製品をお客様にご利用いただくうえで、それらを確実に安全なものにすることにコミットしています。弊社ではコードベースをスキャンしてホモグリフを検出するにあたり、パートナーシップを組んでいるセキュリティ監査企業と密接な議論を行いました。ご自身のコードベースでホモグリフの存在を特定するのに役立つスクリプトが、オープン ソース コミュニティに数多く存在します (例: https://github.com/codebox/homoglyph)。しかしながら、アトラシアンではリンク先の例を含み、これらのスクリプトの使用についての責任を追いません。


自社のアプリケーションに双方向文字またはホモグリフ文字が存在するかどうかを確認することはできますか?

弊社のクラウド製品、または軽減策をロールアウト済みのバージョンのサーバー製品をご利用の場合、コードベースやコード ブロックに双方向文字が存在すれば、それらを明確に区別することができます。


アトラシアンでは自社システムでこれらの文字をどのように確認したのですか? 見つかった場合、どのような措置を行ったのですか?

弊社では自社のファイルをスキャンし、悪意のある操作の条件を示すサインがあるかどうかを評価しました。


脆弱性がパッチされたかどうかをテストするために使用できる Unicode 文字を共有してください。

略語

コードの表記

名前

説明

LRE

U+202A

Left-to-Right Embedding

以降のテキストを左から右に扱うことを試みます。

RLE

U+202B

Right-to-Left Embedding

以降のテキストを右から左に扱うことを試みます。

LRO

U+202D

Left-to-Right Override

以降のテキストを左から右に扱うよう強制します。

RLO

U+202E

Right-to-Left Override

以降のテキストを右から左に扱うよう強制します。

LRI

U+2066

Left-to-Right Isolate

以降のテキストを、隣り合うテキストに影響させることなく、左から右に扱うよう強制します。

RLI

U+2067

Right-to-Left Isolate

以降のテキストを、隣り合うテキストに影響させることなく、右から左に扱うよう強制します。

FSI

U+2068

First Strong Isolate

以降のテキストを、次の文字で指示される方向で扱うよう強制します。

PDF

U+202C

Pop Directional Formatting

もっとも近い LRE、RLE、LRO、または RLO を終わらせます。

PDI

U+2069

Pop Directional Isolate

もっとも近い LRI または RLI を終わらせます。


修正済みのアプリケーション バージョンを教えてください。

修正済みバージョンについてはセキュリティ勧告をご確認ください。複数の製品のセキュリティ勧告 - レンダリングされない Unicode の双方向のオーバーライド文字 - CVE-2021-42574


アップグレード

アップグレードで支援が必要な場合

アップグレードに関連する詳細な質問をお持ちの場合はステップバイステップの手順が必要な場合、以降の関連リンクをご確認ください。

Jira

Jira アプリケーションのアップグレード

Jira Data Center をゼロ ダウンタイムでアップグレードする場合: Jira Data Center をゼロ ダウンタイムでアップグレードする

Confluence

Confluence のアップグレード

Bitbucket Server

Bitbucket Server アップグレード ガイド

Bamboo

Bamboo アップグレード ガイド

Fisheye/Crucible

Fisheye アップグレード ガイド

Crucible アップグレード ガイド


アップグレードにエンジニアの支援が必要な場合

弊社で専任の支援を提供することはできませんが、アップグレード計画の作成をお手伝いすることは可能なほか、問題が発生し、それらを起票していただいた場合は、弊社のサービス レベル合意に基づいてご対応いたします。

アトラシアンのサポート内容の詳細については「アトラシアン サポートの提供について」をご確認ください。


勧告

この勧告は "高度" と評価されていますが、通知は通常は "重大" な問題についてのみ送られるはずです。対応が異なるのはなぜですか?

アトラシアンでは、お客様のセキュリティや信頼を非常に重要視しています。この脆弱性についての連絡を弊社が調査員から受け取ったときに、彼らは脆弱性情報を公開することを予定していました。弊社ではお客様のセキュリティや信頼を重視し、脆弱性が公開されるタイミングで軽減策の存在をお客様が把握できるようにしました。深刻度の評価はこの判断の一部に過ぎません。


アトラシアンでは勧告メールの送信先をどのように判断しているのですか?

デフォルトでは、セキュリティ脆弱性や他の技術的なアラート (価格の変更、メンテナンス通知など) に関連するメールは常にプライマリの技術担当者に送られます。 

他の担当者は、http://my.atlassian.com に移動し、上部の [メール購読設定] をクリックし、[Tech Alerts] にスクロールして通知を受け取りたい製品を選択することで、このような通知にオプトインできます。


各製品

Jira Core/Jira Software/Jira Service Management

 にリリースされたセキュリティ勧告 (CVE-2018-10054) を受けてアップグレードを行ったばかりであり、来週もアップグレード勧告が来るのではないかと不安です。

このような短期間に 2 つの勧告を発表したことにより、ご不便をおかけしております。弊社で直近の勧告の有無を保証することはできませんが、よろしければ Jira のセキュリティ勧告の履歴をご確認ください。現在は変則的な状況であることをお分かりいただけるかと思います。弊社では、お客様のインスタンスを可能な限りセキュアに保つことを常に優先しています。

Jira Core/Jira Software

  にリリースされたセキュリティ勧告 (CVE-2018-10054) を受けて Jira Core/Jira Software をアップグレードしたばかりで、即座にアップグレードすることはできません。CVE-2021-42574 の影響を軽減するための一時的な回避策はありますか?

影響を受けるバージョンをご利用である場合は可能な限り早期にアップグレードすることをおすすめしていますが、一時的な回避策として、部分的な修正を含む新しい JAR ファイルをデプロイすることで問題を軽減できます。

:info: Jira Data Center の場合、一時的な回避策を 1 ノードずつ適用できます。Jira クラスタ全体のシャットダウンは不要です。 回避策の JAR ファイルにおいて、ノード間の依存関係はありません。

:info: 一時的な回避策は、Jira Core/Jira Software のバージョン 8.20 でのみサポートされます。

次の変更はパッチには含まれておらず、Jira を修正済みのバージョンにアップグレードしたあとにのみ利用できます。

  • 送信メールで双方向の Unicode 文字をハイライト

  • アクティビティ ストリームで双方向の Unicode 文字をハイライト

すべての変更を利用するには修正済みバージョンにアップグレードする必要があります。

  • すべての課題画面 (作成、表示、編集など) のコード ブロックで双方向文字をハイライト

    • 例: wiki マークアップを使用している、課題の説明、コメント、カスタム フィールド

    • 値の表示時と、ビジュアル モードでの編集時

  • 送信メールのコード ブロックで双方向の Unicode 文字をハイライト

  • アクティビティ ストリームのコード ブロックで双方向の Unicode 文字をハイライト

Jira Core/Jira Software の手順

要件

Jira Core/Jira Software バージョン 8.20

パッチ ファイルと場所

場所

削除するファイル

新しいファイル

<jira-install>/atlassian-jira/WEB-INF/atlassian-bundled-plugins/

jira-editor-plugin-4.6.5.jar

jira-editor-plugin-4.7.1-patch.jar
<jira-install>/atlassian-jira/WEB-INF/lib/atlassian-renderer-8.0.32.jaratlassian-renderer-8.0.33-patch.jar


手順 - 上記の表を参照

  1. Jira (またはノード) をシャットダウンします。

  2. ファイル jira.zip をダウンロードして展開します。

  3. "削除するファイル" (上記の表を参照) にあるファイルを、指定された場所から削除します。

    1. Jira インストール ディレクトリ内で既存のファイルをバックアップしないでください。

    2. 既存のファイルのコピーを作成しないでください。既存のファイルは移動する必要があります。

  4. 新しくダウンロードしたファイルを、指定された場所にコピーします。

  5. ファイルに、ディレクトリのほかのファイルと同じ権限が付与されていることを確認します。

  6. Jira (またはノード) を開始します。

  7. Jira をクラスタで実行している場合、すべてのノードで新しいファイルを同様にデプロイします。


Jira Service Management

  にリリースされたセキュリティ勧告 (CVE-2018-10054) を受けて Jira Service Management インスタンスをアップグレードしたばかりで、即座にアップグレードすることはできません。CVE-2021-42574 の影響を軽減するための一時的な回避策はありますか?

影響を受けるバージョンをご利用である場合は可能な限り早期にアップグレードすることをおすすめしていますが、一時的な回避策として、部分的な修正を含む新しい JAR ファイルをデプロイすることで問題を軽減できます。

(info) Jira Data Center の場合、一時的な回避策を 1 ノードずつ適用できます。Jira クラスタ全体のシャットダウンは不要です。 回避策の JAR ファイルにおいて、ノード間の依存関係はありません。

(info) 一時的な回避策は、Jira Service Management のバージョン 4.20 でのみサポートされます。

(warning) Jira 8.20 用のパッチ ファイルもインストールする必要があります (上記を参照)。

次の機能はパッチで網羅されておらず、通常の Jira アップグレードを行ったあとにのみ利用できます。

  • 送信メールで双方向の Unicode 文字をハイライト

  • アクティビティ ストリームで双方向の Unicode 文字をハイライト

完全な修正を利用するには修正済みバージョンにアップグレードする必要があります。

  • すべての課題画面 (作成、表示、編集など) のコード ブロックで双方向文字をハイライト

    • 例: wiki マークアップを使用している、課題の説明、コメント、カスタム フィールド

    • 値の表示時と、ビジュアル モードでの編集時

  • 送信メールのコード ブロックで双方向の Unicode 文字をハイライト

  • アクティビティ ストリームのコード ブロックで双方向の Unicode 文字をハイライト

Jira Service Management の手順

要件

  • Jira Service Management バージョン 4.20

  • Jira 8.20 用のパッチ済みの JAR ファイルがインストール済みであること

パッチ ファイルと場所

Jira Service Management をこちらからダウンロードしてインストールした場合:

場所

削除するファイル

新しいファイル

<jira-install>/atlassian-jira/WEB-INF/application-installation/jira-servicedesk-application

servicedesk-frontend-plugin-4.20.0-REL-0052.jar

servicedesk-frontend-plugin-4.20.0-REL-0053.jar

<jira-install>/atlassian-jira/WEB-INF/application-installation/jira-servicedesk-application

insight-9.1.2.jar

insight-9.1.3.jar

Jira Software をダウンロードおよびインストールしてから Jira Service Management を追加した場合:

インストール

場所

削除するファイル

新しいファイル

Data Center

<jira-shared-home>/plugins/installed-plugins/

servicedesk-frontend-plugin-4.20.0-REL-0052.jar

servicedesk-frontend-plugin-4.20.0-REL-0052.jar

insight-9.1.2.jar

insight-9.1.2.jar

サーバー

<jira-home>/plugins/installed-plugins/

servicedesk-frontend-plugin-4.20.0-REL-0052.jar

servicedesk-frontend-plugin-4.20.0-REL-0052.jar

insight-9.1.2.jarinsight-9.1.2.jar


手順 - 上記の表を利用

  1. Jira (またはノード) をシャットダウンします。

  2. ファイル jsm.zip をダウンロードして展開します。

  3. "削除するファイル" (上記の表を参照) にあるファイルを、指定された場所から削除します。

    1. (warning) Jira インストール ディレクトリ内で既存のファイルをバックアップしないでください。

    2. (warning) 既存のファイルのコピーを作成しないでください。既存のファイルは移動する必要があります。

  4. 新しくダウンロードしたファイルを、指定された場所にコピーします。

  5. ファイルに、ディレクトリのほかのファイルと同じ権限が付与されていることを確認します。

  6. Jira (またはノード) を開始します。

  7. Jira をクラスタで実行している場合、すべてのノードで新しいファイルを同様にデプロイします。


Insight Asset Management を使用しています。アプリをアップグレードする必要はありますか?

Insight Asset Management は、Jira Service Management 4.15 以降にバンドルされています。Jira Service Management 4.15 以降を実行しているかこのバージョンにアップグレード済みの場合、Insight Asset Management を更新するための追加の手順は不要です。

Jira Service Management 4.14 以前を実行している場合、UPM から Insight Asset Management を更新する必要があります。これは、Jira Service Management 4.13.13 にアップグレードする場合も含まれます。

  1. [管理] > [アプリの管理] に移動します

  2. プロンプトに従って Insight Asset Management をアップグレードします。

Jira Service Management の互換性の情報については、Insight Asset Management の Marketplace ページをご確認ください。


Jira データベースで対象の文字をスキャンするために使えるクエリはありますか?

はい。Jira でサポートされるさまざまなデータベース タイプ用のクエリを以降でご確認ください。修正の対象はフォーマットされたコード ブロック内の当該文字であるため、これらのクエリも同様に、フォーマットされたコード ブロックのみをスキャンします。双方向文字がこれらのブロックの外部に存在する可能性もあります。

(warning) 本番環境インスタンスへのクエリは、特にピーク負荷時は推奨されません。スキャンは業務時間外に行うか、テスト サーバーで行うことを推奨します。

(warning) 結果の分析や詳細な調査については、社内のセキュリティ チームまたはセキュリティ フォレンジック機関に相談することを強く推奨します。


~100,000 件の課題を持つ Postgres インスタンスでのパフォーマンス結果の例:

  • jiraissue - 2 秒未満

  • jiraaction - 29 分

  • customfieldvalue - 2 秒未満



Postgres
SELECT (jp.pkey || '-' || ji.issuenum) AS "IssueKey", ja.actionbody AS "Comment", ji.description AS "Description",  cfv.stringvalue AS "Custom field string", cfv.textvalue AS "Custom field text"
FROM jiraissue ji
INNER JOIN project jp ON jp.id = ji.project
LEFT JOIN jiraaction ja ON ja.issueid = ji.id
LEFT JOIN customfieldvalue cfv ON cfv.issue = ji.id
WHERE (
  (
    (ja.actionbody LIKE '%{code}%'or ja.actionbody LIKE '%{noformat}%') AND (
      ja.actionbody LIKE '%' || E'\u2066' || '%'
      OR ja.actionbody LIKE '%' || E'\u2067' || '%'
      OR ja.actionbody LIKE '%' || E'\u2068' || '%'
      OR ja.actionbody LIKE '%' || E'\u2069' || '%'
      OR ja.actionbody LIKE '%' || E'\u202a' || '%'
      OR ja.actionbody LIKE '%' || E'\u202b' || '%'
      OR ja.actionbody LIKE '%' || E'\u202c' || '%'
      OR ja.actionbody LIKE '%' || E'\u202d' || '%'
      OR ja.actionbody LIKE '%' || E'\u202e' || '%'
    )
  ) OR (
    (
      ji.description LIKE '%{code}%' OR ji.description LIKE '%{noformat}%' ) AND (
        ji.description LIKE '%' || E'\u2066' || '%'
        OR ji.description LIKE '%' || E'\u2067' || '%'
        OR ji.description LIKE '%' || E'\u2068' || '%'
        OR ji.description LIKE '%' || E'\u2069' || '%'
        OR ji.description LIKE '%' || E'\u202a' || '%'
        OR ji.description LIKE '%' || E'\u202b' || '%'
        OR ji.description LIKE '%' || E'\u202c' || '%'
        OR ji.description LIKE '%' || E'\u202d' || '%'
        OR ji.description LIKE '%' || E'\u202e' || '%'
      )
    ) OR (
      (
        cfv.stringvalue LIKE '%{code}%'
        OR cfv.stringvalue LIKE '%{noformat}%'
      ) AND (
        cfv.stringvalue LIKE '%' || E'\u2066' || '%'
        OR cfv.stringvalue LIKE '%' || E'\u2067' || '%'
        OR cfv.stringvalue LIKE '%' || E'\u2068' || '%'
        OR cfv.stringvalue LIKE '%' || E'\u2069' || '%'
        OR cfv.stringvalue LIKE '%' || E'\u202a' || '%'
        OR cfv.stringvalue LIKE '%' || E'\u202b' || '%'
        OR cfv.stringvalue LIKE '%' || E'\u202c' || '%'
        OR cfv.stringvalue LIKE '%' || E'\u202d' || '%'
        OR cfv.stringvalue LIKE '%' || E'\u202e' || '%'
      )
    ) OR (
      (
        cfv.textvalue LIKE '%{code}%'
        OR cfv.textvalue LIKE '%{noformat}%'
      ) AND (
        cfv.textvalue LIKE '%' || E'\u2066' || '%'
        OR cfv.textvalue LIKE '%' || E'\u2067' || '%'
        OR cfv.textvalue LIKE '%' || E'\u2068' || '%'
        OR cfv.textvalue LIKE '%' || E'\u2069' || '%'
        OR cfv.textvalue LIKE '%' || E'\u202a' || '%'
        OR cfv.textvalue LIKE '%' || E'\u202b' || '%'
        OR cfv.textvalue LIKE '%' || E'\u202c' || '%'
        OR cfv.textvalue LIKE '%' || E'\u202d' || '%'
        OR cfv.textvalue LIKE '%' || E'\u202e' || '%'
      )
    )
  )
ORDER BY jp.pkey, ji.issuenum
MySQL
SELECT CONCAT(jp.pkey, '-', ji.issuenum) AS "IssueKey", ja.actionbody AS "Comment", ji.DESCRIPTION AS "Description",  cfv.stringvalue AS "Custom field string", cfv.textvalue AS "Custom field text"
FROM jiraissue ji
INNER JOIN project jp ON jp.id = ji.project
LEFT JOIN jiraaction ja ON ja.issueid = ji.id
LEFT JOIN customfieldvalue cfv ON cfv.issue = ji.id
WHERE
    (
        (
            ji.DESCRIPTION LIKE '%{code}%' OR ji.DESCRIPTION LIKE '%{noformat}%'
        ) AND (
            ji.DESCRIPTION LIKE CONCAT('%', CHAR(0x2066 USING utf16), '%')
                OR ji.DESCRIPTION LIKE CONCAT('%', CHAR(0x2067 USING utf16), '%')
                OR ji.DESCRIPTION LIKE CONCAT('%', CHAR(0x2068 USING utf16), '%')
                OR ji.DESCRIPTION LIKE CONCAT('%', CHAR(0x2069 USING utf16), '%')
                OR ji.DESCRIPTION LIKE CONCAT('%', CHAR(0x202a USING utf16), '%')
                OR ji.DESCRIPTION LIKE CONCAT('%', CHAR(0x202b USING utf16), '%')
                OR ji.DESCRIPTION LIKE CONCAT('%', CHAR(0x202c USING utf16), '%')
                OR ji.DESCRIPTION LIKE CONCAT('%', CHAR(0x202d USING utf16), '%')
                OR ji.DESCRIPTION LIKE CONCAT('%', CHAR(0x202e USING utf16), '%')
            )
    ) OR (
        (
            ja.actionbody LIKE '%{code}%' OR ja.actionbody LIKE '%{noformat}%'
        ) AND
            (ja.actionbody LIKE CONCAT('%', CHAR(0x2066 USING utf16), '%')
                OR ja.actionbody LIKE CONCAT('%', CHAR(0x2067 USING utf16), '%')
                OR ja.actionbody LIKE CONCAT('%', CHAR(0x2068 USING utf16), '%')
                OR ja.actionbody LIKE CONCAT('%', CHAR(0x2069 USING utf16), '%')
                OR ja.actionbody LIKE CONCAT('%', CHAR(0x202a USING utf16), '%')
                OR ja.actionbody LIKE CONCAT('%', CHAR(0x202b USING utf16), '%')
                OR ja.actionbody LIKE CONCAT('%', CHAR(0x202c USING utf16), '%')
                OR ja.actionbody LIKE CONCAT('%', CHAR(0x202d USING utf16), '%')
                OR ja.actionbody LIKE CONCAT('%', CHAR(0x202e USING utf16), '%'))
    ) OR (
        (
            cfv.stringvalue LIKE '%{code}%' OR cfv.stringvalue LIKE '%{noformat}%'
        ) AND (
            cfv.stringvalue LIKE CONCAT('%', CHAR(0x2066 USING utf16), '%')
                OR cfv.stringvalue LIKE CONCAT('%', CHAR(0x2067 USING utf16), '%')
                OR cfv.stringvalue LIKE CONCAT('%', CHAR(0x2068 USING utf16), '%')
                OR cfv.stringvalue LIKE CONCAT('%', CHAR(0x2069 USING utf16), '%')
                OR cfv.stringvalue LIKE CONCAT('%', CHAR(0x202a USING utf16), '%')
                OR cfv.stringvalue LIKE CONCAT('%', CHAR(0x202b USING utf16), '%')
                OR cfv.stringvalue LIKE CONCAT('%', CHAR(0x202c USING utf16), '%')
                OR cfv.stringvalue LIKE CONCAT('%', CHAR(0x202d USING utf16), '%')
                OR cfv.stringvalue LIKE CONCAT('%', CHAR(0x202e USING utf16), '%')
        )
    ) OR (
        (
            cfv.textvalue LIKE '%{code}%' OR cfv.textvalue LIKE '%{noformat}%'
        ) AND (
            cfv.textvalue LIKE CONCAT('%', CHAR(0x2066 USING utf16), '%')
                OR cfv.textvalue LIKE CONCAT('%', CHAR(0x2067 USING utf16), '%')
                OR cfv.textvalue LIKE CONCAT('%', CHAR(0x2068 USING utf16), '%')
                OR cfv.textvalue LIKE CONCAT('%', CHAR(0x2069 USING utf16), '%')
                OR cfv.textvalue LIKE CONCAT('%', CHAR(0x202a USING utf16), '%')
                OR cfv.textvalue LIKE CONCAT('%', CHAR(0x202b USING utf16), '%')
                OR cfv.textvalue LIKE CONCAT('%', CHAR(0x202c USING utf16), '%')
                OR cfv.textvalue LIKE CONCAT('%', CHAR(0x202d USING utf16), '%')
                OR cfv.textvalue LIKE CONCAT('%', CHAR(0x202e USING utf16), '%')
        )
    )
ORDER BY jp.pkey, ji.issuenum;
Microsoft SQL Server
SELECT CONCAT(jp.pkey, '-', ji.issuenum) AS "IssueKey", ja.actionbody AS "Comment", ji.DESCRIPTION AS "Description",  cfv.STRINGVALUE AS "Custom field string", cfv.textvalue AS "Custom field text"
FROM jiraissue AS ji
INNER JOIN project AS jp ON jp.id = ji.project
LEFT JOIN jiraaction AS ja ON ja.issueid = ji.id
LEFT JOIN customfieldvalue AS cfv ON cfv.issue = ji.id
WHERE
    (
        (
            ji.DESCRIPTION LIKE '%{code}%' OR ji.DESCRIPTION LIKE '%{noformat}%'
        ) AND
            ji.DESCRIPTION COLLATE Latin1_General_BIN2 LIKE N'%[' + NCHAR(0x2066)
                + NCHAR(0x2067)
                + NCHAR(0x2068)
                + NCHAR(0x2069)
                + NCHAR(0x202a)
                + NCHAR(0x202b)
                + NCHAR(0x202c)
                + NCHAR(0x202d)
                + NCHAR(0x202e) + ']%'
    ) OR (
        (
            ja.actionbody LIKE '%{code}%' OR ja.actionbody LIKE '%{noformat}%'
        ) AND
            ja.actionbody COLLATE Latin1_General_BIN2 LIKE N'%[' + NCHAR(0x2066)
                + NCHAR(0x2067)
                + NCHAR(0x2068)
                + NCHAR(0x2069)
                + NCHAR(0x202a)
                + NCHAR(0x202b)
                + NCHAR(0x202c)
                + NCHAR(0x202d)
                + NCHAR(0x202e) + ']%'
    ) OR (
        (
            cfv.STRINGVALUE LIKE '%{code}%' OR cfv.STRINGVALUE LIKE '%{noformat}%'
        ) AND
            cfv.STRINGVALUE COLLATE Latin1_General_BIN2 LIKE N'%[' + NCHAR(0x2066)
                + NCHAR(0x2067)
                + NCHAR(0x2068)
                + NCHAR(0x2069)
                + NCHAR(0x202a)
                + NCHAR(0x202b)
                + NCHAR(0x202c)
                + NCHAR(0x202d)
                + NCHAR(0x202e) + ']%'
    ) OR (
        (
            cfv.textvalue LIKE '%{code}%' OR cfv.textvalue LIKE '%{noformat}%'
        ) AND
            cfv.textvalue COLLATE Latin1_General_BIN2 LIKE N'%[' + NCHAR(0x2066)
                + NCHAR(0x2067)
                + NCHAR(0x2068)
                + NCHAR(0x2069)
                + NCHAR(0x202a)
                + NCHAR(0x202b)
                + NCHAR(0x202c)
                + NCHAR(0x202d)
                + NCHAR(0x202e) + ']%'
    )
ORDER BY jp.pkey, ji.issuenum;
Oracle
SELECT jp.pkey || '-' || ji.issuenum AS "IssueKey", ja.actionbody AS "Comment", ji.description AS "Description",  cfv.stringvalue AS "Custom field string", cfv.textvalue AS "Custom field text"
FROM jiraissue ji
INNER JOIN project jp ON jp.id = ji.project
LEFT JOIN jiraaction ja ON ja.issueid = ji.id
LEFT JOIN customfieldvalue cfv ON cfv.issue = ji.id
WHERE
    (
        (
            ji.description LIKE '%{code}%' OR ji.description LIKE '%{noformat}%'
        ) AND (
            ji.description LIKE '%' || unistr('\2066') || '%'
                OR ji.description LIKE '%' || unistr('\2067') || '%'
                OR ji.description LIKE '%' || unistr('\2068') || '%'
                OR ji.description LIKE '%' || unistr('\2069') || '%'
                OR ji.description LIKE '%' || unistr('\202a') || '%'
                OR ji.description LIKE '%' || unistr('\202b') || '%'
                OR ji.description LIKE '%' || unistr('\202c') || '%'
                OR ji.description LIKE '%' || unistr('\202d') || '%'
                OR ji.description LIKE '%' || unistr('\202e') || '%'
        )
    ) OR (
        (
            ja.actionbody LIKE '%{code}%' OR ja.actionbody LIKE '%{noformat}%'
        ) AND (
            ja.actionbody LIKE '%' || unistr('\2066') || '%'
                OR ja.actionbody LIKE '%' || unistr('\2067') || '%'
                OR ja.actionbody LIKE '%' || unistr('\2068') || '%'
                OR ja.actionbody LIKE '%' || unistr('\2069') || '%'
                OR ja.actionbody LIKE '%' || unistr('\202a') || '%'
                OR ja.actionbody LIKE '%' || unistr('\202b') || '%'
                OR ja.actionbody LIKE '%' || unistr('\202c') || '%'
                OR ja.actionbody LIKE '%' || unistr('\202d') || '%'
                OR ja.actionbody LIKE '%' || unistr('\202e') || '%'
        )
    ) OR (
        (
            cfv.stringvalue LIKE '%{code}%' OR cfv.stringvalue LIKE '%{noformat}%'
        ) AND (
            cfv.stringvalue LIKE '%' || unistr('\2066') || '%'
                OR cfv.stringvalue LIKE '%' || unistr('\2067') || '%'
                OR cfv.stringvalue LIKE '%' || unistr('\2068') || '%'
                OR cfv.stringvalue LIKE '%' || unistr('\2069') || '%'
                OR cfv.stringvalue LIKE '%' || unistr('\202a') || '%'
                OR cfv.stringvalue LIKE '%' || unistr('\202b') || '%'
                OR cfv.stringvalue LIKE '%' || unistr('\202c') || '%'
                OR cfv.stringvalue LIKE '%' || unistr('\202d') || '%'
                OR cfv.stringvalue LIKE '%' || unistr('\202e') || '%'
        )
    ) OR (
        (
            cfv.textvalue LIKE '%{code}%' OR cfv.textvalue LIKE '%{noformat}%'
        ) AND (
            cfv.textvalue LIKE '%' || unistr('\2066') || '%'
                OR cfv.textvalue LIKE '%' || unistr('\2067') || '%'
                OR cfv.textvalue LIKE '%' || unistr('\2068') || '%'
                OR cfv.textvalue LIKE '%' || unistr('\2069') || '%'
                OR cfv.textvalue LIKE '%' || unistr('\202a') || '%'
                OR cfv.textvalue LIKE '%' || unistr('\202b') || '%'
                OR cfv.textvalue LIKE '%' || unistr('\202c') || '%'
                OR cfv.textvalue LIKE '%' || unistr('\202d') || '%'
                OR cfv.textvalue LIKE '%' || unistr('\202e') || '%'
        )
    )
ORDER BY jp.pkey, ji.issuenum;


Confluence

 にリリースされたセキュリティ勧告 (CVE-2021-26084) を受けてアップグレードを行ったばかりであり、来週もアップグレード勧告が来るのではないかと不安です。

このような短期間に 2 つの勧告を発表したことにより、ご不便をおかけしております。弊社で直近の勧告の有無を保証することはできませんが、よろしければ Confluence のセキュリティ勧告の履歴をご確認ください。現在は変則的な状況であることをお分かりいただけるかと思います。弊社では、お客様のインスタンスを可能な限りセキュアに保つことを常に優先しています。


 にリリースされたセキュリティ勧告 (CVE-2021-26084) を受けて Confluence インスタンスをアップグレードしたばかりで、即座にアップグレードすることはできません。CVE-2021-42574 の影響を軽減するための一時的な回避策はありますか?

影響を受けるバージョンをご利用である場合は可能な限り早期にアップグレードすることをおすすめしていますが、一時的な回避策として、修正を含む新しい JAR ファイルをデプロイすることで問題を軽減できます。

一時的な回避策は、Confluence クラスタ全体のシャットダウンを行うことなく、1 ノードずつ適用できます。回避策の JAR ファイルにおいて、ノード間の依存関係はありません。
(info) 一時的な回避策は、Confluence 7.4.9 以降でのみサポートされます。
(warning) Confluence 7.4.8 以前をご利用の場合は Confluence の修正済みバージョンにアップグレードしてください。

Confluence の手順

  1. Confluence (またはノード) をシャットダウンします。

  2. newcode-macro-plugin-4.1.1.jar を Confluence のサーバーにダウンロードします。

  3. 既存の <confluence-install>/confluence/WEB-INF/atlassian-bundled-plugins/newcode-macro-plugin-X.X.X.jar<confluence-install> ディレクトリの外部に移動します

    1. X.X.X は、ご利用の Confluence バージョンに依存する、バージョン番号です。

    2. (warning) Confluence のインストール ディレクトリ内で既存のファイルをバックアップしないでください。

    3. (warning) 既存のファイルのコピーを作成しないでください。既存のファイルは移動する必要があります。

  4. ダウンロードした newcode-macro-plugin-4.1.1.jar ファイルを <confluence-install>/confluence/WEB-INF/atlassian-bundled-plugins/ にコピーします

  5. newcode-macro-plugin-4.1.1.jar に、同じディレクトリ内のほかのファイルと同様に関連するファイル権限が付与されていることを確認します。

  6. Confluence (またはノード) を開始します。

  7. Confluence をクラスタで実行している場合は newcode-macro-plugin-4.1.1.jar をすべてのノードでデプロイするようにします。



Confluence データベースで対象の文字をスキャンするために使えるクエリはありますか?

はい。Confluence でサポートされるさまざまなデータベース タイプ用のクエリを以降でご確認ください。

(warning) BODYCONTENT は Confluence で最大のテーブルの 1 つであり、本番環境で上述の完全テキスト検索を実行するときには注意する必要があります。

(warning) クエリはサンプル セットとしてのみ提供しており、Confluence データベース全体を検索するわけではない点にご注意ください。結果の分析や調査については、社内のセキュリティ チームまたはセキュリティ フォレンジック機関に相談することを強く推奨します。​




Postgres
select concat('<confluence-base-url>/pages/viewpage.action?pageId=',c.contentid), c.title, c.content_status
from content c join bodycontent bc on c.contentid = bc.contentid
where 
(
    bc.BODY like '%' || E'\u2066' || '%'
    or bc.BODY like '%' || E'\u2067' || '%'
    or bc.BODY like '%' || E'\u2068' || '%'
    or bc.BODY like '%' || E'\u2069' || '%'
    or bc.BODY like '%' || E'\u202a' || '%'
    or bc.BODY like '%' || E'\u202b' || '%'
    or bc.BODY like '%' || E'\u202c' || '%'
    or bc.BODY like '%' || E'\u202d' || '%'
    or bc.BODY like '%' || E'\u202e' || '%'
)
and c.contenttype='PAGE' and c.prevver is null and c.content_status='current';




MySQL
select concat('<confluence-base-url>/pages/viewpage.action?pageId=',c.CONTENTID), c.TITLE, c.CONTENT_STATUS
from CONTENT c join BODYCONTENT bc on c.CONTENTID = bc.CONTENTID
where
(
    bc.BODY like concat('%', x'e280aa', '%')
    or bc.BODY like concat('%', x'e280ab', '%')
    or bc.BODY like concat('%', x'e280ac', '%')
    or bc.BODY like concat('%', x'e280ad', '%')
    or bc.BODY like concat('%', x'e280ae', '%')
    or bc.BODY like concat('%', x'e281a6', '%')
    or bc.BODY like concat('%', x'e281a7', '%')
    or bc.BODY like concat('%', x'e281a8', '%')
    or bc.BODY like concat('%', x'e281a9', '%')
)
and c.CONTENTTYPE='PAGE' and c.PREVVER is null and c.CONTENT_STATUS='current';



Microsoft SQL Server
select concat('<confluence-base-url>/pages/viewpage.action?pageId=',c.CONTENTID), c.TITLE, c.CONTENT_STATUS
from CONTENT c join BODYCONTENT bc on c.CONTENTID = bc.CONTENTID
where
(
    bc.BODY COLLATE Latin1_General_BIN2 LIKE N'%[' + NCHAR(0x2066)
    + NCHAR(0x2067)
    + NCHAR(0x2068)
    + NCHAR(0x2069)
    + NCHAR(0x202a)
    + NCHAR(0x202b)
    + NCHAR(0x202c)
    + NCHAR(0x202d)
    + NCHAR(0x202e) + ']%'
)
and c.CONTENTTYPE='PAGE' and c.PREVVER is null and c.CONTENT_STATUS='current';
Oracle
select concat('<confluence-base-url>/pages/viewpage.action?pageId=',c.CONTENTID), c.TITLE, c.CONTENT_STATUS
from CONTENT c join BODYCONTENT bc on c.CONTENTID = bc.CONTENTID
where
(
    bc.BODY like ('%' || unistr('\2066') || '%')
    or bc.BODY like ('%' || unistr('\2067') || '%')
    or bc.BODY like ('%' || unistr('\2068') || '%')
    or bc.BODY like ('%' || unistr('\2069') || '%')
    or bc.BODY like ('%' || unistr('\202a') || '%')
    or bc.BODY like ('%' || unistr('\202b') || '%')
    or bc.BODY like ('%' || unistr('\202c') || '%')
    or bc.BODY like ('%' || unistr('\202d') || '%')
    or bc.BODY like ('%' || unistr('\202e') || '%')
)
and c.CONTENTTYPE='PAGE' and c.PREVVER is null and c.CONTENT_STATUS='current';



最終更新日: 2021 年 12 月 13 日

この内容はお役に立ちましたか?

はい
いいえ
この記事についてのフィードバックを送信する
Powered by Confluence and Scroll Viewport.