概要

  • Log4Shell は、Java のログコンポーネントを世界的な説明責任のテストに変えた。なぜなら、多くの組織が Apache Log4j が直接存在するのか、製品に組み込まれているのか、アプライアンスにバンドルされているのか、ベンダー管理のサービスに隠れているのかを迅速に判断できなかったからである。
  • CISA の公開ガイダンスと緊急指令22-02は、修復の問題を可視化した。パッチ適用はスローガンではなかった。対象となる連邦民間機関は、影響を受ける資産を特定し、緩和または更新し、状況を報告し、製品やガイダンスが変更されるたびに調査を継続しなければならなかった。
  • 中心的な説明責任の問題は、検証可能な修復である。「パッチを当てた」という公の声明は、在庫の完全性、ネストされた依存関係の発見、補完的コントロール、ベンダーとの調整、悪用の監視、または完了の証拠を証明するものではない。
  • 責任は分散されていた。Apache はプロジェクトを維持し、修正版をリリースした。政府機関と企業は資産の発見を管理した。ベンダーは製品の勧告を管理した。クラウドおよびセキュリティプロバイダーは悪用とブロックを監視した。顧客は、サプライヤーが実際に露出を低減したという証拠を必要としていた。
  • 永続的な教訓は、組織が実行しているものを証明できない場合、ソフトウェアサプライチェーンガバナンスは失敗するということである。Log4Shell は、在庫管理、SBOM、脆弱性管理、およびパッチ後の監視を、コンプライアンスの書類作業ではなく、運用上の必需品にした。

緊急事態はコードの欠陥と同様に在庫管理の失敗だった

Log4Shell の物語は脆弱性から始まるが、説明責任の物語は発見から始まる。Apache のLog4j セキュリティページCVE-2021-44228のエントリは、プロジェクトレベルの事実を説明している:影響を受けるバージョン、修正されたバージョン、関連する脆弱性、緩和の状況。NVD のCVE-2021-44228 レコードは、公開されている脆弱性のメタデータと重大度の枠組みを提供している。これらの情報源は、脆弱性が緊急である理由を確立している。それらは、特定の組織が実行している Log4j のすべてのコピーを見つけたかどうかを確立するものではない。

その区別が危機を定義した。多くの組織は Java アプリケーションがあることを知っていた。内部のどのサービス、ベンダー製品、アプライアンス、開発ツール、クラウドワークロードに Log4j が組み込まれているかを知っている組織は少なかった。コンポーネントは、もはやアクティブな所有者がいないアプリケーションの中に存在する可能性があった。Apache ではなくベンダーの名前で製品にバンドルされている可能性があった。テスト環境、古いリリース、管理コンソール、ログコレクター、サードパーティソフトウェアに存在する可能性があった。チームが明らかなサーバーにパッチを当てても、他の場所に露出した製品が残っている可能性があった。

CISA の最初のApache Log4j 脆弱性ガイダンスアラートは、公的な緊急性を捉えていた。同機関のより広範なApache Log4j Vulnerability Guidance リソースは、運用上の参照情報を収集していた。しかし、より深い貢献は単に別の勧告を公開することではなかった。CISA は会話を「重大な CVE がある」から「作業を示せ」へと変えるのに貢献した。問題は、どのシステムがチェックされたか、どのシステムが脆弱か、どのシステムにパッチが当てられたか、どのシステムに補完的コントロールがあるか、どのシステムがベンダーを待っていたか、となった。

ここで「パッチ」という言葉が小さすぎるものになった。内部で所有するアプリケーションにパッチを当てることは一つの行為である。ベンダーのアプライアンス内に埋め込まれた Log4j を見つけることは別である。修正版がまだ利用できないために緩和策を適用することはさらに別である。悪用のログをチェックすることも別である。ベンダーがガイダンスを改訂した後に再テストすることも別である。古い脆弱なライブラリをビルドから削除することも別である。公衆はこれらの行為を区別できる語彙を必要としていた。

Log4Shell 後の説明責任のある質問は「パッチを当てたか?」ではなかった。それは「管理下のシステムで脆弱なコンポーネントが悪用可能でなくなったことを証明でき、何が不確かなままかを証明できるか?」であった。その質問に答えられる組織は在庫と証拠基盤を持っていた。答えられない組織は、エンジニアが週末中働いたとしてもガバナンスの問題を抱えていた。

緊急指令22-02は対象機関にとって修復を測定可能にした

