AWS Serverless Function Runtime Protection
実行時にサーバレス機能にCloudGuardプロテクションを適用できます。これにより、機能が悪意のある入力や攻撃から保護されますが、異常な動作については機能の動作が監視され、悪意のあるソースからの入力のワークロードファイアウォールとして機能します。関数のソースコードは変更されず、関数の実行時パフォーマンスへの影響は最小限に抑えられます。
Runtime Protection をサーバ レス機能に適用するには、AWS environment をオンボードしてサーバ レスプロテクションを適用する必要があります。以下の を参照してください。
Serverless Function Runtime Protectionを使用すると、次のことができます。
入力にワークロードファイアウォールを適用し、入力ペイロードを分析して悪意のある攻撃パターンを検出します。
異常なランタイム動作を検出し、オプションで防止します。
実際の関数行動の関数固有のプロファイルを用いて、規範的活動(ベースライン)の許可リストを構築する。
異常な行動に基づく攻撃を検出または防止する
プロセス起動、ネットワークアクティビティ、API呼び出しの監視など、アプリケーションコードが実行している処理の可視性を得る
関数実行時パフォーマンスへの影響を最小限に抑える
保護モジュール
各サーバレス機能に個別に保護を適用し、保護が問題のみを検出するか、またはそれらを防止するかを選択できます。
プロテクションを適用すると、CloudGuard は、実行時にロードされる関数に、関数と一緒に小さなモジュールを追加します。このモジュールは小型であり、関数コードとは別であるため、関数の動作には影響しません。関数は監視されますが、実行時のオーバーヘッドは非常に少なくなります。また、完全に透過的です。すべてのレポートは関数ログを使用して行われるため、収集したメタデータを確認できます。
実行時保護は、パターンマッチング、フロー分析、登録解除、アロウリスティングなどのメカニズムを使用して、関数のフロー内のさまざまなポイントを動的に検査し、疑わしいアクティビティに応じてレポートやブロックなどのポリシーを適用します。
許可リスト
サーバレス機能に対して実行時保護を有効にすると、CloudGuard は機械学習テクニックを使用して、実行時に関数をプロファイルし、その標準的な(許可された) アクションのAllowlist を作成します。これには以下の項目が含まれます。
プロセス
アクセスするファイルとローカルストレージ
API 関数(コード解析によって決定されるもの、コードインジェクションのケースを含むランタイム監視によって決定されるもの)
外部ホストのアクセス
機能と通信するネットワークアドレス
Runtime Protection タブには、関数のAllowlist が表示されます。 を定義するときには、手動でAllowlist にアクティビティを追加できます。 を定義するときには、アクションを削除できます。
ルールと除外
Allowlist にアクションを手動で追加または削除できます。このようにして、関数のプロファイル作成時に自動的に生成されるAllowlist を微調整できます。
ルールはallowlist からアクションを削除し、除外によってアクションが追加されます。
Rules & Exclusions タブには、関数に定義されたルールと除外が表示されます。
注 -これらの規則と除外は、サーバレス機能にのみ適用されます。ポスチャー管理 レベルで定義するルールと除外は、すべての関数と環境全体に適用されます。 |
イベント
CloudGuard は、異常な実行時動作または不正な入力を検出すると、イベント通知を生成します。これらの通知は、機能ごとに、またはイベントページで、他の機能や他のCloudGuard元からの通知とともに表示できます。
アクション
サーバレスプロテクションの有効化
サーバレス保護が有効な場合:
CloudGuard は、サーバレス機能の脆弱性と危険性を継続的にスキャンします。 Serverless Risk Assessment
関数の呼び出し時に実行時保護を適用できます。 AWS Serverless Function Runtime Protection
AWSアカウントはすでにCloudGuardにオンボードされている必要があります。これを行う方法の詳細については、AWS 環境のオンボード を参照してください。
サーバレス関数でCloudGuardプロテクションを有効にするには、アカウントのこれらのアセットにアクセスするためのアクセス権限をCloudGuardに付与する必要があります。これらは、アカウントオンボードプロセスでCloudGuard に付与されたアクセス許可に追加されます。以下に説明するプロセスでは、アカウントで実行するAWS CloudFormation (CFT) スタックを使用します。アカウントにデプロイされたCFT リソースの詳細については、AWS サーバ レスプロテクションのリソースとアクセス許可 を参照してください。
Assets メニューでEnvironments に移動します。
リスト内の AWS アカウントの Enable Serverless protection をクリックします。
表示されるウィザードページの指示に従います。Create Cross-Account Roleをクリックします。
このプロンプトでは、AWS アカウントにサインインした後、CloudFormation ページにリダイレクトすることをお勧めします。AWS アカウントのクロスアカウントロールをCloudGuardに付与するCFT スタックを確認できます。
AWS で、I acknowledge that AWSCloudFormation might create IAM resources with custom names オプションを選択します。
Create stackをクリックします。
CloudFormation がスタックの作成を開始します。
Template タブをクリックすると、スタックの作成時にCloudGuard が取得するアクセス許可の詳細が表示されます。スタックを作成すると、追加のアクセス許可がCloudGuard に付与され、CloudGuard はプロテクションを有効にする処理を完了します。最後に、CloudGuardポータルのProtected Assets ページにあるアカウントの保護アセットリストに、サーバレス機能が表示されます。
CI/CD パイプラインでのランタイム保護の有効化
ランタイムプロテクションは、サーバレスCI/CDツールを使用して、クラウドアカウントに関数をデプロイする前に、CI/CDパイプラインで有効にすることもできます。パイプラインプラグインは、セキュリティポリシーをチェックして、ランタイム保護モジュールが挿入されるように構成されている関数を判別します。挿入は、関数の動作と実行に対して透過的です。
サーバレス機能でのランタイムプロテクションの有効化
検出時のアクションのブロック
実行時保護が有効になっている場合、CloudGuard は、関数の動作がプロファイリング中に決定された許可された動作から逸脱した場合、または既知の悪意のあるサイトから入力を受信した場合に、実行時警告を生成します。
また、CloudGuard を設定して、allowlist にないファイルへのアクセス試行や入力など、操作を遮断することもできます。
Workload Protection メニューのServerless Functions ページに移動します。
リストから機能を選択し(フィルタリングして検索を絞り込むことができます)、GENERAL タブを選択します。
Block on detect をON に切り替えます。
除外の作成
特定の基準を手動で除外して、関数のアクティビティをブロックしないようにすることができます(または、関数が検出時にブロックするように設定されていない場合は、イベントを発生させるようにすることもできます)。これにより、Serverless Runtime Protectionが関数のランタイムアクティビティを監視するために使用する基準を調整できます。これらの除外は、それらを変更または削除し、関数が呼び出されるたびに適用されるまで、そのまま保持されます。
Workload Protection メニューのServerless Functions ページに移動します。
リストから機能を選択します(フィルタリングして検索を絞り込むことができます)。
Rules & Exclusions タブを選択します。
Exclusions セクションを展開し、Create New Exclusion をクリックします。
除外のName を入力します(このタブの除外リストに表示されます)。
Targetを選択します。ターゲットは、プロセス、ファイル、特定のホストなど、監視から除外されるアクションのタイプです。リストから除外のターゲットを1 つ選択します。
AWS API
Network
プロセス
ファイル
入力
1 つの除外に複数のターゲットを選択するには、ターゲットごとに別々の除外を作成します。
除外のPattern を入力します。パターンは、テキスト文字列または文字列のリストで、それぞれが別々の行に表示されます。パターンに一致するアクションは、関数allowlist に追加され、イベント通知の生成またはブロックされたアクションから除外されます。パターンはターゲットタイプに対応します。たとえば、IP ターゲットの場合、パターンは1 つ以上のIP アドレスです。
注 - File パターンマッチは、Host またはProcess パターンマッチとは異なります。
/tmp
の下にある*.TXT
ファイルとそのすべてのサブディレクトリを一致させる必要がある場合は、次のパターンを使用します。/tmp/**/*.txt
*.TXT
ファイルを/tmp/logs
のみの下で、サブディレクトリなしで一致させる場合は、次のパターンを使用します。/tmp/logs/*.txt
詳細については、https://help.sumologic.com/03Send-Data/Sources/04Reference-Information-for-Sources/Using-Wildcards-in-Pathsを参照してください。
除外のScope を選択します。これは、除外が特定の関数、関数のグループ、または環境内のすべての関数(アカウント) に適用されるかどうかを示します。
注 - スコープApply only on protected functions (functions with FSP) の後の注は、 の有効化、つまり、自動プロテクトボタンがオンの場合にスコープを適用できることを意味します。
Createをクリックします。
ルールの作成
関数のアクティビティをブロックする特定の基準を手動で追加できます(または、関数が検出時にブロックするように設定されていない場合はアラートを発生させます)。これにより、関数のランタイムアクティビティを監視するときに、Serverless Runtime Protectionが使用する基準を「微調整」することができます。これらのルールは、変更または削除されるまでそのまま保持され、関数が呼び出されるたびに適用されます。
Workload Protection メニューのServerless Functions ページに移動します。
リストから機能を選択します(フィルタリングして検索を絞り込むことができます)。
Rules & Exclusions タブを選択します。
Rules セクションを展開し、Create New Rule をクリックします。
ルールのName を入力します(このタブのルールのリストに表示されます)。
Targetを選択します。ターゲットは、プロセス、ファイル、特定のホストなどのアクションのタイプです。ルールのターゲットを1 つ選択します。ルールに複数のターゲットを選択するには、ターゲットごとに個別のルールを作成します。
ルールのPattern を入力します。パターンは、テキスト文字列、または文字列のリストで、それぞれが別々の行に表示されます。パターンに一致するアクションは、allowlist 関数から削除され、イベント通知が生成されるか、ブロックされます。パターンはターゲットタイプに対応します。たとえば、IP ターゲットの場合、パターンは1 つ以上のIP アドレスです。
注 - File パターンマッチは、Host またはProcess パターンマッチとは異なります。
/tmp
の下にある*.TXT
ファイルとそのすべてのサブディレクトリを一致させる必要がある場合は、次のパターンを使用します。/tmp/**/*.txt
*.TXT
ファイルを/tmp/logs
のみの下で、サブディレクトリなしで一致させる場合は、次のパターンを使用します。/tmp/logs/*.txt
詳細については、https://help.sumologic.com/03Send-Data/Sources/04Reference-Information-for-Sources/Using-Wildcards-in-Pathsを参照してください。
ルールのScope を選択します。これは、ルールが特定の関数、関数のグループ、またはアカウント内のすべての関数に適用されるかどうかを示します。
注 - スコープApply only on protected functions (functions with FSP) の後の注は、 の有効化、つまり、自動プロテクトボタンがオンの場合にスコープを適用できることを意味します。
Createをクリックします。
AWS IAM アクセス許可の表示
Protected Assets ページのIAM Policies タブでは、関数コードスキャンの結果を確認できます。重大度(重大、高、中、低)の異なるさまざまな問題を見つけることができます。Suggested Policy リンクをクリックして、クリップボードにコピーして後で使用できる推奨されたポリシー修正を表示します。
サーバの少ない実行時間の結果の表示
Assets メニューのProtected Assets ページから、表示する関数のPosture Findings タブに移動します。これは、ランタイム保護によって検出されたランタイム結果のテーブルを示します。または、ポスチャの検索とセキュリティイベントページのPosture Findingsページで結果を確認できます(このビューには、すべてのCloudGuard機能の結果テーブルが表示されます。ただし、特定のサーバレス機能をフィルタリングできます)。
Serverless Runtime Protectionで生成できるランタイムアラートメッセージを以下に示します。
アラート名 | 説明 |
---|---|
コマンドインジェクション攻撃 | コマンドインジェクションでは、攻撃者は、コードをインジェクトする必要なしに、システムコマンドを実行するアプリケーションのデフォルト機能を拡張します。悪用に成功した場合、機密性の損失、完全性の損失、可用性の損失、説明責任の損失などの影響を受ける可能性があります。 |
コードインジェクション攻撃 | 関数で任意のコードを実行しようとしました。 攻撃が成功すると、アプリケーションの機密性、整合性、可用性、または説明責任の損失などの影響を受ける可能性があります。 |
CSV注入攻撃 | 攻撃が成功すると、CVE-2014-3524などのスプレッドシートソフトウェアの脆弱性を利用してユーザコンピュータをハイジャックしたり、自分のWebサイトからダウンロードしたスプレッドシートのセキュリティワーニングを無視する傾向を利用してユーザコンピュータをハイジャックしたり、スプレッドシートや他のオープンなスプレッドシートからコンテンツを解放したりすることができます。 |
ローカルファイルインクルード攻撃 | 関数が元々アクセスしようとしなかったファイルにアクセスしようとしました。攻撃が成功すると、通常、機密データの漏洩が発生しますが、攻撃者が制御するデータを含むファイルを含めることでコードの実行につながり、アプリケーションの機密性、整合性、可用性が損なわれる可能性があります。 |
NoSql インジェクション攻撃 | 誰かがクエリの意図したロジックを変更しようとしました。NoSQL インジェクションのエクスプロイトが成功すると、データベースデータを読み込んで変更することで、機密性、可用性、整合性に影響を与える可能性があります。 |
SQL インジェクション攻撃 | 関数の元のSQL クエリを変更しようとしました。SQLインジェクションエクスプロイトが成功すると、データベースから機密データの読み取り、データベースデータの変更(挿入/更新/削除)、データベースに対する管理操作の実行(DBMSのシャットダウンなど)、DBMSファイルシステムに存在する特定のファイルの内容のリカバリ、および場合によってはオペレーティングシステムへのコマンドの発行が可能になります。 |
XSS注入攻撃 | 悪意のあるJavaScript コードを実行しようとしました。成功したXSS 攻撃は、ブラウザによって保持され、そのサイトで使用される任意のCookie、セッショントークン、またはその他の機密情報にアクセスできます。 |
XML外部エンティティ攻撃 | ファイルにアクセスしたり、悪意のあるXMLペイロードを介してデータを漏洩しようとした人もいました。通常、攻撃が成功すると、機密データの漏洩が発生し、VPC 内で通信が行われます。 |
ファイルイベント | CloudGuardで不正として検出されたファイルアクセス |
プロセスイベント | CloudGuardにより不正として検出されたプロセスの生産 |
API イベント | CloudGuard によって不正として検出されたAWS API 呼び出し |
ホストイベント | CloudGuardで不正として検出されたホストコール |
IPイベント | CloudGuardで不正として検出されたIPコール |
HTTP イベント | CloudGuardによって不正として検出されたHTTP呼び出し |