要旨
-
CVE が公表されたときに確認するのは、AWS アカウント内のどの EC2 が影響を受ける可能性があるか。
-
Inspector v2 で EC2 の脆弱性を確認する場合、対象 CVE の finding(Inspector の検出レコード)がある EC2 だけを見ても影響範囲は確定しない。finding がない EC2 についても、Inspector が観測できたうえで未検出なのか、そもそも観測できていないのかを分ける必要がある。
-
EC2 の一覧、SSM の管理状態、Inspector の観測範囲を突き合わせ、結果を 影響あり / 未検出 / 未判定 に分ける考え方を整理する。
背景
-
AWS 環境で EC2 を運用していると、Linux kernel や OS パッケージの CVE(公開された脆弱性識別子)が公表されたときに、影響を受けるサーバーを確認する必要がある。
-
Amazon Inspector v2 は、EC2 / ECR / Lambda などの脆弱性検出に使えるサービス。本稿では EC2 のパッケージ脆弱性を対象にし、パッチ適用手順ではなく AWS アカウント内の影響範囲確認を扱う。
-
Inspector が EC2 を観測する経路には、SSM Agent 経由の方式と、SSM Agent を使わない Agentless 方式がある。
確認結果の区分
CVE 対応では、確認結果を次の3つに区分する。
| 区分 | 意味 |
|---|---|
| 影響あり | Inspector が観測できており、対象 CVE の検出がある |
| 未検出 | Inspector が観測できており、対象 CVE の検出がない |
| 未判定 | Inspector の観測対象外、または観測状態に不明点がある |
未検出と未判定を分ける。finding がない EC2 でも、Inspector が観測できていなければ未検出ではなく未判定として扱う。
確認の全体像
確認は、検出結果からではなく観測範囲から進める。
確認の流れ
1. 調査対象の確定
最初に、どのアカウント・リージョン・EC2 群を調べるのかを確定する。
| 観点 | 確認内容 |
|---|---|
| アカウント | 想定した環境を見ているか |
| リージョン | 対象 EC2 が存在する場所か |
| Inspector の有効状態 | EC2 が Inspector の対象になっているか |
| マルチアカウント構成 | 管理アカウントとメンバーアカウントの見え方が合っているか |
検出結果の確認ではなく、調査範囲のズレを消す。
2. Inspector の観測範囲
調査対象の EC2 が Inspector から観測できているかを確認する。
| 観点 | 確認内容 |
|---|---|
| 対象 EC2 | 調べたい EC2 が Inspector 側にも出ているか |
| 観測方式 | SSM Agent 経由か、Agentless 経由か |
| 観測状態 | 現在スキャン対象として扱われているか |
| 観測できない理由 | 対象外 OS、停止中、権限不足、除外設定などがないか |
| 最終観測時刻 | いつの結果を見ているか |
観測できていない EC2 について finding が空でも、影響なしではなく Inspector では未判定と扱う。
3. EC2 / SSM / Inspector の突き合わせ
-
SSM の管理状態は、Inspector の観測範囲を確認するための補助情報として扱う。
-
SSM Online は、SSM Agent が応答している状態を指す。
-
SSM Agent が応答していない EC2 でも、Inspector の Agentless 側で観測されていることがある。逆に、SSM 側に見えていても Inspector の観測状態に問題がある場合もある。
確認対象は次の3つ。
| 対象 | 役割 |
|---|---|
| EC2 一覧 | 実在するサーバーの母集団 |
| SSM 管理対象 | SSM Agent 経由で管理できる範囲 |
| Inspector 観測範囲 | Inspector が脆弱性評価できる範囲 |
これらを突き合わせ、次のように分類する。
| 状態 | 扱い |
|---|---|
| EC2 に存在し、Inspector でも観測できている | finding を読む対象 |
| SSM には出ないが、Inspector の Agentless で観測できている | Inspector の観測対象として扱う |
| EC2 に存在するが、Inspector で観測できていない | 未判定として別確認 |
| Inspector に出ているが、観測状態に問題がある | 理由を確認して未判定または保留 |
4. 検出結果の確認
観測範囲を確定した後で、対象 CVE の finding を確認する。
| 観点 | 用途 |
|---|---|
| 対象 CVE | 調査対象の脆弱性か |
| 対象リソース | どの EC2 に出ているか |
| 深刻度 | 優先順位づけ |
| 該当パッケージ | 何が影響しているか |
| 修正候補 | パッチ計画の起点 |
| 観測時刻 | いつの情報か |
5. 未判定領域の分離
Inspector で見えない領域は、影響なしではなく未判定として扱う。
未判定になりやすいのは次のようなケース。
- Inspector が対象外の OS
- Agentless の条件を満たさない EC2
- 除外設定が付いている EC2
- 停止中で最新状態を観測できていない EC2
- vendor advisory の更新が止まっている古い OS
この場合は、Inspector とは別に OS 提供元の脆弱性情報、実パッケージ、kernel CVE であれば running kernel などを確認する。
まとめ
Inspector v2 で EC2 の CVE 影響範囲を見るときは、finding だけを起点にしない。
- 調査対象を確定する
- Inspector の観測範囲を確認する
- SSM の管理状態だけで Inspector の観測範囲を決めない
- Agentless で観測できている EC2 は、SSM 未接続でも Inspector の観測対象に含める
- finding が空でも、観測できていない EC2 は未判定として分ける