CISA の緊急指令22-02は、米国連邦民間行政機関に適用された。この範囲は重要である。指令は地球上のすべての民間企業に義務を課すものではなく、責任ある公開記事はそれを暗示すべきではない。その重要性は、それが可視化した修復モデルにある:影響を受ける資産を特定し、緩和し、報告し、情報が変化するにつれてステータスを更新し続けること。

指令の説明責任上の価値は手続き的であった。緊急脆弱性対応が一度の発表で管理できないことを認識していた。対象機関はインターネット向け資産をレビューし、CISA 提供のツールまたは同等の方法を使用し、影響を受けるソフトウェアを更新または緩和し、状況を報告しなければならなかった。指令はまた、製品リストと脆弱性知識が進化することを認識していた。つまり、機関は初日に完了を宣言して立ち去ることはできなかった。

これが証明問題である。機関が影響を受ける資産がないと言った場合、その声明を支える在庫は何か?資産が緩和されたと言った場合、どのコントロールが適用され、どのようにテストされたか?ベンダー製品がまだパッチを待っている場合、どの補完的コントロールが露出を低減したか?後で新しい影響を受ける製品が現れた場合、機関はどのように評価を再訪したか?修復は証拠のループであった。

同じ論理は、指令が法的に民間組織を拘束しない場合でも、連邦範囲外でも適用された。企業、州、大学、病院、クラウドプロバイダー、中小企業はすべて同じ技術的問題に直面した:コンポーネントを見つけ、露出を理解し、修正または緩和し、悪用を監視し、残存リスクを文書化すること。CISA の指令は、規律ある緊急ガバナンスの公的な例を彼らに与えた。

Known Exploited Vulnerabilities Catalogはその点を強化している。脆弱性が悪用されていることが知られている場合、脆弱性管理はもはや理論上のランキング演習ではない。それは運用上の義務となる。カタログはどの組織が悪用されたかを証明しない。それは防御者に、活発な悪用がガバナンスへのインプットであることを伝える。Log4Shell にとって、悪用の文脈は「後でパッチを当てる」という立場をはるかに弱いものにした。

緊急指令はまた、コスト移転問題を明らかにした。機関や企業は、製品が Log4j を組み込んでいるかどうかを開示し、パッチを提供し、緩和策を説明し、勧告を更新するためにベンダーに依存していた。顧客はリスクを所有するが、完全な知識は所有しない可能性があった。ベンダーの勧告が遅れたり曖昧だったりすると、顧客の修復記録は弱まった。この依存関係は、影響を受けるシステムがしばしば必須サービスを支えていたため、公的な説明責任問題となった。

ベンダーは顧客が独立して見ることができない事実を管理していた

Log4Shell はソフトウェアサプライチェーンにおける基本的な非対称性を露呈した。顧客は自社のシステムをスキャンできるが、多くの場合、プロプライエタリ製品や管理されたクラウドサービスの内部を見ることはできない。彼らはベンダーに、製品が影響を受けるか、どのバージョンが脆弱か、パッチが存在するか、緩和策が安全か、悪用が観測されたかを伝えてもらう必要がある。ベンダーの勧告は証拠オブジェクトとなった。

Apache は Log4j 自体のオープンソースプロジェクト記録を管理していた。製品ベンダーはそのコンポーネントが自社のソフトウェア内でどのように現れるかを管理していた。クラウドプロバイダーは管理サービスの姿勢を管理していた。セキュリティ企業はテレメトリと検出ガイダンスを管理していた。顧客は展開、露出、ローカル緩和を管理していた。脆弱性はこれらすべての層を横断した。説明責任には、各層が自らが知っていることについて具体的であることが必要であった。

これがソフトウェア部品表が政策上のフレーズ以上のものになった理由である。CISA のSBOM リソースは、ソフトウェアコンポーネントへの可視性を向上させる方法を説明している。SBOM 単独では脆弱性にパッチを当てない。製品が安全であることを証明しない。しかし、危機が発生したとき、信頼できるコンポーネント在庫は、「Log4j が脆弱である」から「これらの製品、バージョン、サービスが影響を受ける」までの時間を短縮できる。その在庫がなければ、顧客とベンダーはプレッシャーの下で手動で狩りをすることになる。

NIST SP 800-161 Revision 1、Cybersecurity Supply Chain Risk Management Practices for Systems and Organizationsは、ガバナンスの枠組みを提供している。サプライチェーンリスクは調達の書類作業だけではない。それは、セキュリティ成果が購入者の直接の管理外にあるコンポーネントとサプライヤーに依存するという現実である。Log4Shell はその真実の運用版を示した。購入者のインシデント対応時計は、多くの購入者がどのサプライヤーが範囲内かを知る前に始まった。

