EC部技術3課の山本拓海です。
Daft Punkで好きなアルバムは、Random Access Memoryです。
鉄板ですね。
AWSの脆弱性検出サービスInspectorをOS間とエージェントベース・エンージェントレス間で比較します。
記事のスコープ
Inspectorは主にEC2インスタンスを対象に使用したケースを想定しております。 ECSやLambdaについては深く取り上げていません。あらかじめご了承ください。
2024年4月23日追記
2024年4月22日にInspectorのハイブリッドスキャンモード(エージェントレススキャンを使えるモード)がGAとなりましたので、追記いたしました。
- 記事のスコープ
- InspectorのOS間の挙動比較
- Inspector エージェントベースとエージェントレスの挙動比較
- 補足
- スキャンモードの選択
- InspectorとGuardDutyの違い
- おわりに
InspectorのOS間の挙動比較
最初にLinuxとWindowsでの挙動比較です。
Linux | Windows | |
---|---|---|
スキャンタイミング | * Inspectorによってインスタンスが検出されたとき * EC2起動時 * ネットワーク到達性を24時間ごと * パッケージ・パッチのインストール時 * CVEがデータベースに登録された時 |
* Inspectorによってインスタンスが検出されたとき * EC2起動時 * ネットワーク到達性を24時間ごと * デフォルト6時間ごと |
Inspector用プラグイン | 不要 | 必要 |
Deep Inspection | 利用できる | 利用できない |
SBOMのエクスポート | できる | できない |
補足
プラグイン
Inspector用プラグインのプラグインはSSMエージェント以外に必要なプラグインです。
Inspectorを有効にした際に、WindowsインスタンスにはSSM Run Commandにてプラグインが自動でインストールされます。
Deep Inspection
Deep Inspectionはプログラミング言語を対象にしたスキャンです。2024年3月現在、Java, JavaScript, Pythonが対象言語です。Windowsでは利用できません。
Deep Inspectionは以下をデフォルトパスとしてスキャンします。
- /usr/lib
- /usr/lib64
- /usr/local/lib
- /usr/local/lib64
上記以外のパスをスキャンする場合、カスタムパスの追加が必要です。
カスタムパスはAWSアカウントにつき最大5つ追加可能です。
Organizationsを使用するAWSアカウント全体は、さらにカスタムパスを5つ追加できます。Organizationsで追加したパスはOrganizations全体に適用されます。合計して10追加可能です。
カスタムパスは256文字の文字数制限があり、さらに、インスタンスあたり5000パッケージの制限とパッケージ収集時間15分の制限がありますので、このあたりを考慮したカスタムパスの追加をご検討ください。
SBOMのエクスポート
SBOMのエクスポートはInspectorの機能で、インスタンス内で利用しているOSSのコンポーネントやパッケージのデータを出力する機能です。
エクスポートしたデータをサードパーティの脆弱性管理ツールなどでインポートし、一元管理するのに役立ちます。
この機能もWindowsでは利用できません。
Inspector エージェントベースとエージェントレスの挙動比較
エージェントベースのInspectorの挙動とエージェントレスのInspectorの挙動を比較します。
Inspector エージェントレススキャンは2023年11月にリリースされた新しい機能です。
EC2インスタンスをSSMで管理できない環境で利用するのに適しています。
現在プレビュー版で、2024年3月 現在エージェントレスのInspectorは東京・大阪リージョンでは利用できません。
以下の内容はエージェントレスのInspectorを利用できるリージョンの現状の参考値としてお読みください。
2024年4月23日追記
2024年4月22日にエージェントレススキャンがGAとなり、東京・大阪リージョンでも使用可能となりました。
エージェントベース | エージェントレス | |
---|---|---|
スキャン対象 | EC2インスタンスにアタッチされたEBS | EBSのスナップショット |
スキャンのタイミング | 上述 | 24時間毎 |
対象となるインスタンス | * サポートされたOSを使っている * スキャン除外タグがついていない * SSMマネージド |
* サポートされたOSを使っている * スキャン除外タグがついていない * インスタンスの状態が Unmanaged EC2 instance または No inventory * ext3, ext4, xfsのファイルシステムを利用している |
プログラミング言語のパッケージのスキャン | Deep Inspectionの一部の機能 | デフォルト |
補足
プログラミング言語のパッケージのスキャン
Deep Inspectionを使ったプログラミング言語のパッケージのスキャンの対象は上述の通りです。
一方、エージェントレスの場合、EBSのどこにあってもスキャンの対象となります。
そのため、エージェントベースとエージェントレスではプログラミング言語の脆弱性の検出結果が異なることがあります。
スキャンモードの選択
エージェントベースとエージェントレスのスキャンモードはInspectorの画面から選択ができます。
選択できるモードはエージェントベースとハイブリッドモード(エージェントベースとエージェントレスの組み合わせ)でエージェントレスモードだけを単独で選択することはできません。
ハイブリッドモードのときも、インスタンスにSSMエージェントがインストールされている場合、エージェントベースの方法でスキャンを行います。
そのため、エージェントレスはエージェントベースが使えない場合の補助的な意味合いとお考えいただくのがわかりやすいかと思います。
スキャンモードによる料金比較
EC2インスタンスのスキャンはどちらのモードも1 か月あたりの費用は、その月にスキャンされた EC2 インスタンスの起動時間に基づいています。
複数のインスタンスの起動時間の合計が1ヶ月分 = 720時間ごとに以下の料金が発生します。
2024年4月23日追記
東京リージョンの料金は以下の通りです。
エージェントベース | エージェントレス |
---|---|
1.512USD / インスタンス | 2.0808USD / インスタンス |
以前より紹介していた以下の料金はバージニアリージョンの料金です。
エージェントベース | エージェントレス |
---|---|
1.2528USD / インスタンス | 1.7496USD / インスタンス |
そのほかのリソースを対象にした料金は以下のリンクからご参照ください。
InspectorとGuardDutyの違い
最後に少しだけ、InspectorとGuardDutyを比較します。
InspectorとGuardDuty、どちらが環境に必要か検討される機会があるかと思います。
Inspectorは脆弱性と意図しないネットワーク露出を検知し、GuardDutyは発生した脅威を検知するサービスです。
インシデント対応ライフサイクルに結びつけると以下の図のようになります。
Inspectorは準備、つまり侵入を防ぐための対策をするサービス(予防的統制)で、GuardDutyは侵入後の挙動を検知・分析するサービス(発見的統制)です。
GuardDutyにもオプションがありそれぞれカバーする範囲があり、その範囲を比較した記事は以下になります。
何を検出するか
Inspectorは環境で検出された脆弱性を、CVE-IDをタイトルとした検出結果として生成します。
ここでもGuardDutyを絡めて比較いたしますと、GuardDutyは検出結果にAWS独自の脅威の内容を表した検出タイプ名をつけます。検出結果について詳しくは以下をご確認ください。
おわりに
内容は以上となります。
攻撃の対策は早期の対策が被害を減らす効果が高く、予防的統制であるInspectorを環境に組み込み、適切に運用することで、攻撃の目を摘むことを期待できます。この記事が導入の参考になれば幸いです。
*1:参考:コンピュータセキュリティインシデント対応ガイド https://www.ipa.go.jp/security/reports/oversea/nist/ug65p90000019cp4-att/000025341.pdf
山本 拓海(執筆記事の一覧)
エンタープライズクラウド部 クラウドリライアビリティ課
Security Hubになりたい
写真は黒猫のくま。
記事に関するお問い合わせや修正依頼⇒ takumi.yamamoto@serverworks.co.jp