暗号通貨マイニング攻撃に対する保護のベスト プラクティス

Last reviewed 2023-10-20 UTC

暗号通貨マイニング(ビットコイン マイニングとも呼ばれます)は、新しい暗号トークンを生成してトランザクションを検証するためのプロセスです。暗号通貨マイニング攻撃は、被害者の環境にアクセスできるようになった攻撃者が、被害者のリソースを悪用して自分たちのマイニング オペレーションを行う攻撃です。

2021 年 11 月の Threat Horizons レポートによると、暗号通貨マイニング攻撃は、攻撃者が Google Cloud 環境を侵害した後でコンピューティング リソースを悪用する最も一般的な方法です。このレポートでは、攻撃者は通常、システムの侵害から 22 秒以内に暗号通貨マイニング ソフトウェアをリソースにダウンロードすることも報告されています。暗号通貨マイニングでは費用が急激に増加する可能性があり、暗号通貨マイニング攻撃により予想よりもはるかに大きな支払いを請求される可能性があります。短期間に多額の費用が発生する可能性があることから、組織を保護するために、保護、検出、緩和策を講じる必要があります。

このドキュメントはセキュリティ アーキテクトと管理者を対象としています。暗号通貨マイニング攻撃から Google Cloud リソースを保護し、攻撃が発生した場合の影響を軽減するために利用できるベスト プラクティスについて説明します。

脅威ベクトルを特定する

組織が暗号通貨マイニング攻撃にさらされているかどうかを判断するには、組織に適用される脅威ベクトルを特定する必要があります。

2021 年 11 月の Threat Horizons レポートは、ほとんどの攻撃者が次のような脆弱性を悪用していることを明らかにしています。

  • ユーザー アカウントのパスワードが脆弱であるか、またはパスワードがない
  • Google Cloud APIs の認証が弱いか、または導入されていない
  • サードパーティ ソフトウェアの脆弱性
  • Google Cloud 環境または Google Cloud で実行されているサードパーティ アプリケーションの構成ミス
  • 認証情報の漏洩(GitHub の公開リポジトリで公開されているサービス アカウント キーなど)

さらに、次のドキュメントを定期購読すると、脅威ベクトルの一覧を確認できます。

該当する脅威ベクトルを特定したら、このドキュメントの残りのベスト プラクティスを使用して対処できます。

アカウントとアカウントの認証情報を保護する

攻撃者は、保護されていないアカウントや管理されていないアカウントを悪用して Compute Engine リソースにアクセスできる可能性があります。Google Cloud には、アカウントとグループを管理するためのさまざまなオプションが用意されています。

クラウド環境へのアクセスを制限する

次の表に、クラウド環境にアクセスできるユーザーを定義する組織のポリシーを示します。

組織のポリシーの制約 説明
ドメインで制限された共有 Cloud Identity または Google Workspace の有効な顧客 ID を指定します。
Cloud IAM での Workload Identity 連携用に構成できる AWS アカウント ハイブリッド クラウド環境では、Workload Identity 連携を使用できる AWS アカウントを定義します。
ワークロード向けに許可されている外部の ID プロバイダ ハイブリッド クラウド環境では、ワークロードで使用できる ID プロバイダを定義します。

MFA または 2FA を設定する

Cloud Identity はさまざまな方法で多要素認証(MFA)をサポートしています。MFA を構成します(特に特権付きアカウントの場合)。詳細については、会社所有のリソースに均一の MFA を適用するをご覧ください。

暗号通貨マイニング攻撃につながる可能性があるフィッシング攻撃を防ぐには、2 要素認証(2FA)に Titan セキュリティ キーを使用します。

最小権限を構成する

最小権限では、ユーザーとサービスには特定のタスクを実行するために必要なアクセス権のみが付与されます。最小権限により、攻撃者は権限を簡単にエスカレーションできないため、攻撃が組織全体に拡散される能力が低下します。

組織のニーズを満たすには、Identity and Access Management(IAM)で詳細なポリシー、ロール、権限を使用します。さらに、ロールの推奨事項Policy Analyzer を使用して、権限を定期的に分析します。ロールの推奨事項は、ML を使用して設定を分析し、ロールの設定が最小権限の原則を遵守していることを確認するための推奨事項を提供します。Policy Analyzer では、クラウド リソースにアクセスできるアカウントを確認できます。

アカウントをモニタリングする