CISA のSecure by Designガイダンスは、サプライヤーの義務のレンズを追加する。ソフトウェアメーカーは顧客に課す負担を減らすべきである。Log4Shell の間、それはタイムリーな勧告、明確な影響を受けるバージョン行列、安全な緩和手順、そして後に修正が完了したという確認を意味した。待ったり、曖昧にしたり、曖昧な声明を発表したベンダーは、顧客にコストを押し付け、顧客は露出しているかどうかを尋ね続けなければならなかった。

説明責任のあるベンダー対応にはいくつかの特徴があった。影響を受ける製品とバージョンを明記した。「影響なし」と「調査中」を区別した。回避策とそのリスクを特定した。事実が変わったときに勧告を更新した。ベンダーの製品で悪用が観測されたかどうかを説明した。顧客にインストールされたバージョンを確認する方法を提供した。古い勧告を監査用に利用可能にしておいた。これらの特徴は、ベンダーのコミュニケーションを使用可能な修復証拠に変えた。

悪用の監視は修復の一部だった

脆弱なライブラリを修正しても、修正前に脆弱性が悪用されたかどうかには答えない。したがって、Log4Shell 対応には検出とハンティングが必要であった。Microsoft のガイダンス、Guidance for preventing, detecting, and hunting for CVE-2021-44228 exploitationは、防御者がログ、指標、不審な活動にどのようにアプローチするかを示した。Cloudflare のInside the Log4j2 vulnerabilityは、エッジプロバイダーの視点から悪用と緩和の観測を説明した。

これらの情報源は、修復を二次元にするため重要である。一つの次元は露出である:脆弱な Log4j がどこに存在し、到達可能か。もう一つは侵害である:攻撃者がパッチ適用の前、最中、または後に脆弱性を使用したか。既知のすべてのインスタンスにパッチを当てたがログを一度もレビューしなかった組織は、修正前に侵入した攻撃者を見逃す可能性がある。悪用をハントしたが未知の脆弱な製品を露出したままにした組織はリスクにさらされ続ける。

公には、その区別はしばしば失われる。企業は脆弱性を remediated したと言うかもしれない。顧客はそれを「インシデントは発生しなかった」と聞くかもしれない。これらは異なる主張である。 remediation は脆弱性が対処されたことを意味する。調査は証拠が悪用についてレビューされたことを意味する。インシデントクロージャは、組織が何が起こったか、何が起こらなかったか、何が不確かなままかを言うのに十分な事実を持っていることを意味する。Log4Shell はこれらすべてを必要とした。

困難は、悪用の試みが騒がしく広範囲であったことである。攻撃者と研究者はインターネットをスキャンした。セキュリティ製品は試みをブロックした。ログにはプローブ、ペイロード、時には曖昧な文字列が含まれていた。一部の組織には詳細なログがあった;他にはなかった。一部の製品は適切なフィールドをログに記録した;他は証拠を失った。一部のシステムはインターネットに面していた;他には内部からのみ到達可能だった。スキャンの存在は常に侵害を意味するわけではなかった。ログエントリの欠如は常に安全性を証明するわけではなかった。

それが証拠が控えめでなければならなかった理由である。責任ある組織は次のように言える:これらのシステムは脆弱だった、これらはパッチが当てられた、これらのログはこの期間にレビューされた、これらの指標は見つかったか見つからなかった、これらのシステムには十分な履歴ログが不足していた、これらの補完的コントロールが残っている。その声明は「修正しました」よりも整っていないが、より有用である。それは意思決定者に、どこで信頼度が高く、どこで残余の不確実性が残っているかを伝える。

同じ基準がベンダーにも適用されるべきである。製品ベンダーが製品は影響を受けたが悪用は観測されなかったと言う場合、顧客はベンダーがどのように知るのかを尋ねるべきである。製品にテレメトリはあったか?ベンダーは顧客報告を受け取ったか?ログは利用可能だったか?悪用の試みは脆弱な機能に到達する前にブロックされたか?声明は証拠の欠如に基づいていたのか、欠如の証拠に基づいていたのか?このレベルの精度は衒学ではない。それは顧客がさらなる行動が必要かどうかを判断する方法である。

在庫は生きたコントロールとして扱われるべきである

