要約
- 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 脆弱性ガイダンスリソースは、運用上の参考資料を収集した。しかし、より深い貢献は、単に別のアドバイザリを公開することではなかった。CISA は、会話を「重大な CVE がある」から「作業を示せ」に変えるのに貢献した。どのシステムがチェックされ、どのシステムが脆弱で、どのシステムにパッチが当てられ、どのシステムに補償的コントロールがあり、どのシステムがベンダー待ちなのか、という点が問題となった。
ここで「パッチ」という言葉が小さすぎたのだ。内部管理のアプリケーションにパッチを当てることは一つの行為である。ベンダーアプライアンスに組み込まれた Log4j を見つけることは別の行為である。修正バージョンがまだ利用できないために緩和策を適用することも別の行為である。悪用の痕跡がないかログをチェックすることも別の行為である。ベンダーがガイダンスを改訂した後に再テストすることも別の行為である。ビルドから古い脆弱なライブラリを削除することも別の行為である。一般の人々は、これらの行為を区別できる語彙を必要としていた。
Log4Shell の後の説明責任を問う問いは、「パッチを当てましたか?」ではない。「制御下にあるシステムで脆弱なコンポーネントがもはや悪用可能ではなく、何が不確実なままかを証明できますか?」である。その問いに答えられる組織は、インベントリと証拠基盤を持っている。答えられない組織は、エンジニアが週末に作業したとしても、ガバナンスの問題を抱えている。
緊急指令 22-02 は対象機関にとって修復を測定可能にした
CISA の緊急指令 22-02は、米国連邦文民行政府機関に適用された。この範囲は重要である。この指令は地球上のすべての民間企業に義務を課したわけではなく、責任ある公の記事はそのことを示唆すべきではない。その重要性は、可視化した修復モデルにある。影響を受けるアセットを特定し、緩和し、報告し、情報が変わるたびにステータスを更新し続けることである。
この指令の説明責任上の価値は手続き的なものだった。緊急脆弱性対応は一度の発表で管理できないことを認識したものだ。対象機関は、インターネットに面したアセットをレビューし、CISA 提供のツールまたは同等の方法を使用し、影響を受けるソフトウェアを更新または緩和し、ステータスを報告しなければならなかった。また、この指令は、製品リストと脆弱性に関する知識が進化することを認識していた。つまり、機関は初日に解決を宣言して立ち去ることはできなかったのである。
これが証明の問題である。ある機関が影響を受けるアセットはないと言った場合、その声明を裏付けるインベントリは何か?アセットが緩和されたと言った場合、どのようなコントロールが適用され、どのようにテストされたのか?ベンダー製品がまだパッチを待っている場合、どのような補償的コントロールが露出を低減したのか?後日、新たな影響を受ける製品が出現した場合、その機関はどう評価を見直したのか?修復は証拠のループだった。
同じ論理は、指令が民間組織を法的に拘束しない場合でも、連邦政府の範囲外にも当てはまった。企業、州、大学、病院、クラウドプロバイダー、中小企業のすべてが同じ技術的問題に直面した。つまり、コンポーネントを見つけ、露出を理解し、修正または緩和し、悪用を監視し、残存リスクを文書化することである。CISA の指令は、規律ある緊急ガバナンスの公的な事例を提供した。
既知の悪用脆弱性カタログはその点を補強する。脆弱性が悪用されていることが知られている場合、脆弱性管理はもはや理論的なランク付けの演習ではない。それは運用上の義務となる。このカタログは、どの組織が悪用されたかを証明するものではない。活発な悪用がガバナンスのインプットであることを防御者に伝える。Log4Shell の場合、悪用の文脈によって「後でパッチを当てる」という立場ははるかに弱いものになった。
緊急指令はまた、コスト移転の問題を明らかにする。政府機関や企業は、製品が Log4j を組み込んでいるかどうかを開示し、パッチを提供し、緩和策を説明し、アドバイザリを更新するベンダーに依存していた。顧客はリスクを所有できても、完全な知識を所有できない。ベンダーのアドバイザリが遅れたり曖昧だったりした場合、顧客の修復記録はより弱くなる。この依存関係は、影響を受けるシステムがしばしば不可欠なサービスを支えていたため、公的な説明責任の問題となった。
ベンダーは顧客が独自に見ることのできない事実を支配していた
Log4Shell はソフトウェアサプライチェーンにおける基本的な非対称性を露呈した。顧客は自身のシステムをスキャンできるが、プロプライエタリ製品やマネージドクラウドサービスの内部を見ることはしばしばできない。製品が影響を受けるかどうか、どのバージョンが脆弱か、パッチが存在するか、緩和策が安全か、悪用が観測されたかどうかをベンダーに伝えてもらう必要がある。ベンダーのアドバイザリは証拠オブジェクトになった。
Apache は Log4j 自体のオープンソースプロジェクトの記録を管理していた。製品ベンダーは、そのコンポーネントが自社のソフトウェア内にどのように現れるかを管理していた。クラウドプロバイダーはマネージドサービスの姿勢を管理していた。セキュリティ企業はテレメトリと検出ガイダンスを管理していた。顧客は展開、露出、およびローカルな緩和を管理していた。この脆弱性はこれらすべての層を行き来した。説明責任には、各層が自らの知る内容を具体的に示すことが求められた。
これが、ソフトウェア部品表(SBOM)が単なる政策用語以上のものになった理由である。CISA のSBOM リソースは、ソフトウェアコンポーネントの可視性を向上させる方法を説明している。SBOM 単独では脆弱性にパッチを当てることはできないし、製品が安全であることを証明するものでもない。しかし、危機が発生したとき、信頼できるコンポーネントインベントリがあれば、「Log4j は脆弱である」から「これらの製品、バージョン、サービスが影響を受ける」までの時間を短縮できる。そのインベントリがなければ、顧客とベンダーはプレッシャーの下で手作業で探し回る。
NIST SP 800-161 Revision 1 のサイバーセキュリティサプライチェーンリスク管理の実践は、ガバナンスの枠組みを提供する。サプライチェーンリスクは、調達の書類作業だけではない。それは、セキュリティの結果が、購入者の直接の制御外にあるコンポーネントやサプライヤーに依存するという現実である。Log4Shell はその真理の運用上のバージョンを示した。購入者のインシデントレスポンスの時計は、多くの購入者がどのサプライヤーが対象範囲内かを知る前に動き始めた。
CISA のSecure by Designガイダンスは、サプライヤーの義務というレンズを追加する。ソフトウェアメーカーは、顧客にかける負担を軽減すべきである。Log4Shell の間、それはタイムリーなアドバイザリ、明確な影響バージョンマトリックス、安全な緩和策の指示、そして修正が完全であることの後日の確認を意味した。待機したり、煮え切らなかったり、曖昧な声明を発表したベンダーは、露出しているかどうかを問い合わせ続けなければならない顧客にコストを転嫁した。
説明責任を果たすベンダーの対応にはいくつかの特徴があった。影響を受ける製品とバージョンを明示した。「影響を受けていない」と「調査中」を区別した。回避策とそのリスクを特定した。事実が変化したときにアドバイザリを更新した。自社製品で悪用が観測されたかどうかを説明した。インストールされたバージョンを検証する方法を顧客に提供した。監査のために古いアドバイザリを利用可能にしておいた。これらの特徴は、ベンダーのコミュニケーションを利用可能な修復の証拠に変えた。
悪用の監視は修復の一部だった
脆弱なライブラリを修正しても、その修正前に脆弱性が悪用されたかどうかは答えられない。したがって、Log4Shell への対応には検出とハンティングが必要だった。Microsoft のガイダンスCVE-2021-44228 の悪用防止、検出、ハンティングに関するガイダンスは、防御者がログ、インジケーター、不審なアクティビティにどのようにアプローチしたかを示した。Cloudflare のLog4j2 脆弱性の内部は、エッジプロバイダーの視点から悪用と緩和の観測を説明した。
これらの情報源が重要なのは、修復を二次元にするからだ。一方は露出である。脆弱な Log4j がどこに存在し、到達可能かどうか。もう一方は侵害である。攻撃者がパッチ適用前、適用中、適用後に脆弱性を悪用したかどうか。既知のすべてのインスタンスにパッチを当てたが、ログを一度もレビューしなかった組織は、修正前に入った攻撃者を見逃すかもしれない。悪用をハンティングしたが、未知の脆弱な製品を露出したままにした組織は、依然としてリスクにさらされている。
公的には、この区別は失われがちだ。ある企業は脆弱性を修復したと言うかもしれない。顧客はそれを「インシデントは発生しなかった」と聞くかもしれない。それらは異なる主張だ。修復とは脆弱性に対処したことを意味する。調査とは悪用の証拠をレビューしたことを意味する。インシデントの完了とは、組織が何が起き、何が起きず、何が不確実なままかを言うのに十分な事実を持っていることを意味する。Log4Shell にはその3つすべてが必要だった。
困難だったのは、悪用の試みが騒々しく広範だったことだ。攻撃者と研究者がインターネットをスキャンした。セキュリティ製品は試みをブロックした。ログにはプローブ、ペイロード、時には曖昧な文字列が含まれていた。詳細なログを持っている組織もあれば、持っていない組織もあった。正しいフィールドをログに記録する製品もあれば、証拠を失う製品もあった。インターネットに面しているシステムもあれば、内部からのみ到達可能なシステムもあった。スキャンの存在が常に侵害を意味するとは限らなかった。ログエントリの不在が常に安全性を証明するとは限らなかった。
だからこそ、証明は控えめでなければならなかった。責任ある組織は次のように言える。これらのシステムは脆弱であり、これらはパッチが当てられ、これらはこの期間にログがレビューされ、これらのインジケーターが見つかったか見つからなかったか、これらのシステムには十分な履歴ログがなく、これらの補償的コントロールが残っている。この声明は「修正しました」より整理されていないが、より有用だ。これは、どこに自信があり、どこに残留する不確実性があるかを意思決定者に伝える。
同じ基準がベンダーにも適用されるべきだ。製品ベンダーがある製品は影響を受けたが悪用は観測されなかったと言う場合、顧客はベンダーがどうやってそれを知ったのかを尋ねるべきだ。製品にテレメトリはあったか?ベンダーは顧客の報告を受けたか?ログは利用可能だったか?悪用の試みは脆弱な機能に到達する前にブロックされたか?その声明は証拠の不在に基づくのか、不在の証拠に基づくのか?このレベルの精密さは衒学的ではない。それは顧客がさらなる行動が必要かどうかを判断する方法である。
タイポグラフィに関する注釈
タイポグラフィは、書かれた言語を読みやすく、判読しやすく、視覚的に魅力的にするために活字を配置する芸術と技法である。これには書体、ポイントサイズ、行長、行間、文字間隔の選択が含まれる。
- タイポグラフィは、15世紀にヨハネス・グーテンベルクが活版印刷を発明したことに始まる。
- 重要な要素には、フォントの選択、カーニング、トラッキング、リーディングがある。
- 優れたタイポグラフィは可読性を高め、デザインにおけるムードやトーンを伝達する。
インベントリは生きた管理策として扱われるべきである
Log4Shell はアセットインベントリに恥をかかせた。多くの組織は、脆弱性管理データベース、調達記録、クラウドインベントリ、アプリケーション所有者のスプレッドシートが一致していないことを発見した。ビジネスサービスの名前は知っていても、そのライブラリは知らないかもしれない。サーバーは知っていても、コンテナ内の Java パッケージは知らないかもしれない。ベンダー製品は知っていても、それがバンドルするコンポーネントは知らないかもしれない。本番環境は知っていても、古いテスト環境は知らないかもしれない。
NIST SP 800-40 Revision 4 のエンタープライズパッチ管理計画のガイドは、パッチ管理を緊急対応ではなくプログラムとして扱っているため有用である。プログラムには、アセットの識別、脆弱性の認識、優先順位付け、テスト、展開、検証、例外管理が必要である。Log4Shell は、これらのステップが緊急時には遅すぎる場合に何が起こるかを示した。技術的なエクスプロイトは速かったが、組織のマップはしばしば遅かった。
したがって、Log4Shell 後の説明責任のある修復には、インベントリの改善が含まれるべきである。どのシステムに所有者がいなかったか?どの製品をスキャンできなかったか?どのベンダーが迅速に回答できなかったか?どの内部アプリケーションに古い依存関係があったか?どのクラウドワークロードがセキュリティチームに知られていなかったか?どの補償的コントロールが、組織が自らの実行環境を知らなかったために即興で行われたか?これらの質問は不快である。なぜなら、それらは1つの CVE に限定されないからだ。構造的な弱点を明らかにする。
インベントリは静的なリストではない。開発者が新しいサービスを展開し、ベンダーが製品を更新し、クラウドワークロードがスケールし、コンテナが再構築され、古いシステムが残るにつれて変化する。年に一度正確なリストは、ゼロデイ対応を生き残れない。この管理策は、緊急の質問に答えるのに十分なほど生きている必要がある。このコンポーネントはどこにあるか、誰が所有しているか、何が露出しているか、どのバージョンが実行されているか、どうやって更新するか、そして更新が機能したことをどうやって知るか。
SBOM は役に立つが、それが最新で、使用可能で、運用に接続されている場合に限る。調達ファイルに眠っている PDF のコンポーネントリストは、露出したサーバーを見つけることはない。製品、バージョン、脆弱性フィード、および所有者に結びついた機械可読な SBOM があれば、対応を短縮できる。説明責任の基準は実用的であるべきだ。そのインベントリは、チームが手動での検索だけよりも速く Log4j を見つけるのに役立ったか?もしそうでなければ、まだ運用可能ではなかった。
公共サービス継続の側面は現実的だった
Log4Shell は、民間企業のリスクよりもはるかに多くに影響を与えた。政府サービス、公的機関、大学、医療システム、重要インフラ事業者はすべて、露出を評価しなければならなかった。ENISA のLog4Shell 脆弱性ノートと英国 NCSC のApache Log4j 脆弱性ガイダンスは、国家のサイバー当局がこの問題をシステム的なものとして扱ったことを示している。それは適切だった。なぜなら、脆弱なコンポーネントは市民が依存するシステムの内部に存在し得たからだ。
公共サービスの継続は、説明責任の問いを変える。政府機関は、公共ポータル、給付システム、緊急サービス、税務プラットフォーム、医療サービス、または本人確認システムが潜在的に影響を受ける可能性がある場合、修復を内部のサイバー衛生としてのみ扱うことはできない。可用性、完全性、および公共の信頼が重要である。サービスを壊す急なパッチはユーザーに害を及ぼす可能性がある。遅れたパッチはサービスを露出したままにする可能性がある。曖昧な公的声明は信頼を損なう可能性がある。修復には証拠と調整が必要である。
したがって、米国における CISA の役割は技術的なものだけではなかった。対象機関に対して共通の期待と、他者にとっての参照点を作り出すのに貢献した。指令、ガイダンス、リソースハブは、機関に行動のための構造を与えた。また、議会、監督機関、および一般市民が、機関がやり遂げているかどうかを問う方法を提供した。それはガバナンスの機能である。
同じ継続性の問題が、公共の依存を持つ民間サービスにも現れた。クラウドプロバイダー、認証プロバイダー、決済処理業者、マネージドサービスプロバイダー、病院、通信関連プラットフォームはすべて、露出を修正しながらサービスを維持しなければならなかった。顧客は、脆弱なコンポーネントが3つの依存関係の深みに埋もれているかどうかを気にしなかった。サービスが信頼でき利用可能かどうかを気にした。
Log4Shell はこのように、脆弱性管理とレジリエンスの境界を曖昧にした。修復チームは本番環境を壊さずにパッチを当てなければならなかった。セキュリティチームは正当なトラフィックをブロックせずに緩和しなければならなかった。ベンダーはパニックを引き起こさずにアドバイザリを発行しなければならなかった。経営陣は緊急リソースを割り当てなければならなかった。コミュニケーションチームは誤った確実性を避けなければならなかった。公的機関は管轄区域を越えてガイダンスを調整しなければならなかった。これは単なるソフトウェアの更新ではなかった。それは継続性の演習だった。
残余の未知数と説明責任の問い
おそらく一般には、Log4Shell の完全なグローバル修復記録が知られることは決してないだろう。どの組織がすべてのインスタンスを迅速に見つけ、どの組織が脆弱な製品を露出したままにし、どの組織が悪用されたが決して発見されず、どのベンダーアドバイザリが被害を防ぐには遅すぎたかは分からない。攻撃者から到達不可能だった内部システムのみがどれだけ脆弱だったかは分からない。後の時点まで休眠状態にあった古い脆弱なコンポーネントがどれだけあったかは分からない。
これらの未知数は、説明責任を不可能にするわけではない。それらは重要な証拠を特定する。誰がソフトウェアインベントリを管理していたか?誰が製品アドバイザリを管理していたか?誰が緊急緩和を管理していたか?誰がログの保持を管理していたか?誰がベンダーとの調整を管理していたか?誰がシステムが通常運用に戻るのに十分安全だと判断したか?誰が修正が実際の実行中のコンポーネントに適用され、単にパッケージリストに適用されていないことを検証したか?
答えは分散されていた。Apache は Log4j のプロジェクト修正と開示記録を管理していた。CISA はその範囲内での連邦緊急ガイダンスとより広範な公共の調整を管理していた。政府機関と企業は、自身のインベントリ、緩和、監視を管理していた。ベンダーは製品固有のアドバイザリとパッチを管理していた。クラウド事業者とセキュリティプロバイダーは、防御テレメトリと顧客ガイダンスを管理していた。顧客は自身の追跡質問と残余リスクの受け入れを管理していた。
単一のアクターが世界的なリスク全体を閉じることはできなかった。しかし、各アクターは自身が管理する層に対してより良い証拠を提供することができた。それが Log4Shell 後の永続的な説明責任の基準である。「パッチを当てた」と言うだけでは不十分だ。公衆は問うべきだ:何を見つけ、何を修正し、何を緩和し、何を監視し、何を見逃し、どうやってそれを知っているのか?
緊急対応から永続的な修復へ
Log4Shell の最良の教訓は、組織が次回はより速く反応する必要があるということではない(それもあるが)。より良い教訓は、緊急時のスピードは日常の準備に依存するということである。世界的なゼロデイの最中に正確なアセットインベントリを発明することはできない。証拠提供義務を無視した契約の後でベンダー協力を生み出すことはできない。ログが一度も保持されていなければ、効果的に悪用をハンティングすることはできない。所有者、バージョン、依存関係が不明であれば、修復を検証することはできない。
したがって、永続的な修復は予算とガバナンスを変えるべきである。アセットインベントリにはコンポーネントの可視性が含まれるべきである。調達には、タイムリーな脆弱性開示と製品コンポーネントの証拠が要求されるべきである。開発チームは依存関係の乱立を減らし、古いライブラリを更新すべきである。運用チームは緊急パッチとロールバック手順をテストすべきである。セキュリティチームは有用なログを保持し、検出コンテンツを維持すべきである。経営陣は、次のシステム的な脆弱性の際に評価が最も困難になるシステムがどれかを知っておくべきである。
ここで証明問題が生産的になる。証明は監査人のためだけのものではない。それは組織が行動できるかどうかを伝える。チームがコンポーネントがどこで実行されているかを証明できれば、より速くパッチを当てられる。ベンダーがどの製品が影響を受けるかを証明できれば、顧客は優先順位を付けられる。ログが定義されたウィンドウ内で不審な悪用が発生しなかったことを証明できれば、リーダーはより冷静な決定を下せる。残留する不確実性が文書化されていれば、リスク所有者は監視や補償的コントロールを追加するかどうかを決定できる。
Log4Shell は、それが至るところにあり緊急だったため恐ろしかった。また明確にするものでもあった。これは、脆弱性対応が証拠の連鎖であることを示した。プロジェクトの開示、脆弱性メタデータ、アセットインベントリ、ベンダーアドバイザリ、パッチ、緩和策、悪用監視、顧客通知、ガバナンスレビューである。いずれかのリンクを壊せば、修復記録は弱まる。
CISA の公的な役割は、その連鎖を無視しにくくした。Log4Shell を、対象機関に対する構造化された行動と報告を要求する緊急事態と位置付けることで、会話をパッチのスローガンから測定可能な修復へと移行させるのに貢献した。それが、次のシステム的な脆弱性が継承すべき基準である。
初期の解説者は抽象概念を運用リスクに変えた
Log4Shell が幹部の注目を集めてあれほど急速に広まった理由の一つは、実務家が脆弱性を平易な運用上の結果に翻訳したことである。LunaSec の初期の技術解説Log4Shell: log4j で発見された RCE 0-day エクスプロイトは、多くの読者が、信頼できない入力をログに記録することが、影響を受ける構成でリモートコード実行になり得る理由を理解するのに役立った。説明責任の観点では、すべての幹部が Java の詳細をすべて理解する必要はない。リーダーは、日常的なコンポーネントが通常のリクエスト処理を深刻な露出に変え得る理由を把握する必要がある。
その翻訳が重要だったのは、緊急対応が経営陣のサポートに依存するからである。インターネットに面したシステムが露出している場合、セキュリティチームは通常のメンテナンスウィンドウを待てなかった。調達チームはベンダーにプレッシャーをかけなければならなかった。運用チームは、サービスの挙動に影響する可能性のある緩和策を承認しなければならなかった。コミュニケーションチームは不確実性の下でステータスを説明しなければならなかった。財務チームは、残業、ツール、緊急ベンダーとの関与をサポートしなければならなかった。なぜ脆弱性が重要なのかについての明確な説明がなければ、修復は通常のプロセスの背後で停滞し得た。
初期の公開解説書はまた、専門家でない人々向けの共通語彙を作り出した。彼らは、「うちは Log4j を直接使っていない」が十分な答えではない理由を示した。ある製品はフレームワークを使用し、それがライブラリを使用し、それが脆弱なバージョンをバンドルしているかもしれない。ベンダーがアプライアンス内部でそれを使っているかもしれない。内部ツールが何年も前に展開され忘れ去られていたかもしれない。ログ記録経路が、アプリケーション所有者が予期しない方法でユーザー制御文字列を受け取るかもしれない。そのネストされた現実が発見を困難にした。
成熟した組織は、将来のシステム的な脆弱性に備えて、その翻訳機能を保持すべきである。影響の大きいコンポーネントの欠陥が現れたとき、最初のブリーフィングで、メカニズム、露出経路、影響を受けるアセットクラス、公開エクスプロイト活動、利用可能な修正、緩和策、監視、未解決の問題を分けるべきである。リーダーは、解析できない技術的詳細と、統治できない漠然とした緊急性の間で選択を強いられるべきではない。Log4Shell は、明確な説明それ自体が管理策であることを示した。
例外はリスク記録の一部だった
あらゆる大規模な修復の波は例外を生み出す。ベンダーがまだ修正をリリースしていないために、すぐにパッチを当てられないシステムもある。壊れやすくテストが必要なシステムもある。もはやサポートされていないシステムもある。運用所有者が不在のシステムもある。一時的に補償的コントロールが受け入れられるほど隔離されているシステムもある。公共の害を与えずに停止できないミッションクリティカルなシステムもある。例外は自動的に失敗なのではない。管理されていない例外が失敗なのだ。
したがって、Log4Shell の修復記録には例外ガバナンスが含まれるべきである。目標日までにパッチを当てられなかった影響を受けるシステムはどれか?なぜか?どのような補償的コントロールが適用されたか?誰が遅延を承認したか?補償的コントロールが機能したことを示す証拠は何か?最終的な修復の期日はいつ割り当てられたか?期日がずれた場合、誰がエスカレーションを受けたか?「残りのシステムは現在修復中」という声明は、所有者と期限付きの例外登録簿よりも弱い。
これは公共サービス環境にとって特に重要である。市民のアクセスを支えるシステムは、無謀にパッチを当てるには重要すぎるかもしれないが、露出したままにするには重要すぎる。ガバナンスの答えは英雄的な即興ではない。それは文書化されたリスク決定であり、悪用活動、露出、利用可能な緩和策、サービス継続性、復旧計画を比較検討する。取締役会、機関の長、または経営リスク所有者は、どの例外が残っているか、なぜかを確認できるべきである。
例外はまた、ベンダーへの依存を明らかにする。サプライヤーがサポートされたアップデートを発行していないために組織がパッチを当てられない場合、その事実は調達の記憶に残るべきである。次の契約では、より迅速なアドバイザリ、より明確なコンポーネント開示、緊急サポートを要求すべきである。繰り返し顧客が重大な脆弱性を閉じるのを妨げるサプライヤーは、単に遅いだけでなく、自分たちでは製品を修復できないバイヤーにセキュリティリスクを転嫁している。
最良の例外記録は一時的なものである。それは時間とともに縮小すべきであり、永続的な受け入れられた露出のリストになるべきではない。Log4Shell の後、何ヶ月も影響を受けるシステムを抱え続けた組織は、なぜかを説明する必要がある。サポートされていないソフトウェア、所有者不在、ビジネスの抵抗、ベンダーの失敗、または真の技術的制約。それぞれの理由が異なる修復を指し示す。その説明がなければ、残留リスクは常態化する。
事実が変化し続けたため再確認が重要だった
Log4Shell への対応は1日の演習ではなかった。新たに影響を受ける製品が現れた。新たなベンダーアドバイザリが公開された。追加の Log4j 脆弱性と修正バージョンが公的記録に入った。検出コンテンツは進化した。スキャナーは改善した。一度チェックして止めた組織は、後の事実を見逃すリスクがあった。これが、CISA のリソースハブと指令モデルが重要だった理由である。修復プロセスは、証拠が変化するにつれて生き続けなければならなかった。
再確認は形式的であるべきである。チームは、影響を受けるアセットを最後にいつ検索したか、どの脆弱性インテリジェンスソースを使用したか、どの製品アドバイザリをレビューしたか、どのスキャン結果を確認したか、パッチ適用後にどのシステムを再テストしたかを知っているべきである。組織が使用している製品を挙げた新しいベンダーアドバイザリが来た場合、組織は以前の「異常なし」の記憶に頼るべきではない。その項目を再オープンすべきである。
同じことがビルドと展開プロセスにも当てはまる。チームは本番環境にパッチを当てても、ソースリポジトリやコンテナ定義に古い依存関係を残したままにするかもしれない。次のビルドが脆弱なコンポーネントを再導入するかもしれない。チームは1つのサービスブランチにパッチを当てても、別のブランチを置き去りにするかもしれない。開発者が古いライブラリを新しいプロジェクトにコピーするかもしれない。修復の証拠には、再導入の防止が含まれなければならない。緊急時のクリーンアップだけではない。
ここで脆弱性管理がセキュア開発と結びつく。依存関係スキャン、バージョン固定、アーティファクトインベントリ、承認されたベースイメージ、リリースレビューは、華やかな管理策ではない。それらは、同じ脆弱性が公的な緊急事態の後に再浮上するのを防ぐ。再導入を防げない組織は、管理環境を修復しておらず、単に第一波を生き残っただけである。
再確認は顧客の信頼のためにも重要だ。事実が変化するにつれてアドバイザリを更新するベンダーは、その瞬間は不確実に見えるかもしれないが、固定された声明を公表して二度と再検討しないベンダーよりも時間とともに信頼できる。顧客は、システム的な脆弱性が進化することを知っている。ベンダーは、事実がいつ変化したか、そしてそれが何を意味するかを言う必要がある。最初のアドバイザリの後の沈黙は、調査が続いている間でも解決と誤って読まれ得る。
証拠は次の監査のために保持されるべきである
Log4Shell の間に作成された修復の証拠は、危機の後に消えるべきではない。ログ、スキャン結果、ベンダーアドバイザリ、パッチチケット、例外承認、顧客通知、幹部ブリーフィングは、何ヶ月も後になって有用である。それらは、監査人が組織が合理的に対応したかどうかを評価するのに役立つ。それらは、インシデントレスポンダーが後の不審なアクティビティが脆弱性ウィンドウに遡り得るかどうかを理解するのに役立つ。調達チームが弱いサプライヤーを特定するのに役立つ。エンジニアがコンポーネントインベントリを改善するのに役立つ。
保持は、すべてを永遠に溜め込むことと同じではない。組織は、決定を再構築するのに必要な証拠を保存すべきである。どのシステムが影響を受けたか?どのようなアクションが取られたか?いつ取られたか?誰が例外を承認したか?どのような監視が行われたか?どのような顧客または規制当局とのコミュニケーションが発生したか?何が不確実なままでしたか?その証拠は、スタッフの異動や緊急ツールの乱立に耐えられる方法で保存されるべきである。
長期的な監査はまた、期待される能力を実際の能力と比較すべきである。脆弱性データベースは Log4j の場所を知っていたか?スキャンはアプリケーション所有者が手動で見つけたものを見つけたか?ベンダーレコードは実際の展開にマッピングされたか?クラウドインベントリはすべての実行中のワークロードを含んでいたか?ログは悪用レビューをサポートしたか?コミュニケーションチャネルは適切なチームに到達したか?各ギャップは管理策改善項目になるべきである。
これにより、Log4Shell は孤立した危機から、次の危機のためのリハーサルに変わる。次のシステム的な脆弱性は、異なる言語、パッケージマネージャー、クラウドサービス、認証ライブラリ、またはハードウェアコンポーネントに影響するかもしれない。特定のパッチは異なるだろう。証拠の連鎖は見慣れたものに見えるだろう:露出を特定し、サプライヤーと調整し、修正または緩和し、悪用を監視し、例外を管理し、範囲を伝え、完了を証明する。Log4Shell の証拠を保持しレビューした組織は、よりよく準備されるべきである。
顧客の質問は契約文言になるべきである
顧客は Log4Shell の間にベンダーに緊急の質問をした:影響を受けていますか?どの製品ですか?どのバージョンですか?私たちは何をすべきですか?いつパッチが届きますか?悪用を見ましたか?事実が変わったら通知しますか?これらの質問は緊急事態後に消えるべきではない。それらは契約と保証の要件になるべきである。
より強力な契約は、サプライヤーにコンポーネントインベントリの維持、定義された時間枠内での脆弱性アドバイザリの提供、影響を受けるバージョンのマトリックスの公開、緊急緩和のサポート、関連ログの保持、顧客の証拠要求への協力、事実が変わったときの通知の更新を要求するだろう。また、サプライヤーが SBOM を提供できるかどうか、SBOM が最新かどうか、顧客がそれをどのように利用できるかを明確にするだろう。目標は書類作業ではない。目標は、次のシステム的な欠陥が現れたときの修復の迅速化である。
サプライヤー保証はまた、ポリシーだけでなく実践をテストすべきである。ベンダーは脆弱性管理を行っていると主張するかもしれないが、顧客は、ベンダーがどれだけ迅速に Log4j 露出を特定したか、アドバイザリがどのように発行されたか、例外がどのように追跡されたか、その後何が変わったかを尋ねるべきである。これらの質問に答えられないベンダーは、管理の成熟度によってではなく努力によって事象を生き延びたかもしれない。
同じ教訓は内側にも当てはまる。ソフトウェアを購入するビジネスユニットは、緊急時にセキュリティチームを盲目にする契約に署名すべきではない。調達部門は、どのシステムが重要で、どのベンダーが不可欠な機能を保持し、どの契約が証拠提供義務を含んでいるかを知っておくべきである。法務部門は、緊急時の協力を義務化する文言をサポートすべきである。経営陣は、サプライヤーが危機の際に基本的なコンポーネントの質問に答えられない場合、安価なソフトウェアが高くつく可能性があることを理解すべきである。
これが Log4Shell からの説明責任の弧である:広く使用されているコンポーネントの脆弱性は、弱いインベントリ、弱いサプライヤーの証拠、弱い例外ガバナンスを明らかにした。修復は単に修正版だけではない。時間が短いときに誰がどの事実を生み出さなければならないかについてのより良い合意である。
証明の基準は人道的だが確固たるものであるべきである
2021年12月に、すべての組織が影響を受けるコンポーネントを即座にすべて見つけられたと装うのは不公平であろう。脆弱性は深刻で、コンポーネントは広範で、公開情報は急速に進化した。多くの防御者は極度のプレッシャーの下で作業した。説明責任はその現実を認識すべきである。完全な全知を要求すべきではない。
しかし、人間的な説明責任は甘い説明責任ではない。それは、ギャップが可視化された後、組織が改善したかどうかを問う。不確実性を隠すのではなく文書化したか?露出したシステムを優先したか?第一波の後も調査を続けたか?顧客と正直にコミュニケーションしたか?その後、インベントリ、ベンダー、ログの弱点を修復したか?次の緊急事態をより容易にしたか?
この基準は公正である。なぜなら、時間の経過にわたる管理に焦点を当てているからだ。小規模な組織は初日から完全なコンポーネントインベントリを持っていなかったかもしれない。それでもより良いものを作り出すことはできる。ベンダーはパッチのテストに時間が必要だったかもしれない。それでも暫定的な緩和策と正直な状況を公表することはできる。公的機関はレガシーシステムを抱えていたかもしれない。それでも例外を追跡しリスクを報告することはできる。尺度は、すべてのアクターが完璧だったかどうかではない。各アクターが緊急の発見を持続的な改善に変えたかどうかである。
Log4Shell はその理由から、リスク記録に残るに値する。それは、システム的な脆弱性の後に最も危険なフレーズが「調査中です」ではないことを思い出させるものである。そのフレーズは正直であり得る。危険なフレーズは、「パッチを当てました」である。誰も、何が見つかり、何が見逃され、何が監視され、どのような証拠が完了を裏付けるかを示せないときである。
次のシステム的な欠陥は異なる名前で到着するだろう。それは、アイデンティティライブラリ、コンテナイメージ、クラウドコントロール、または戦略的とは思えないほど一般的なパッケージに関わるかもしれない。説明責任を果たす組織は、すでに自社のコンポーネント、所有者、サプライヤー、ログ、例外、証拠提供義務を知っているため、迅速に答えられる組織である。それが、CISA の Log4Shell 記録が指し示す本当の修復であり、レジリエンスのために持ち越す価値のある尺度である。
タイポグラフィ
タイポグラフィは、書かれた言語を読みやすく、判読しやすく、視覚的に魅力的にするために活字を配置する芸術と技法である。これには書体、ポイントサイズ、行長、行間、文字間隔の選択が含まれる。
- タイポグラフィは、15世紀にヨハネス・グーテンベルクが活版印刷を発明したことに始まる。
- 重要な要素には、フォントの選択、カーニング、トラッキング、リーディングがある。
- 優れたタイポグラフィは可読性を高め、デザインにおけるムードやトーンを伝達する。