グループを使用して IAM ポリシーを割り当てる場合は、グループログをモニタリングして、企業アカウント以外のアカウントが追加されないようにします。さらに、Cloud Identity または Google Workspace のドメインに基づいて、リソースにアクセスできる ID を制限します。詳細については、ドメイン別の ID の制限をご覧ください。

従業員が退職したときやロールを変更したときに、アカウントを無効にして権限をリセットするプロセスが、オフボーディング手順に含まれていることを確認してください。詳細については、Google Cloud へのアクセス権を取り消すをご覧ください。

ユーザーとグループを監査するには、Google Workspace の監査ログをご覧ください。

Compute Engine と GKE のリソースのインターネットへの露出を削減する

インターネットへの露出を減らすと、攻撃者が脆弱性を見つけて悪用する機会が少なくなります。このセクションでは、Compute Engine VM と Google Kubernetes Engine(GKE)クラスタをインターネットへの露出から保護するためのベスト プラクティスについて説明します。

外部トラフィックを制限する

VM に外部 IP アドレスを割り当てないでください。組織のポリシーの制約VPC 外部 IPv6 の使用を無効にする」を使用して、すべての VM への外部 IP アドレスを拒否できます。一般公開されている IP アドレスを持つ VM を確認するには、インスタンスの IP アドレスの特定をご覧ください。アーキテクチャで VM に外部 IP アドレスが必要な場合は、組織のポリシー「VM インスタンスに対して許可されている外部 IP を定義する」を使用します。これにより、外部 IP アドレスを持つことが許可されるインスタンス名のリストを定義できます。

GKE ノードを内部 IP アドレスのみに制限します。詳細については、限定公開クラスタの作成をご覧ください。

プロジェクトのすべてのリソースについて、インターネットへの受信(内向き)トラフィックと送信(外向き)トラフィックを制限します。詳細については、VPC ファイアウォール ルール階層型ファイアウォール ポリシーをご覧ください。

外部 IP アドレスを持たない VM の送信通信を許可するように Cloud NAT を構成する、または受信通信にプロキシ ロードバランサを使用するなど、外部トラフィックを制限する方法については、VM への安全な接続インスタンスをご覧ください。

サービス境界を使用する

VPC Service Controls を使用して、Compute Engine リソースと GKE リソースのサービス境界を作成します。VPC Service Controls を使用すると、境界の外部から Compute Engine リソースへの通信を制御できます。サービス境界を使用すると、境界内では自由な通信を許可しながら、境界外からのデータの引き出しやサービス通信をブロックできます。インターネットから Google Cloud サービスへのアクセスを細かく制御するには、IP アドレスやユーザー ID などのコンテキストアウェア アクセス属性を使用します。

ゼロトラスト セキュリティを設定する

BeyondCorp Enterprise でゼロトラスト セキュリティを設定します。BeyondCorp Enterprise は脅威からの保護およびデータ保護アクセス制御を提供します。ワークロードがオンプレミスと Google Cloud の両方にある場合は、Identity-Aware Proxy(IAP)を構成します。TCP 転送を構成して、公共のインターネットから Google Cloud リソースの SSH や RDP などの管理サービスにアクセスできるユーザーを制御します。TCP 転送は、これらのサービスがインターネットに露出することを防ぎます。

Compute Engine と GKE のリソースを保護する

暗号通貨マイニングでは、Compute Engine リソースと GKE リソースにアクセスする必要があります。このセクションでは、Compute Engine リソースと GKE リソースを保護するためのベスト プラクティスについて説明します。

VM イメージを保護する

Shielded VM を構成して、強化されたキュレート済み VM イメージを使用します。Shielded VM は、起動サイクル中に悪意のあるコード(カーネルレベルのマルウェアやルートキットなど)が読み込まれることを回避するように設計されています。Shielded VM はブート セキュリティを提供して整合性をモニタリングし、Virtual Trusted Platform Module(vTPM)を使用します。

デプロイできるイメージを制限するには、信頼できるイメージのポリシーを実装します。組織のポリシー「信頼できるイメージ プロジェクトを定義する」では、イメージと永続ディスクを保存できるプロジェクトを定義します。これらのプロジェクトには、信頼できメンテナンスされているイメージのみが存在することを確認します。

GKE では、コンテナで使用されるベースイメージが、セキュリティ パッチで定期的に更新されるようにします。また、アプリケーションとそのランタイム依存関係のみを含む distroless コンテナ イメージも検討してください。

VM への SSH アクセスを保護する

OS Login を構成して、Compute Engine で実行されている VM への SSH アクセスを管理します。OS Login は、管理者の Linux ユーザー アカウントを Google ID にリンクして、SSH アクセス管理を簡素化します。OS Login は IAM と連動するため、管理者に付与される権限を定義できます。