Log4Shell は資産在庫を恥ずかしくさせた。多くの組織は、脆弱性管理データベース、調達記録、クラウド在庫、アプリケーション所有者のスプレッドシートが一致しないことを発見した。彼らはビジネスサービスの名前を知っているかもしれないが、そのライブラリは知らないかもしれない。サーバーを知っているかもしれないが、コンテナ内の Java パッケージは知らないかもしれない。ベンダー製品を知っているかもしれないが、それがバンドルするコンポーネントは知らないかもしれない。本番環境を知っているかもしれないが、古いテスト環境は知らないかもしれない。

NIST SP 800-40 Revision 4、Guide to Enterprise Patch Management Planningは、パッチ管理をプログラムとして扱うため有用である。プログラムには、資産識別、脆弱性認識、優先順位付け、テスト、展開、検証、例外管理が必要である。Log4Shell は、これらのステップが緊急時に遅すぎると何が起こるかを示した。技術的な悪用は速かった;組織マップはしばしば遅かった。

したがって、Log4Shell 後の説明責任のある修復には在庫の改善が含まれるべきである。どのシステムに所有者がいなかったか?どの製品をスキャンできなかったか?どのベンダーが迅速に回答できなかったか?どの内部アプリケーションに古い依存関係があったか?どのクラウドワークロードがセキュリティチームに知られていなかったか?どの補完的コントロールが、組織が何を実行しているかを知らなかったために即興で作られたか?これらの質問は、一つの CVE に限定されないため不快である。それらは構造的な弱点を明らかにする。

在庫は静的なリストではない。開発者が新しいサービスを展開し、ベンダーが製品を更新し、クラウドワークロードがスケールし、コンテナが再構築され、古いシステムが残るにつれて変化する。年に一度正確なリストはゼロデイ対応には耐えられない。コントロールは緊急の質問に答えるのに十分に生きている必要がある:このコンポーネントはどこにあるのか、誰が所有しているのか、何が露出しているのか、どのバージョンが動作しているのか、どのように更新するのか、更新が機能したことをどのように知るのか?

SBOM は役立つ可能性があるが、それが最新で、使用可能で、運用に接続されている場合に限る。調達ファイルにある PDF のコンポーネントリストは、露出したサーバーを見つけるのに役立たない。製品、バージョン、脆弱性フィード、所有者に結びついた機械可読な SBOM は対応を短縮できる。説明責任の基準は実用的であるべきだ:在庫はチームが手動検索だけよりも速く Log4j を見つけるのに役立ったか?そうでなければ、まだ運用可能ではなかった。

公共サービスの継続性の角度は現実的だった

Log4Shell は民間企業のリスクだけに影響を与えたわけではない。政府サービス、公的機関、大学、医療システム、重要インフラの事業者はすべて露出を評価しなければならなかった。ENISA のLog4Shell 脆弱性ノートと英国 NCSC のApache Log4j 脆弱性ガイダンスは、国家のサイバー当局がこの問題をシステム全体として扱ったことを示している。脆弱なコンポーネントが市民が依存するシステムの中に存在する可能性があったため、それは適切だった。

公共サービスの継続性は説明責任の質問を変える。政府機関は、公共ポータル、福利厚生システム、緊急サービス、税務プラットフォーム、医療サービス、本人確認システムが潜在的に影響を受ける場合、修復を内部のサイバーハイジーンとしてのみ扱うことはできない。可用性、完全性、公共の信頼が重要である。サービスを壊す急いだパッチはユーザーに害を及ぼす可能性がある。遅れたパッチはサービスを露出したままにする可能性がある。曖昧な公的声明は信頼を損なう可能性がある。修復には証拠と調整が必要である。

したがって、米国における CISA の役割は技術的なものだけではなかった。それは対象機関に共通の期待と、他の機関への参照ポイントを作るのに役立った。指令、ガイダンス、リソースハブは機関に行動の構造を与えた。それらはまた、議会、監視機関、一般市民に、機関がフォローアップしているかどうかを尋ねる方法を与えた。それはガバナンス機能である。

同じ継続性の問題は、公共依存のある民間サービスにも現れた。クラウドプロバイダー、認証プロバイダー、決済処理業者、マネージドサービスプロバイダー、病院、通信関連プラットフォームはすべて、露出を修正しながらサービスを維持しなければならなかった。顧客は脆弱なコンポーネントが三階層の依存関係の奥に埋もれているかどうかを気にしなかった。彼らはサービスが信頼でき、利用可能であり続けるかどうかを気にした。

Log4Shell はしたがって、脆弱性管理と回復力の間の線を曖昧にした。修復チームは本番環境を壊さずにパッチを当てなければならなかった。セキュリティチームは正当なトラフィックをブロックせずに緩和しなければならなかった。ベンダーはパニックを引き起こさずに勧告を発行しなければならなかった。経営幹部は緊急リソースを割り当てなければならなかった。広報チームは誤った確信を避けなければならなかった。公的機関は管轄を越えてガイダンスを調整しなければならなかった。これは単なるソフトウェア更新ではなかった。それは継続性の演習であった。

