使用されている脆弱な Log4j を捕まえろ:検知、修正、防御

Log4j in the Wild: Find, Fix and Fortify

多くの組織において、広く使用されている Apache log4j というオープンソースソフトウェアに、長期に渡ってクリティカルな脆弱性が存在していたという驚きの発見は、まるでスクルージとグリンチが手を組んで、最大のホリデー強盗を行ったかのようなものでした。世界中のインシデント レスポンス チームは、数百万とは言わないまでも、数千のアプリケーションを修復するために奔走しています(※訳注:それぞれ英・米の小説・絵本の主人公。クリスマス嫌いで広く知られるのでこのシーズンを意識した表現。「ケチ」の意味で用いられることが多い)

元ホワイトハウスCIOで、現在 Fortalice Solutions の CEO を務める Theresa Payton 氏は、「サイバー犯罪者にとって、これは一足早いクリスマスだ」と説明しています。攻撃者はすぐにこの脆弱性をエクスプロイトして、暗号通貨マイニングマルウェアをインストールしたり、認証情報を盗んだりしたのです。

この危機に対応するために、関連チームは週末を失い、パーティーを欠席し、旅行プランもキャンセルして、膨大な開発環境という干し草の中からの針探しを余儀なくされました。

しかし、Artifactory と Xray のユーザは、このような状態にならなくて済んでいます。もしあなたがその一人なら、JFrog DevOps Platformをミッションクリティカルなソフトウェア開発ライフサイクル(SDLC)プロセスの中心に据えることで得られる長期的なメリットを、直接体験することができるでしょう。

Artifactory のバイナリ リポジトリ管理下に蓄積されたパッケージ、バイナリ、イメージ、メタデータにより、Apache log4j の脆弱性、または、その他のセキュリティ問題に対して迅速に修正するために必要なものはすでに揃っています。

JFrog Platform を使用して、どのように組織を迅速に保護できるかを説明します。

  • 検出 – Artifactory の build-info メタデータと Xray の深い再帰的スキャンを使用して、本稼働しているアプリケーションのインベントリ全体にわたって、推移的依存関係を含む log4j パッケージのすべての存在を検出できる
  • 修正 – Xray による脆弱な log4j パッケージを使用するアプリケーションの特定後、開発者は、更新された安全なバージョンを使用するようにソースコードを更新し、新しいビルドを作成することができる
  • 防御 – Xray スキャン結果に基づいて、log4j の脆弱なバージョンを使用するビルドや、パイプラインにある log4j 脆弱性を持つビルドのリリースへの昇格をブロックできる
With your packages, binaries, images, and metadata under #JFrog #Artifactory and #Xray, you already have everything you need to quickly remediate against the Apache #log4j vulnerability. Click To Tweet

SBOM にある Log4j の全てを検出

アプリケーションのソフトウェア部品表(SBOM)を作成するために、JFrog CLI CI/CD オートメーションの Pipelines でビルド情報のメタデータを取得していると思います。これは、JFrog Platform が実現する最も重要な DevOps のベストプラクティスの1つで、すべてのビルドをすべてのコンポーネントソースに完全に追跡できるようにします。

バイナリ関連データを利用して、脆弱な log4j パッケージのすべてのビルドを検索できます。Artifactory の豊富な検索機能により、最も関連性の高いビルドをターゲットとして検索を絞り込むこともでき、緊急性の高いものへ作業を集中して的を絞ることができます。

たとえば、不変のビルドプロモーションという理想的な DevOps プラクティスに従っている場合、本番環境へのデプロイメントのためのプロモーションチェーンの最終段階(たとえば、「リリース」リポジトリ)用の Artifactory リポジトリのみに検索を限定することで効率化することができます ー テストに失敗したものや、何らかの理由でブロックされたビルドを Artifactory で調査する必要はありません。

log4j または任意の脆弱なパッケージを見つける主要な方法を見てみましょう。

JFrog Platform の検索バーを使用する

JFrog Platform ユーザ インタ フェースの上部にあるアプリケーション検索バーから、リポジトリ全体でどのアイテムがどこで使われているかを簡単に検索できます。Artifactory の検索バーを使用して、Artifactory リモートリポジトリにキャッシュされている log4j パッケージ、およびローカルリポジトリとビルドでの位置を検索します。

Use Artifactory to lookup the log4j packages

Artifactory のアドバンスド検索によって、必要に応じて結果をフィルタリングすることができます。例えば、log4j 2.0 以上のバージョンにのみ脆弱性がある場合等です。あるいは、製品リリースを保持しているリポジトリのみを検索すれば十分であることも多いです。

Artifactory クエリ言語の使用

また、Artifactory Query Language (AQL)findリクエストを使用して、複雑な条件を使用してリポジトリを検索し、フィルタリングされたビルドのリストを生成することができます。

たとえば次のクエリによって、log4j-core ライブラリを使用するすべてのビルドを検索することができます。

builds.find({
  "$and" : [
  {"module.dependency.item.name":{"$match":"log4j-core"}}
  {"created": {"$gt": "2019-01-01"}},
  {"promotion.repo": {"$match":"maven-release"}}
  ]
}).include("name", "repo", "@version")

以下のような幅広い AQL フィールドクライテリアでのフィルタリングをニーズに応じて行うことができます。

  • created – 過去1年間、特定の日付等の生成日で対象ビルドを絞る
  • promotion.status – SDLC プロモーションパイプラインの特定のステージに移動したビルドのみに絞る(例えば、”release”)
  • promotion.repo – 特定のリポジトリにあるビルドに絞る(例えば、本番環境にリリースされたビルドを保持するリポジトリのみを対象とする)

Xray CVE 検索の使用