詳細については、VM とコンテナを保護するをご覧ください。

サービス アカウントを制限する

サービス アカウントは、ワークロードがサービスの Google API を呼び出すために使用する Google Cloud アカウントです。

リソースの作成時に、Google Cloud がデフォルトのサービス アカウント ロールを割り当てないようにしてください。詳細については、サービス アカウントの使用を制限するをご覧ください。

Google Cloud の外部で実行されているアプリケーションが Google Cloud リソースにアクセスする必要がある場合は、サービス アカウント キーを使用しないでください。代わりに Workload Identity 連携を実装して、外部 ID と外部 ID に関連付ける権限を管理します。GKE では Workload Identity を実装できます。詳細については、ユースケースに適した認証方法を選択するをご覧ください。

サービス アカウントの保護に役立つその他のベスト プラクティスについては、サービス アカウントの使用に関するベスト プラクティスをご覧ください。

サービス アカウントとサービス アカウント キーの使用状況をモニタリングする

モニタリングを設定して、サービス アカウントとサービス アカウント キーの組織内での使用状況を追跡できるようにします。顕著な使用パターンを把握するには、サービス アカウントの分析情報を使用します。たとえば、サービス アカウントの分析情報を使用して、プロジェクトでの権限の使用状況を追跡し、未使用のサービス アカウントを特定できます。認証アクティビティのために Google API を呼び出す目的でサービス アカウントとキーが最後に使用された日時を確認するには、サービス アカウントとサービス アカウント キーの最近の使用状況を表示します。

VM とコンテナをモニタリングしてパッチを適用する

攻撃者は暗号通貨マイニング攻撃を開始するために、構成ミスやソフトウェアの脆弱性を悪用して Compute Engine リソースと GKE リソースにアクセスすることがよくあります。

ご使用の環境に該当する脆弱性と構成ミスに関する分析情報を得るには、Security Health Analytics を使用してリソースをスキャンします。Security Command Center Premium を使用している場合は特に、Compute Engine インスタンスの検出結果コンテナの検出結果を確認し、迅速に解決できるようにプロセスを設定します。

Artifact Analysis を使用して、Artifact Registry または Container Registry に保存しているコンテナ イメージの脆弱性を確認します。

パッチが入手可能になったら直ちに組織でデプロイできるようにします。Compute Engine には OS Patch Management を使用できます。GKE には、Google が自動的に脆弱性にパッチを適用します。詳細については、イメージとクラスタを最新の状態に保つをご覧ください。

WAF を使用してアプリケーションを保護する

攻撃者は、デプロイしたアプリケーション内でレイヤ 7 の脆弱性を見つけることで、ネットワークへのアクセスを試すことができます。これらの攻撃を防ぐには、Google Cloud Armor を構成します。これは、レイヤ 7 のフィルタリングとセキュリティ ポリシーを使用するウェブ アプリケーション ファイアウォール(WAF)です。Google Cloud Armor は、Google Cloud、オンプレミス、その他のクラウドでホストされているアプリケーションとサービスで、サービス拒否(DoS)攻撃や WAF 攻撃に対する防御を行います。

Google Cloud Armor には、Apache Log4j の脆弱性に対処するための WAF ルールがあります。攻撃者は Log4j の脆弱性を利用して、不正な暗号通貨マイニングを実行するマルウェアを導入できます。詳細については、Apache Log4j の脆弱性を緩和する Google Cloud Armor WAF ルールをご覧ください。

サプライ チェーンを保護する

継続的インテグレーションと継続的デリバリー(CI / CD)により、最新の機能を顧客に迅速に提供するための仕組みを確立できます。パイプラインに対する暗号通貨マイニング攻撃を防ぐには、コード分析を実行し、パイプラインをモニタリングして悪意のある攻撃の有無を確認します。

Binary Authorization を実装して、開発プロセス中に信頼できる機関によるイメージへの署名を必須にして、デプロイ時にその署名を検証できるようにします。

セキュリティ チェックを CI / CD プロセスのできるだけ早い段階に移行します(シフトレフトとも呼ばれます)。詳細については、セキュリティのシフトレフト: ソフトウェア サプライ チェーンの保護をご覧ください。GKE を使用した安全なサプライ チェーンの設定については、ソフトウェア サプライ チェーンのセキュリティをご覧ください。

シークレットと鍵を管理する