残余の未知数と説明責任のある質問

公衆はおそらく Log4Shell の完全なグローバル修復記録を知ることは決してないだろう。どの組織がすべてのインスタンスを迅速に見つけたか、脆弱な製品を露出したままにしたか、悪用されたが発見されなかったか、あるいはベンダーの勧告が害を防ぐには遅すぎたかはわからない。どのくらいの内部専用システムが脆弱であったが攻撃者から到達不能であったかはわからない。古い脆弱なコンポーネントが後まで休眠状態で残っていたかはわからない。

これらの未知数は説明責任を不可能にしない。それらは重要である証拠を特定する。誰がソフトウェア在庫を管理していたか?誰が製品勧告を管理していたか?誰が緊急緩和を管理していたか?誰がログ保持を管理していたか?誰がベンダー調整を管理していたか?誰がシステムが通常運用に戻すのに十分安全であると判断したか?誰が修正がパッケージリストだけでなく実際の実行コンポーネントに適用されたことを検証したか?

答えは分散していた。Apache は Log4j のプロジェクト修正と開示記録を管理していた。CISA はその範囲内で連邦緊急ガイダンスとより広範な公的調整を管理していた。政府機関と企業は自社の在庫、緩和、監視を管理していた。ベンダーは製品固有の勧告とパッチを管理していた。クラウドおよびセキュリティプロバイダーは防御テレメトリと顧客ガイダンスを管理していた。顧客は自社のフォローアップ質問と残余リスクの受け入れを管理していた。

単一のアクターがグローバルリスク全体を閉じることはできなかった。しかし、各アクターは自分が管理する層についてより良い証拠を提供できた。それが Log4Shell 後の永続的な説明責任基準である。「パッチを当てた」と言うだけでは十分ではない。公衆は尋ねるべきである:何を見つけたのか、何を修正したのか、何を緩和したのか、何を監視したのか、何を見逃したのか、そしてどのようにして知っているのか?

緊急から永続的な修復へ

Log4Shell の最良の教訓は、組織が次回より速く反応する必要があるということではない。より良い教訓は、緊急時の速度は日常の準備に依存するということである。グローバルなゼロデイの最中に正確な資産在庫を発明することはできない。契約が証拠義務を無視した後にベンダー協力を創り出すことはできない。ログが保持されていなければ悪用を効果的にハントすることはできない。所有者、バージョン、依存関係が不明であれば修復を検証することはできない。

したがって、永続的な修復は予算とガバナンスを変えるべきである。資産在庫にはコンポーネントの可視性を含めるべきである。調達にはタイムリーな脆弱性開示と製品コンポーネント証拠を要求するべきである。開発チームは依存関係の拡散を減らし、古いライブラリを更新するべきである。運用チームは緊急パッチとロールバック手順をテストするべきである。セキュリティチームは有用なログを保持し、検出コンテンツを維持するべきである。経営幹部は次のシステム脆弱性で評価が最も困難になるシステムを知っているべきである。

ここで証明問題が生産的になる。証明は監査人のためだけではない。それは組織が行動できるかどうかを教える。コンポーネントがどこで実行されているかをチームが証明できれば、より速くパッチを当てられる。ベンダーがどの製品が影響を受けるかを証明できれば、顧客は優先順位を付けられる。ログが定義されたウィンドウで不審な悪用が発生しなかったことを証明できれば、リーダーはより冷静な決定を下せる。残余の不確実性が文書化されていれば、リスク所有者は監視や補完的コントロールを追加するかどうかを決定できる。

Log4Shell はそれがどこにでもあり緊急であったため恐ろしかった。それはまた明確であった。脆弱性対応は証拠の連鎖であることを示した:プロジェクト開示、脆弱性メタデータ、資産在庫、ベンダー勧告、パッチ、緩和策、悪用監視、顧客通知、ガバナンスレビュー。どのリンクを壊しても修復記録は弱まる。

CISA の公的役割はその連鎖を無視しにくくした。Log4Shell を、対象機関に対して構造化された行動と報告を必要とする緊急事態として枠組みづけることで、会話をパッチのスローガンから測定可能な修復へと動かすのに貢献した。それが次のシステム脆弱性が継承すべき基準である。

初期の解説者は抽象概念を運用リスクに変えた