12月10日現在、Apache Log4j のセキュリティ問題は、CVE-2021-44228 としてNational Vulnerability Database (NVD) に登録されています。これは、JFrog Xray のようなソフトウェア コンポジション アナリシス (SCA) ツールにより識別され、脆弱性の存在を認識するのに役立ちます。(注: より新しいCVEである CVE-2021-45105 も、2.16.0 アップデート向けに報告されています)。

ほとんどの SCA ツールと異なり、Xray は Artifactory と強く統合しているため、その深い再帰的スキャンによって、Artifactory リポジトリのすべてで脆弱なコンポーネントの直接または推移的依存関係をすべて検出することができます。

Xray がインデックスを更新すると、セキュリティ&コンプライアンス検索バーからリファレンス番号で最新の CVE を検索することができます。

Search the latest CVE

これにより、保存されているパッケージ、ビルド、アーティファクト、リリースバンドル内の CVE が発見された場所のリストが表示されます。

lists of where the CVE was found in the packages, builds, artifacts & release bundles

他のソリューションが必要ですか?
JFrog セキュリティ リサーチ チームの最近のブログにて、Artifactory と Xray を使った別の検知・修復方法をご覧ください。

ビルドに含まれる Log4j の依存関係の修正

どのアプリケーションとビルドに脆弱性があるかが判れば、開発チームは、安全とみなされる最新バージョンの log4j(現在v2.17.0)を使用するようにソースコードを更新し、修正済みの新しいビルドとリリースバンドルを作成することができます。

その後、より安全なアプリケーションリリースを、JFrog Distribution などによってさまざまな稼働ポイントに配信したり、Helm チャートを通じて Kubernetes クラスタに直接デプロイしたりすることができます。

開発を待てない場合は、Artifactory 仮想リポジトリの優先機能を利用して、暫定的に脆弱性を緩和したビルドを作成することができます。詳しい方法は、最近の Log4shell ブログで説明されています。

将来の脆弱性からのリポジトリの保護

一度アプリケーションを修復したら、今後作成するリリースや新たなアプリケーションにおいても、log4jのセキュリティ問題、そして将来的に発見されうる他の脆弱性が含まれないことを保証したいでしょう。

準備として、Xray でスキャンしたいリポジトリ(例えば、「リリース」リポジトリ)が、 Xray でインデックスが有効 と設定されている必要があります。これらのインデックスが作成されたリポジトリのみが Xray でのスキャン対象となります。

Xray のポリシーとルールを使用して、選択したレポジトリのパッケージとビルドで、しきい値として指定した深刻度レベルを超えた脆弱性を自動的に認識します。Minimal Severity を High に設定すると、クリティカルな log4j の脆弱性だけでなく、最近のアップデート向けのクリティカルではない脆弱性も含まれます。また、自動アクションを設定して、Xray ポリシー違反に対応できるように、通知の送信、Webhook のトリガー、または安全でないパッケージのダウンロードのブロックを設定できます。

setting Xray policy rules

これらのポリシーを Xray ウォッチと関連付けたり、主要なリポジトリ、ビルド、またはバンドルと関連付けることができます。必要であれば、インデックスが作成されたすべてのリポジトリにウォッチを割り当てることもできます。ウォッチでは、Xray ウォッチ フィルタを設定して、対象を Apache log4j に限定できます。

Configure watches for selected repositories in Xray SCA tool

ウォッチが実行されると、Xray が検出した違反の調査ができ、脆弱なバージョンのApache log4j のすべての使用が、将来の問題を防ぐために Xray セキュリティ レポートに含まれます。

JFrog 統合機能により、Xray アラートを PagerDuty に送信したり、Xray レポートを Slack に送信したりすることで、インシデント レスポンス チームに速やかに通知することも可能です。

もっと詳しく知りたい方はこちら
Xray の概要は Xray クイックスキャンガイドがあり、使い始めに有効です。

数時間で修復

メディアが報告を続ける中、世界中のインシデント レスポンス チームは、Apache log4j のセキュリティ問題による自社の広範な損害を軽減するために、何日も何週間も費やしてしまうことが予想されます。

しかし、JFrog Platform の 8,000 以上の顧客は、SaaS であれセルフホステッドであれ、わずか数時間で log4j の脆弱性を検出修正し、ソフトウェアのサプライチェーン全体を強化する手段を手に入れることができるのです。Artifactory と Xray が可能にする豊富なバイナリ管理、SBOM、SCAを通じた DevSecOps のベストプラクティスは、多くの人の週末や休日を返上せずにすむよう役立っています。

Xray のスキャンは、18 種類のパッケージ形式に対応しています。Apache log4j が存在する Java ライブラリに加え、JavaScript、PHP、Docker、Go、C++などのリポジトリをスキャンすることが可能です。

Users of the #JFrog Platform have the ready means to find, fix, and fortify their entire software supply chain from the #log4j vulnerability in only hours. Click To Tweet

92 % のアプリがオープンソースを使用している今日では、広く使われているパッケージにクリティカルな脆弱性が発見されるのは今回が最後ではないでしょう。log4j のセキュリティ問題は、Squirrel の脆弱性、2020年の SolarWinds 事件に続く大きな問題です。世界経済フォーラムは、 最大のサイバーセキュリティ課題として、サプライチェーンへの攻撃を挙げています。

ソフトウェア開発企業、つまりすべての企業にとって、このような事件への心配は眠れないほどのものです。しかし、そのような心配は無用です。JFrog Platform を使用しているチームのリーダは、ベッドでぐっすり眠ることができます。

個別の Xray デモで、DevSecOps のビジョンをご覧に入れましょう。

JFrog Platformをまだ使ったことがないという方は簡単に無料ではじめられます