不正な暗号通貨マイニング攻撃の重要な攻撃ベクトルは、安全性の低いシークレットまたは漏洩したシークレットです。このセクションでは、シークレットと暗号鍵の保護に役立つベスト プラクティスについて説明します。

暗号鍵を定期的にローテーションする

すべての暗号鍵が定期的にローテーションされるようにします。Cloud KMS で暗号鍵を管理している場合は、暗号鍵を自動的にローテーションできます。

Google が管理する鍵ペアを持つサービス アカウントを使用すると、鍵も自動的にローテーションされます。

シークレットのダウンロードを避ける

漏洩したシークレットは、攻撃者の重要な攻撃ベクトルです。可能な限り、暗号鍵やサービス アカウント キーなどのその他のシークレットをダウンロードしないでください。鍵をダウンロードする必要がある場合は、組織で鍵のローテーション プロセスが確立されていることを確認してください。

GitHub またはその他の公開リポジトリを使用している場合は、認証情報の漏洩を避ける必要があります。GitHub リポジトリで公開されているシークレットについて警告する Secret scanning などのツールを実装します。鍵が GitHub リポジトリに commit されないようにするには、git-secrets などのツールの使用を検討してください。

Secret ManagerHashicorp Vault などのシークレット管理ソリューションを使用して、シークレットの保存、定期的なローテーション、最小権限の適用を行います。

異常なアクティビティを検出する

異常なアクティビティをモニタリングするには、Google Cloud とサードパーティのモニタリング ツールを構成し、アラートを設定します。たとえば、Compute Engine の監査ロギング情報GKE 監査ログで、管理者のアクティビティに基づいてアラートを構成します。

さらに、Security Command Center の Event Threat Detection を使用して、管理者のアクティビティ、Google グループの変更、IAM 権限の変更に基づいて脅威を特定します。Security Command Center の Virtual Machine Threat Detection を使用して、Compute Engine VM に関連する脅威を特定します。Security Command Center サービスの詳細については、Security Command Center のサービスティアをご覧ください。

マルウェアなどのネットワーク ベースの脅威を検出するには、Cloud IDS を構成します。

Security Command Center クリプトマイニング保護プログラムに参加する

Security Command Center Premium のお客様で Compute Engine を使用している場合は、Security Command Center のクリプトマイニング保護プログラムに参加できます。このプログラムでは、Compute Engine VM 環境で検出されなかった不正なクリプトマイニング攻撃に関連する Compute Engine VM の費用を負担します。クリプトマイニング検出のベスト プラクティスを実装する必要があります。一部のベスト プラクティスは、このページで説明する他のベスト プラクティスと重複しています。

インシデント対応計画を更新する

インシデント対応計画やハンドブックに、暗号通貨マイニング攻撃への対応方法を規定するガイダンスが記載されるようにしてください。たとえば、プランに以下が含まれるようにします。

  • Cloud カスタマーケアでサポートケースを登録し、Google テクニカル アカウント マネージャー(TAM)に連絡する方法。サポート アカウントがない場合は、利用可能なサポートプランを確認して、サポート アカウントを作成してください。
  • 正規のハイ パフォーマンス コンピューティング(HPC)ワークロードと暗号通貨マイニング攻撃の違いを確認する方法。たとえば、HPC が有効になっているプロジェクトにタグを付け、予期しない費用の増加のアラートを設定できます。
  • Google Cloud 認証情報の不正使用に対処する方法。
  • 感染したシステムを隔離し、正常なバックアップから復元する方法
  • 攻撃を調査し対応するために、組織内で通知する必要がある人物。
  • 過去に記録したアクティビティに関して記録する必要がある情報。
  • 修復アクティビティによって効率的にマイニング アクティビティが取り除かれ、攻撃につながった最初の脆弱性に対処したことを確認する方法。
  • Cloud カスタマーケアから送信されたアラートに対応する方法。詳細については、ポリシー違反についてのよくある質問をご覧ください。

詳細については、攻撃への対応と復旧をご覧ください。

障害復旧計画を実装する

暗号通貨マイニング攻撃に備えるために、事業継続計画障害復旧計画を完成させ、インシデント対応ハンドブックを作成し、机上演習を行います。

不正な暗号通貨マイニングが発生した場合は、最初の侵害の原因となった脅威ベクトルに対処できることと、既知の正常な状態から環境を再構築できることを確認します。障害復旧計画では、既知の正常な状態を判断できるようにし、攻撃者が同じ脆弱性を繰り返し使用してリソースを悪用できないようにする必要があります。

次のステップ