Log4Shell が経営幹部の注意をこれほど速く広めた理由の一つは、実務者が脆弱性を平易な運用上の結果に翻訳したことである。LunaSec の初期の技術解説、Log4Shell: RCE 0-day exploit found in log4jは、多くの読者がなぜ信頼できない入力をログに記録することが影響を受ける設定でリモートコード実行になり得るかを理解するのに役立った。説明責任にとってのポイントは、すべての経営幹部が Java の詳細を理解する必要があるということではない。リーダーがなぜ日常的なコンポーネントが通常のリクエスト処理を深刻な露出に変える可能性があるかを理解する必要があるということである。

その翻訳は、緊急対応が経営陣のサポートに依存するため重要だった。インターネット向けシステムが露出していた場合、セキュリティチームは通常のメンテナンスウィンドウを待つことができなかった。調達チームはベンダーに圧力をかけなければならなかった。運用チームはサービス動作に影響を与える可能性のある緩和策を承認しなければならなかった。広報チームは不確実性の下で状況を説明しなければならなかった。財務チームは残業、ツール、緊急ベンダー関与を支援しなければならなかった。脆弱性がなぜ重要であるかの明確な説明がなければ、修復は通常のプロセスの背後で停滞する可能性があった。

初期の公開解説者はまた、非専門家向けの共有語彙を創り出した。なぜ「直接 Log4j を使用していない」が十分な答えではないかを示した。製品がフレームワークを使用し、それがライブラリを使用し、それが脆弱なバージョンをバンドルする可能性がある。ベンダーがそれをアプライアンス内で使用する可能性がある。内部ツールが何年も前に展開され、忘れられている可能性がある。ログパスがアプリケーション所有者が予期しない方法でユーザー制御の文字列を受け取る可能性がある。その入れ子構造は発見を困難にした。

成熟した組織は、将来のシステム脆弱性のためにその翻訳機能を保存すべきである。影響の大きいコンポーネントの欠陥が現れたとき、最初のブリーフィングはメカニズム、露出パス、影響を受ける資産クラス、公開された悪用活動、利用可能な修正、緩和策、監視、未解決の質問を分離すべきである。リーダーは解析できない技術的詳細と統治できない曖昧な緊急性の間で選択を強制されるべきではない。Log4Shell は、明確な説明それ自体がコントロールであることを示した。

例外はリスク記録の一部だった

すべての大規模な修復の波は例外を生み出す。一部のシステムはベンダーが修正をリリースしていないためすぐにパッチを当てられない。一部のシステムは脆弱でテストが必要である。一部はもはやサポートされていない。一部には利用できない運用所有者がいる。一部は補完的コントロールが一時的に許容できるほど十分に隔離されている。一部はミッションクリティカルであり、公共の害なしに停止できない。例外は自動的に失敗ではない。管理されていない例外が失敗である。

したがって、Log4Shell の修復記録には例外ガバナンスが含まれるべきである。どの影響を受けるシステムが目標日までにパッチを当てられなかったか?なぜか?どの補完的コントロールが適用されたか?誰が遅延を承認したか?補完的コントロールが機能したことを示す証拠は何か?最終的な修復のためにどの日付が割り当てられたか?日付が遅れた場合に誰がエスカレーションを受けたか?「残りのシステムは修復中」という声明は、所有者と期限のある例外台帳よりも弱い。

これは公共サービス環境にとって特に重要である。市民アクセスを支えるシステムは無謀にパッチを当てるには重要すぎるが、露出したままにしておくには重要すぎる。ガバナンスの答えは英雄的な即興ではない。それは、悪用活動、露出、利用可能な緩和策、サービス継続性、復旧計画を考慮した文書化されたリスク決定である。取締役会、機関長、またはエグゼクティブリスクオーナーは、どの例外が残っているか、そしてその理由を見ることができるべきである。

例外はまた、ベンダー依存関係を明らかにする。組織がサプライヤーがサポートされた更新を発行していないためにパッチを当てられない場合、その事実は調達の記憶に属する。次の契約は、より迅速な勧告、より明確なコンポーネント開示、緊急サポートを要求するべきである。繰り返し顧客が重要な脆弱性を閉じることを不可能にするサプライヤーは単に遅いわけではない。それは、製品を自ら修復できない買い手にセキュリティリスクを移しているのである。

最良の例外記録は一時的である。時間とともに縮小すべきであり、受け入れられた露出の恒久的なリストになるべきではない。Log4Shell 後も何ヶ月も影響を受けるシステムを抱えている組織は、その理由を説明する必要がある:サポートされていないソフトウェア、所有者の不在、ビジネス上の抵抗、ベンダーの失敗、または真の技術的制約。それぞれの理由は異なる修復を指し示す。その説明がなければ、残余リスクは正常化される。

