Translated ['src/banners/hacktricks-training.md', 'src/pentesting-ci-cd/

This commit is contained in:
Translator
2025-01-02 01:27:43 +00:00
parent 5dd38218dd
commit 38e365814e
209 changed files with 1699 additions and 1697 deletions

View File

@@ -1,8 +1,8 @@
# Serverless.com Security
# Sicurezza di Serverless.com
{{#include ../banners/hacktricks-training.md}}
## Informazioni di base
## Informazioni di Base
### Organizzazione
@@ -32,7 +32,7 @@ handler: handler.hello
<summary>Funzione</summary>
Una **Funzione** rappresenta una singola funzione serverless, come una funzione AWS Lambda. Contiene il codice che viene eseguito in risposta agli eventi.
Una **Funzione** rappresenta una singola funzione serverless, come una funzione AWS Lambda. Contiene il codice che viene eseguito in risposta a eventi.
È definita nella sezione `functions` in `serverless.yml`, specificando il gestore, il runtime, gli eventi, le variabili d'ambiente e altre impostazioni.
```yaml
@@ -52,7 +52,7 @@ method: get
**Eventi** sono attivatori che invocano le tue funzioni serverless. Definiscono come e quando una funzione dovrebbe essere eseguita.
I tipi di eventi comuni includono richieste HTTP, eventi programmati (lavori cron), eventi del database, caricamenti di file e altro ancora.
I tipi di eventi comuni includono richieste HTTP, eventi programmati (cron job), eventi del database, caricamenti di file e altro ancora.
```yaml
functions:
hello:
@@ -138,9 +138,9 @@ plugins:
<details>
<summary>Layers</summary>
<summary>Strati</summary>
**Layers** ti permettono di impacchettare e gestire codice condiviso o dipendenze separatamente dalle tue funzioni. Questo promuove la riutilizzabilità e riduce le dimensioni dei pacchetti di distribuzione. Sono definiti nella sezione `layers` e referenziati dalle funzioni.
**Strati** ti permettono di impacchettare e gestire codice condiviso o dipendenze separatamente dalle tue funzioni. Questo promuove la riutilizzabilità e riduce le dimensioni dei pacchetti di distribuzione. Sono definiti nella sezione `layers` e referenziati dalle funzioni.
```yaml
layers:
commonLibs:
@@ -399,7 +399,7 @@ Type: String
```
</details>
5. Il tutorial chiede di creare il file `createCustomer.js` che sostanzialmente creerà un nuovo endpoint API gestito dal nuovo file JS e chiede di modificare il file `serverless.yml` per far sì che generi un **nuovo tavolo DynamoDB**, definisca una **variabile d'ambiente**, il ruolo che utilizzerà le lambdas generate.
5. Il tutorial chiede di creare il file `createCustomer.js` che sostanzialmente creerà un nuovo endpoint API gestito dal nuovo file JS e chiede di modificare il file `serverless.yml` per far sì che generi una **nuova tabella DynamoDB**, definisca una **variabile d'ambiente**, il ruolo che utilizzerà le lambdas generate.
{{#tabs }}
{{#tab name="createCustomer.js" }}
@@ -482,10 +482,10 @@ TableName: ${self:service}-customerTable-${sls:stage}
{{#endtabs }}
6. Distribuiscilo eseguendo **`serverless deploy`**
1. Il deployment verrà eseguito tramite un CloudFormation Stack
1. La distribuzione verrà eseguita tramite un CloudFormation Stack
2. Nota che le **lambdas sono esposte tramite API gateway** e non tramite URL diretti
7. **Testalo**
1. Il passaggio precedente stamperà gli **URL** dove le tue funzioni lambda degli endpoint API sono state distribuite
1. Il passaggio precedente stamperà gli **URL** dove le funzioni lambda dei tuoi endpoint API sono state distribuite
## Revisione della Sicurezza di Serverless.com
@@ -527,7 +527,7 @@ Quando non vengono specificati permessi per una funzione Lambda, verrà creato u
#### **Strategie di Mitigazione**
- **Principio del Minimo Privilegio:** Assegna solo i permessi necessari a ciascuna funzione.
- **Principio del Minimo Privilegio:** Assegna solo le autorizzazioni necessarie a ciascuna funzione.
```yaml
provider:
@@ -549,16 +549,16 @@ Resource: arn:aws:dynamodb:${aws:region}:${aws:accountId}:table/${self:service}-
---
### **Segreti Insecure e Gestione della Configurazione**
### **Segreti e Gestione della Configurazione Insicuri**
Memorizzare informazioni sensibili (ad es., chiavi API, credenziali del database) direttamente in **`serverless.yml`** o nel codice può portare a esposizione se i repository vengono compromessi.
Il modo **raccomandato** per memorizzare variabili d'ambiente nel file **`serverless.yml`** di serverless.com (al momento della scrittura) è utilizzare i provider `ssm` o `s3`, che consentono di ottenere i **valori dell'ambiente da queste fonti al momento del deployment** e **configurare** le variabili d'ambiente delle **lambdas** con il **testo chiaro dei valori**!
Il modo **raccomandato** per memorizzare variabili di ambiente nel file **`serverless.yml`** di serverless.com (al momento della scrittura) è utilizzare i provider `ssm` o `s3`, che consentono di ottenere **i valori di ambiente da queste fonti al momento del deployment** e **configurare** le variabili di ambiente delle **lambdas** con il **testo chiaro dei valori**!
> [!CAUTION]
> Pertanto, chiunque abbia permessi per leggere la configurazione delle lambdas all'interno di AWS sarà in grado di **accedere a tutte queste variabili d'ambiente in testo chiaro!**
> Pertanto, chiunque abbia autorizzazioni per leggere la configurazione delle lambdas all'interno di AWS sarà in grado di **accedere a tutte queste variabili di ambiente in chiaro!**
Ad esempio, il seguente esempio utilizzerà SSM per ottenere una variabile d'ambiente:
Ad esempio, il seguente esempio utilizzerà SSM per ottenere una variabile di ambiente:
```yaml
provider:
environment:
@@ -661,7 +661,7 @@ headers:
- Content-Type
```
- **Utilizzare Firewall per Applicazioni Web (WAF):** Filtrare e monitorare le richieste HTTP per schemi malevoli.
- **Utilizzare Firewall per Applicazioni Web (WAF):** Filtrare e monitorare le richieste HTTP per modelli malevoli.
---
@@ -707,12 +707,12 @@ SSEEnabled: true
```
- **Crittografare i Dati in Transito:** Utilizzare HTTPS/TLS per tutte le trasmissioni di dati.
- **Comunicazione API Sicura:** Applicare protocolli di crittografia e convalidare i certificati.
- **Gestire Sicuramente le Chiavi di Crittografia:** Utilizzare servizi di gestione delle chiavi e ruotare le chiavi regolarmente.
- **Comunicazione API Sicura:** Forzare protocolli di crittografia e convalidare certificati.
- **Gestire le Chiavi di Crittografia in Modo Sicuro:** Utilizzare servizi di gestione delle chiavi e ruotare le chiavi regolarmente.
---
### **Mancanza di Gestione Adeguata degli Errori**
### **Mancanza di Gestione degli Errori Adeguata**
Messaggi di errore dettagliati possono rivelare informazioni sensibili sull'infrastruttura o sul codice, mentre eccezioni non gestite possono portare a crash dell'applicazione.
@@ -746,14 +746,14 @@ Configurazioni di deployment esposte o accesso non autorizzato a pipeline CI/CD
#### **Strategie di Mitigazione**
- **Sicurezza delle Pipeline CI/CD:** Implementare controlli di accesso rigorosi, autenticazione a più fattori (MFA) e audit regolari.
- **Memorizzare le Configurazioni in Sicurezza:** Mantenere i file di deployment privi di segreti codificati e dati sensibili.
- **Utilizzare Strumenti di Sicurezza per Infrastructure as Code (IaC):** Impiegare strumenti come **Checkov** o **Terraform Sentinel** per applicare politiche di sicurezza.
- **Pipeline CI/CD Sicure:** Implementare controlli di accesso rigorosi, autenticazione a più fattori (MFA) e audit regolari.
- **Memorizzare le Configurazioni in Modo Sicuro:** Mantenere i file di deployment privi di segreti codificati e dati sensibili.
- **Utilizzare Strumenti di Sicurezza per l'Infrastructure as Code (IaC):** Impiegare strumenti come **Checkov** o **Terraform Sentinel** per far rispettare le politiche di sicurezza.
- **Deployment Immutabili:** Prevenire modifiche non autorizzate dopo il deployment adottando pratiche di infrastruttura immutabile.
---
### **Vulnerabilità in Plugin ed Estensioni**
### **Vulnerabilità nei Plugin e nelle Estensioni**
Utilizzare plugin di terze parti non verificati o malevoli può introdurre vulnerabilità nelle tue applicazioni serverless.
@@ -774,14 +774,14 @@ Funzioni pubblicamente accessibili o API senza restrizioni possono essere sfrutt
- **Limitare l'Accesso alle Funzioni:** Utilizzare VPC, gruppi di sicurezza e regole del firewall per limitare l'accesso a fonti fidate.
- **Implementare Autenticazione Robusta:** Assicurarsi che tutti gli endpoint esposti richiedano una corretta autenticazione e autorizzazione.
- **Utilizzare Sicuramente gli API Gateway:** Configurare gli API Gateway per applicare politiche di sicurezza, inclusa la validazione degli input e la limitazione della frequenza.
- **Utilizzare Sicuramente gli API Gateway:** Configurare gli API Gateway per far rispettare le politiche di sicurezza, inclusa la validazione degli input e la limitazione della frequenza.
- **Disabilitare Endpoint Non Utilizzati:** Rivedere regolarmente e disabilitare eventuali endpoint che non sono più in uso.
---
### **Permessi Eccessivi per Membri del Team e Collaboratori Esterni**
Concedere permessi eccessivi ai membri del team e ai collaboratori esterni può portare ad accessi non autorizzati, violazioni dei dati e uso improprio delle risorse. Questo rischio è amplificato in ambienti in cui più individui hanno livelli di accesso variabili, aumentando la superficie di attacco e il potenziale per minacce interne.
Concedere permessi eccessivi a membri del team e collaboratori esterni può portare ad accessi non autorizzati, violazioni dei dati e uso improprio delle risorse. Questo rischio è aumentato in ambienti in cui più individui hanno livelli di accesso variabili, aumentando la superficie di attacco e il potenziale per minacce interne.
#### **Strategie di Mitigazione**