事実が変わり続けたため再チェックが重要だった

Log4Shell 対応は一日の演習ではなかった。新しい影響を受ける製品が現れた。新しいベンダー勧告が公開された。追加の Log4j 脆弱性と修正版が公の記録に入った。検出コンテンツが進化した。スキャナーが改善された。一度チェックして止めた組織は後の事実を見逃すリスクがあった。これが CISA のリソースハブと指令モデルが重要だった理由である:修復プロセスは証拠が変化するにつれて生き続けなければならなかった。

再チェックは正式であるべきである。チームはいつ最後に影響を受ける資産を検索したか、どの脆弱性インテリジェンスソースを使用したか、どの製品勧告をレビューしたか、どのスキャン結果が確認されたか、パッチ後にどのシステムを再テストしたかを知っているべきである。新しいベンダー勧告が組織が使用する製品を挙げた場合、組織は以前の「全問題なし」の記憶に頼るべきではない。アイテムを再開するべきである。

同じことがビルドとデプロイプロセスにも適用される。チームは本番環境にパッチを当てるかもしれないが、ソースリポジトリやコンテナ定義に古い依存関係を残すかもしれない。次のビルドが脆弱なコンポーネントを再導入する可能性がある。チームはあるサービスのブランチにパッチを当てるが、別のブランチを残すかもしれない。開発者が古いライブラリを新しいプロジェクトにコピーするかもしれない。修復証拠には、緊急クリーンアップだけでなく再導入の防止も含まれなければならない。

ここで脆弱性管理はセキュア開発と接続される。依存関係スキャン、バージョン固定、アーティファクト在庫、承認されたベースイメージ、リリースレビューは魅力的なコントロールではない。それらは同じ脆弱性が公的緊急後に再浮上するのを防ぐ。再導入を防げない組織はコントロール環境を修復していない。最初の波を生き延びただけである。

再チェックはまた顧客の信頼にとって重要である。事実が変化するにつれて勧告を更新するベンダーは、その瞬間にはあまり確信がないように見えるかもしれないが、固定された声明を公表して決して再訪しないベンダーよりも時間とともにより信頼できる。顧客はシステム脆弱性が進化することを知っている。彼らはベンダーがいつ事実が変わり、それが何を意味するかを伝えることを必要としている。最初の勧告の後の沈黙は、調査が続いていてもクロージャとして誤解される可能性がある。

証拠は次の監査のために保持されるべきである

Log4Shell 中に作成された修復証拠は危機の後に消えるべきではない。ログ、スキャン結果、ベンダー勧告、パッチチケット、例外承認、顧客通知、経営幹部ブリーフィングは数ヶ月後に有用である。それらは監査人が組織が合理的に対応したかどうかを評価するのに役立つ。それらはインシデント対応担当者が後の不審な活動が脆弱性ウィンドウにさかのぼるかどうかを理解するのに役立つ。それらは調達チームが弱いサプライヤーを特定するのに役立つ。それらはエンジニアがコンポーネント在庫を改善するのに役立つ。

保持とはすべてを永遠にため込むことと同じではない。組織は決定を再構築するために必要な証拠を保存すべきである。どのシステムが影響を受けたか?どのような措置が取られたか?いつ取られたか?誰が例外を承認したか?どのような監視が実行されたか?どのような顧客または規制当局との通信が行われたか?何が不確かなままだったか?その証拠は、スタッフの離職や緊急ツールの散乱を生き残る方法で保存されるべきである。

長期監査はまた、期待される能力と実際の能力を比較すべきである。脆弱性データベースは Log4j がどこにあるかを知っていたか?スキャンはアプリケーション所有者が手動で見つけたものを見つけたか?ベンダー記録は実際のデプロイにマッピングされたか?クラウド在庫はすべての実行中のワークロードを含んでいたか?ログは悪用レビューをサポートしたか?通信チャネルは適切なチームに到達したか?それぞれのギャップはコントロール改善項目になるべきである。

これにより Log4Shell は孤立した危機から次の危機へのリハーサルに変わる。次のシステム脆弱性は異なる言語、パッケージマネージャー、クラウドサービス、認証ライブラリ、ハードウェアコンポーネントに影響を与える可能性がある。具体的なパッチは異なる。証拠の連鎖は見慣れたものになるだろう:露出の特定、サプライヤーの調整、修正または緩和、悪用の監視、例外の管理、範囲の伝達、クロージャの証明。Log4Shell の証拠を保持しレビューした組織はより良く準備されているはずである。

顧客の質問は契約言語になるべきである

顧客は Log4Shell 中にベンダーに緊急の質問をした:影響を受けているか?どの製品か?どのバージョンか?何をすべきか?パッチはいつ届くか?悪用を確認したか?事実が変わったら通知するか?これらの質問は緊急後に消えるべきではない。それらは契約と保証の要件になるべきである。

より強い契約は、サプライヤーにコンポーネント在庫を維持し、定義された期間内に脆弱性勧告を提供し、影響を受けるバージョン行列を公開し、緊急緩和をサポートし、関連するログを保持し、顧客の証拠要求に協力し、事実が変化したときに通知を更新することを要求するだろう。また、サプライヤーが SBOM を提供できるかどうか、SBOM が最新かどうか、顧客がどのように消費できるかを明確にするだろう。目標は書類作業ではない。目標は次のシステム欠陥が現れたときにより速い修復である。

サプライヤー保証はまた、ポリシーだけでなく実践をテストすべきである。ベンダーは脆弱性管理を持っていると主張するかもしれないが、顧客はベンダーが Log4j 露出をどれだけ迅速に特定したか、勧告がどのように発行されたか、例外がどのように追跡されたか、その後何が変わったかを尋ねるべきである。これらの質問に答えられないベンダーは、コントロールの成熟度ではなく努力によってイベントを生き延びた可能性がある。

同じ教訓が内部にも適用される。ソフトウェアを購入する事業部門は、緊急時にセキュリティチームを盲目にする契約に署名すべきではない。調達はどのシステムが重要か、どのベンダーが必須機能を保持しているか、どの契約に証拠義務が含まれているかを知っているべきである。法務は緊急協力を必須にする言語をサポートすべきである。経営幹部は、サプライヤーが危機の間に基本的なコンポーネントの質問に答えられない場合、安価なソフトウェアが高くつく可能性があることを理解すべきである。

これが Log4Shell からの説明責任の弧である:広く使用されているコンポーネントの脆弱性が、弱い在庫、弱いサプライヤー証拠、弱い例外ガバナンスを明らかにした。修復は修正版だけではない。それは、時間が短いときに誰がどの事実を生成しなければならないかについてのより良い合意である。

証明の基準は人間的であるが確固たるべきである

すべての組織が2021年12月にすべての影響を受けるコンポーネントを即座に見つけられると仮定するのは不公平だろう。脆弱性は深刻で、コンポーネントは広く普及し、公開情報は急速に進化した。多くの防御者は極度のプレッシャーの下で働いた。説明責任はその現実を認識すべきである。完全な全知を要求すべきではない。

しかし、人間的な説明責任は甘い説明責任ではない。それは、ギャップが見えた後に組織が改善したかどうかを尋ねる。不確実性を隠すのではなく文書化したか?露出したシステムを優先したか?最初の波の後も検索を続けたか?顧客と正直にコミュニケーションしたか?その後、在庫、ベンダー、ロギングの弱点を修復したか?次の緊急事態を容易にしたか?

この基準は、時間をかけたコントロールに焦点を当てるため公平である。小規模組織は初日に完全なコンポーネント在庫を持っていなかったかもしれない。それでもより良いものを作成できる。ベンダーはパッチをテストするのに時間が必要だったかもしれない。それでも中間的な緩和策と正直なステータスを公開できる。公的機関はレガシーシステムを持っていたかもしれない。それでも例外を追跡し、リスクを報告できる。尺度はすべてのアクターが完璧だったかどうかではない。それは、各アクターが緊急の発見を持続可能な改善に変えたかどうかである。

Log4Shell はその理由でリスク記録に残るに値する。それは、システム脆弱性の後の最も危険なフレーズが「調査中」ではないことを思い出させる。そのフレーズは正直であり得る。危険なフレーズは「パッチを当てた」であり、誰も何が見つかったか、何が見逃されたか、何が監視されたか、そしてクロージャを支える証拠を示せない場合である。

次のシステム欠陥は異なる名前で到着する。それは、アイデンティティライブラリ、コンテナイメージ、クラウドコントロール、または戦略的に見えるにはあまりに普通のパッケージを含むかもしれない。説明責任のある組織は、コンポーネント、所有者、サプライヤー、ログ、例外、証拠義務をすでに知っているため迅速に答えられる組織である。それが CISA の Log4Shell 記録が指し示す本当の修復であり、回復力のために持ち越す価値のある尺度である。