Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
checkov — Strumento di analisi statica per infrastruttura come codice che rileva configurazioni errate del cloud, vulnerabilità e segreti attraverso Terraform, Kubernetes, CloudFormation e immagini contenitore durante la fase di build. | Kitploit
Strumenti/GitHubGitHub/bridgecrewio/checkov
Analisi StaticaScanner di VulnerabilitàSicurezza dei ContenitoriAnalisi del CodiceSicurezza CloudDevSecOpsRilevamento SegretiSicurezza della Supply ChainConfigurazione Errata
GitHubbridgecrewio/checkov

checkov

Strumento di analisi statica per infrastruttura come codice che rileva configurazioni errate del cloud, vulnerabilità e segreti attraverso Terraform, Kubernetes, CloudFormation e immagini contenitore durante la fase di build.

8.9k1.4k9h 5m faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Vedi RepositorySito web

checkov

Maintained by Prisma Cloud build status security status code_coverage docs PyPI Python Version Terraform Version Downloads Docker Pulls slack-community

Checkov è uno strumento di analisi statica del codice per infrastructure as code (IaC) e anche uno strumento di software composition analysis (SCA) per immagini e pacchetti open source.

Analizza l'infrastruttura cloud predisposta utilizzando Terraform, Terraform plan, Cloudformation, AWS SAM, Kubernetes, Helm charts, Kustomize, Dockerfile, Serverless, Bicep, OpenAPI, ARM Templates, o OpenTofu e rileva misconfigurazioni di sicurezza e conformità utilizzando una scansione basata su grafo.

Esegue una Software Composition Analysis (SCA) scanning che consiste in un'analisi di pacchetti open source e immagini per Common Vulnerabilities and Exposures (CVE).

Checkov alimenta anche Prisma Cloud Application Security, la piattaforma incentrata sugli sviluppatori che codifica e semplifica la sicurezza cloud lungo tutto il ciclo di sviluppo. Prisma Cloud identifica, corregge e previene le misconfigurazioni nelle risorse cloud e nei file infrastructure-as-code.

Indice

  • Features
  • Screenshots
  • Primi passi
  • Disclaimer
  • Supporto
  • Migrazione - v2 a v3

Caratteristiche

  • Oltre 1000 policy integrate coprono le best practice di sicurezza e conformità per AWS, Azure e Google Cloud.
  • Analizza file modello Terraform, Terraform Plan, Terraform JSON, CloudFormation, AWS SAM, Kubernetes, Helm, Kustomize, Dockerfile, Serverless framework, Ansible, Bicep, ARM e OpenTofu.
  • Analizza file di workflow Argo Workflows, Azure Pipelines, BitBucket Pipelines, Circle CI Pipelines, GitHub Actions e GitLab CI.
  • Supporta policy sensibili al contesto basate su scansione in memoria basata su grafo.
  • Supporta il formato Python per policy di attributi e il formato YAML sia per policy di attributi che composite.
  • Rileva credenziali AWS in EC2 Userdata, variabili d'ambiente Lambda e provider Terraform.
  • Identifica segreti utilizzando espressioni regolari, parole chiave e rilevamento basato su entropia.
  • Valuta le impostazioni del provider Terraform per regolare la creazione, gestione e aggiornamenti di IaaS, PaaS o SaaS gestiti tramite Terraform.
  • Le policy supportano la valutazione delle variabili al loro valore predefinito opzionale.
  • Supporta la soppressione in linea di rischi accettati o falsi positivi per ridurre fallimenti ricorrenti nella scansione. Supporta anche lo skip globale tramite CLI.
  • Output attualmente disponibile come CLI, CycloneDX, JSON, JUnit XML, CSV, SARIF e markdown di GitHub, con collegamento a guide per la correzione.

Screenshot

Risultati scansione in CLI

scan-screenshot

Risultato scansione pianificata in Jenkins

jenikins-screenshot

Primi passi

Requisiti

  • Python >= 3.9, <=3.12
  • Terraform >= 0.12

Installazione

Per installare pip segui la documentazione ufficiale```sh pip3 install checkov

root@kitploit:~
Alcuni ambienti (ad esempio, Debian 12) potrebbero richiedere di installare Checkov in un ambiente virtuale.```sh
# Create and activate a virtual environment
python3 -m venv /path/to/venv/checkov
cd /path/to/venv/checkov
source ./bin/activate

# Install Checkov with pip
pip install checkov

# Optional: Create a symlink for easy access
sudo ln -s /path/to/venv/checkov/bin/checkov /usr/local/bin/checkov

o con Homebrew (macOS o Linux)```sh brew install checkov

root@kitploit:~
### Abilitare l'autocompletamento bash```sh
source <(register-python-argcomplete checkov)

Aggiornamento

se hai installato checkov con pip3```sh pip3 install -U checkov

root@kitploit:~
o con Homebrew```sh
brew upgrade checkov

Configura una cartella o un file di input```sh

checkov --directory /user/path/to/iac/code

root@kitploit:~
Oppure un file o file specifici```sh
checkov --file /user/tf/example.tf

O```sh checkov -f /user/cloudformation/example1.yml -f /user/cloudformation/example2.yml

root@kitploit:~
Oppure un file plan di terraform in formato json```sh
terraform init
terraform plan -out tf.plan
terraform show -json tf.plan  > tf.json
checkov -f tf.json

Nota: il file di output tf.json di terraform show sarà una singola riga. Per questo motivo tutti i risultati verranno riportati con numero di riga 0 da Checkov```sh check: CKV_AWS_21: "Ensure all data stored in the S3 bucket have versioning enabled" FAILED for resource: aws_s3_bucket.customer File: /tf/tf.json:0-0 Guide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/s3-policies/s3-16-enable-versioning

root@kitploit:~
Se hai installato `jq` puoi convertire un file json in più righe con il seguente comando:```sh
terraform show -json tf.plan | jq '.' > tf.json

Il risultato della scansione sarebbe molto più facile da usare.```sh checkov -f tf.json Check: CKV_AWS_21: "Ensure all data stored in the S3 bucket have versioning enabled" FAILED for resource: aws_s3_bucket.customer File: /tf/tf1.json:224-268 Guide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/s3-policies/s3-16-enable-versioning

root@kitploit:~
	225 |               "values": {
	226 |                 "acceleration_status": "",
	227 |                 "acl": "private",
	228 |                 "arn": "arn:aws:s3:::mybucket",
root@kitploit:~
In alternativa, specifica la root del repository dei file hcl utilizzati per generare il file di piano, usando il flag `--repo-root-for-plan-enrichment`, per arricchire l'output con il percorso file appropriato, i numeri di riga e il blocco di codice della/e risorsa/e. Un ulteriore vantaggio è che le soppressioni dei controlli verranno gestite di conseguenza.```sh
checkov -f tf.json --repo-root-for-plan-enrichment /user/path/to/iac/code

Esempio di risultato della scansione (CLI)```sh

Passed Checks: 1, Failed Checks: 1, Suppressed Checks: 0 Check: "Ensure all data stored in the S3 bucket is securely encrypted at rest" /main.tf: Passed for resource: aws_s3_bucket.template_bucket Check: "Ensure all data stored in the S3 bucket is securely encrypted at rest" /../regionStack/main.tf: Failed for resource: aws_s3_bucket.sls_deployment_bucket_name

root@kitploit:~
Inizia a usare Checkov leggendo la pagina [Getting Started](https://github.com/bridgecrewio/checkov/blob/main/docs/1.Welcome/Quick%20Start.md).

### Usare Docker```sh
docker pull bridgecrew/checkov
docker run --tty --rm --volume /user/tf:/tf --workdir /tf bridgecrew/checkov --directory /tf

Nota: se stai usando Python 3.6 (versione predefinita in Ubuntu 18.04) checkov non funzionerà e fallirà con il messaggio di errore ModuleNotFoundError: No module named 'dataclasses'. In questo caso, puoi usare la versione docker.

Nota che in alcuni casi reindirizzare l'output di docker run --tty in un file - ad esempio, se si vuole salvare l'output JUnit di Checkov in un file - causerà la stampa di caratteri di controllo extra. Questo può rompere il parsing del file. Se incontri questo problema, rimuovi il flag --tty.

Il flag --workdir /tf è opzionale per cambiare la directory di lavoro nel volume montato. Se stai usando l'output SARIF -o sarif, questo produrrà il file results.sarif nel volume montato (/user/tf nell'esempio precedente). Se non includi quel flag, la directory di lavoro sarà "/".

Esecuzione o salto dei controlli

Utilizzando i flag da riga di comando, puoi specificare di eseguire solo controlli nominati (allow list) o eseguire tutti i controlli tranne quelli elencati (deny list). Se stai usando l'integrazione con la piattaforma tramite chiave API, puoi anche specificare una soglia di gravità per saltare e/o includere. Inoltre, poiché i file json non possono contenere commenti, è possibile passare un pattern regex per saltare la scansione dei segreti nei file json.

Consulta la documentazione per informazioni più dettagliate su come questi flag funzionano insieme.

Examples

Consente l'esecuzione solo dei due controlli specificati:```sh checkov --directory . --check CKV_AWS_20,CKV_AWS_57

root@kitploit:~
Esegui tutti i controlli tranne quello specificato:```sh
checkov -d . --skip-check CKV_AWS_20

Esegui tutti i controlli eccetto quelli con pattern specificati:```sh checkov -d . --skip-check CKV_AWS*

root@kitploit:~
Esegui tutti i controlli con gravità MEDIA o superiore (richiede chiave API):```sh
checkov -d . --check MEDIUM --bc-api-key ...

Esegui tutti i controlli con gravità MEDIUM o superiore, così come il controllo CKV_123 (assumi che questo sia un controllo di gravità LOW):```sh checkov -d . --check MEDIUM,CKV_123 --bc-api-key ...

root@kitploit:~
Salta tutti i controlli con gravità MEDIUM o inferiore:```sh
checkov -d . --skip-check MEDIUM --bc-api-key ...

Salta tutti i controlli con gravità MEDIA o inferiore, così come il controllo CKV_789 (supponendo che sia un controllo ad alta gravità):```sh checkov -d . --skip-check MEDIUM,CKV_789 --bc-api-key ...

root@kitploit:~
Esegui tutti i controlli che hanno gravità MEDIUM o superiore, ma salta il controllo CKV_123 (si assume che questa sia una gravità MEDIUM o superiore):```sh
checkov -d . --check MEDIUM --skip-check CKV_123 --bc-api-key ...

Esegui il controllo CKV_789, ma saltalo se è di gravità media (la logica di --check viene sempre applicata prima di --skip-check)```sh checkov -d . --skip-check MEDIUM --check CKV_789 --bc-api-key ...

root@kitploit:~
Per i carichi di lavoro Kubernetes, puoi anche utilizzare spazi dei nomi allow/deny.  Ad esempio, non riportare alcun risultato per lo
spazio dei nomi kube-system:```sh
checkov -d . --skip-check kube-system

Esegui una scansione di un'immagine container. Prima, scarica o crea l'immagine, poi fai riferimento ad essa tramite l'hash, l'ID o nome:tag:```sh checkov --framework sca_image --docker-image sha256:1234example --dockerfile-path /Users/path/to/Dockerfile --repo-id ... --bc-api-key ...

checkov --docker-image :tag --dockerfile-path /User/path/to/Dockerfile --repo-id ... --bc-api-key ...

root@kitploit:~
Puoi anche usare il flag --image per scansionare l'immagine del contenitore invece di --docker-image per shortener:```sh
checkov --image <image-name>:tag --dockerfile-path /User/path/to/Dockerfile --repo-id ... --bc-api-key ...

Esegui una scansione SCA dei pacchetti in un repo:```sh checkov -d . --framework sca_package --bc-api-key ... --repo-id <repo_id(arbitrary)>

root@kitploit:~
Eseguire una scansione di una directory con variabili d'ambiente che rimuovono il buffering, aggiungendo log di livello debug:```sh
PYTHONUNBUFFERED=1 LOG_LEVEL=DEBUG checkov -d .

OPPURE abilita le variabili d'ambiente per più esecuzioni```sh export PYTHONUNBUFFERED=1 LOG_LEVEL=DEBUG checkov -d .

root@kitploit:~
Esegui la scansione dei segreti su tutti i file in MyDirectory. Salta il controllo CKV_SECRET_6 sui file json il cui suffisso è DontScan```sh
checkov -d /MyDirectory --framework secrets --repo-id ... --bc-api-key ... --skip-check CKV_SECRET_6:.*DontScan.json$

Esegui la scansione dei segreti su tutti i file in MyDirectory. Salta il controllo CKV_SECRET_6 sui file json che contengono "skip_test" nel percorso.```sh checkov -d /MyDirectory --framework secrets --repo-id ... --bc-api-key ... --skip-check CKV_SECRET_6:.*skip_test.*json$

root@kitploit:~
È possibile mascherare valori dai risultati di scansione fornendo un file di configurazione (usando il flag --config-file) con una voce di mascheramento. Il mascheramento può applicarsi a risorsa & valore (o più valori, separati da una virgola). Esempi:```sh
mask:
- aws_instance:user_data
- azurerm_key_vault_secret:admin_password,user_passwords

Nell'esempio sopra, i seguenti valori saranno mascherati:

  • user_data per la risorsa aws_instance
  • sia admin_password che user_passwords per azurerm_key_vault_secret

Soppressione/Ignorare un controllo

Come qualsiasi strumento di analisi statica, è limitato dal suo ambito di analisi. Ad esempio, se una risorsa è gestita manualmente o utilizzando strumenti di gestione della configurazione successivi, la soppressione può essere inserita come una semplice annotazione del codice.

Formato del commento di soppressione

Per saltare un controllo su un dato blocco di definizione Terraform o risorsa CloudFormation, applicare il seguente modello di commento all'interno del suo ambito:

checkov:skip=<check_id>:<suppression_comment>

  • <check_id> è uno degli [scanner di controllo disponibili](docs/5.Policy Index/all.md)
  • <suppression_comment> è un motivo opzionale di soppressione da includere nell'output

Esempio

Il seguente commento salta il controllo CKV_AWS_20 sulla risorsa identificata da foo-bucket, dove la scansione verifica se un bucket S3 di AWS è privato. Nell'esempio, il bucket è configurato con accesso in lettura pubblico; aggiungendo il commento di soppressione si saltarebbe il controllo appropriato invece di far fallire il controllo.```hcl-terraform resource "aws_s3_bucket" "foo-bucket" { region = var.region #checkov:skip=CKV_AWS_20:The bucket is a public static content host bucket = local.bucket_name force_destroy = true acl = "public-read" }

root@kitploit:~
L'output ora conterrebbe una voce di risultato del controllo ``SKIPPED``:```bash
...
...
Check: "S3 Bucket has an ACL defined which allows public access."
	SKIPPED for resource: aws_s3_bucket.foo-bucket
	Suppress comment: The bucket is a public static content host
	File: /example_skip_acl.tf:1-25

...

Per saltare più controlli, aggiungi ciascuno come nuova riga.``` #checkov:skip=CKV2_AWS_6 #checkov:skip=CKV_AWS_20:The bucket is a public static content host

root@kitploit:~
Per sopprimere i controlli nei manifest Kubernetes, vengono utilizzate annotazioni con il seguente formato:
`checkov.io/skip#: <check_id>=<suppression_comment>`

Per esempio:```bash
apiVersion: v1
kind: Pod
metadata:
  name: mypod
  annotations:
    checkov.io/skip1: CKV_K8S_20=I don't care about Privilege Escalation :-O
    checkov.io/skip2: CKV_K8S_14
    checkov.io/skip3: CKV_K8S_11=I have not set CPU limits as I want BestEffort QoS
spec:
  containers:
...

Registrazione

Per una registrazione dettagliata su stdout, imposta la variabile d'ambiente LOG_LEVEL su DEBUG.

Il valore predefinito è LOG_LEVEL=WARNING.

Ignorare le directory

Per ignorare file o directory, usa l'argomento --skip-path, che può essere specificato più volte. Questo argomento accetta espressioni regolari per percorsi relativi alla directory di lavoro corrente. Puoi usarlo per ignorare intere directory e/o file specifici.

Per impostazione predefinita, vengono ignorate tutte le directory chiamate node_modules, .terraform e .serverless, oltre a tutti i file o directory che iniziano con .. Per annullare l'ignoranza delle directory che iniziano con ., sovrascrivi la variabile d'ambiente CKV_IGNORE_HIDDEN_DIRECTORIES con export CKV_IGNORE_HIDDEN_DIRECTORIES=false

Puoi sovrascrivere il set predefinito di directory da ignorare impostando la variabile d'ambiente CKV_IGNORED_DIRECTORIES. Nota che se vuoi preservare questa lista e aggiungerla, devi includere questi valori. Ad esempio, CKV_IGNORED_DIRECTORIES=mynewdir ignorerà solo quella directory, ma non le altre menzionate sopra. Questa variabile è una funzionalità legacy; consigliamo di usare il flag --skip-file.

Output della console

L'output della console è a colori per impostazione predefinita; per passare a un output monocromatico, imposta la variabile d'ambiente: ANSI_COLORS_DISABLED

Estensione per VS Code

Se vuoi usare Checkov all'interno di VS Code, prova l'estensione Prisma Cloud.

Configurazione tramite file di configurazione

Checkov può essere configurato utilizzando un file di configurazione YAML. Per impostazione predefinita, checkov cerca un file .checkov.yaml o .checkov.yml nei seguenti luoghi in ordine di precedenza:

  • Directory in cui viene eseguito checkov. (--directory)
  • Directory di lavoro corrente in cui viene chiamato checkov.
  • Directory home dell'utente.

Attenzione: è una buona pratica che il file di configurazione di checkov venga caricato da una fonte attendibile composta da un'identità verificata, in modo che i file scansionati, gli ID dei controlli e i controlli personalizzati caricati siano come desiderato.

Gli utenti possono anche passare il percorso di un file di configurazione tramite la riga di comando. In questo caso, gli altri file di configurazione verranno ignorati. Per esempio:```sh checkov --config-file path/to/config.yaml

root@kitploit:~
Gli utenti possono anche creare un file di configurazione usando il comando `--create-config`, che prende gli attuali argomenti della riga di comando e li scrive in un percorso specificato. Per esempio:```sh
checkov --compact --directory test-dir --docker-image sample-image --dockerfile-path Dockerfile --download-external-modules True --external-checks-dir sample-dir --quiet --repo-id prisma-cloud/sample-repo --skip-check CKV_DOCKER_3,CKV_DOCKER_2 --skip-framework dockerfile secrets --soft-fail --branch develop --check CKV_DOCKER_1 --create-config /Users/sample/config.yml

Creerà un file config.yaml che assomiglia a questo:```yaml branch: develop check:

  • CKV_DOCKER_1 compact: true directory:
  • test-dir docker-image: sample-image dockerfile-path: Dockerfile download-external-modules: true evaluate-variables: true external-checks-dir:
  • sample-dir external-modules-download-path: .external_modules framework:
  • all output: cli quiet: true repo-id: prisma-cloud/sample-repo skip-check:
  • CKV_DOCKER_3
  • CKV_DOCKER_2 skip-framework:
  • dockerfile
  • secrets soft-fail: true
root@kitploit:~
Gli utenti possono anche usare il flag `--show-config` per visualizzare tutti gli args e le impostazioni e la loro provenienza, ovvero riga di comando, file di configurazione, variabile d'ambiente o default. Per esempio:```sh
checkov --show-config

Mostrerà:```sh Command Line Args: --show-config Environment Variables: BC_API_KEY: your-api-key Config File (/Users/sample/.checkov.yml): soft-fail: False branch: master skip-check: ['CKV_DOCKER_3', 'CKV_DOCKER_2'] Defaults: --output: cli --framework: ['all'] --download-external-modules:False --external-modules-download-path:.external_modules --evaluate-variables:True

root@kitploit:~
## Contribuire

I contributi sono benvenuti!

Inizia rivedendo le [linee guida per i contributi](https://github.com/bridgecrewio/checkov/blob/main/CONTRIBUTING.md). Dopodiché, dai un'occhiata a una [buona prima issue](https://github.com/bridgecrewio/checkov/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22).

Puoi persino iniziare con uno sviluppo con un clic nel tuo browser tramite Gitpod al seguente link:

[![Apri in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/bridgecrewio/checkov)

Desideri contribuire con nuovi controlli? Scopri come scrivere un nuovo controllo (noto anche come policy) [qui](https://github.com/bridgecrewio/checkov/blob/main/docs/6.Contribution/Contribution%20Overview.md).

## Dichiarazione di non responsabilità
`checkov` non salva, pubblica o condivide con nessuno informazioni identificabili dei clienti.  
Nessuna informazione identificabile dei clienti viene utilizzata per interrogare le guide accessibili pubblicamente di Prisma Cloud.
`checkov` utilizza l'API di Prisma Cloud per arricchire i risultati con collegamenti alle guide di remediation.
Per saltare questa chiamata API, utilizza il flag `--skip-download`.

## Supporto

[Prisma Cloud](https://www.prismacloud.io/?utm_source=github&utm_medium=organic_oss&utm_campaign=checkov) costruisce e mantiene Checkov per rendere la policy-as-code semplice e accessibile.

Inizia con la nostra [Documentazione](https://www.checkov.io/1.Welcome/Quick%20Start.html) per tutorial rapidi ed esempi.

## Supporto Versioni Python
Seguiamo il ciclo di supporto ufficiale di Python e utilizziamo test automatizzati per le versioni supportate di Python.
Ciò significa che attualmente supportiamo Python 3.9 - 3.13, inclusi.
Nota che Python 3.8 ha raggiunto la fine del ciclo di vita (EOL) nell'ottobre 2024 e Python 3.9 raggiungerà l'EOL nell'ottobre 2025.
Se incontri problemi con qualsiasi versione di Python non EOL, apri una Issue.
Scarica lo strumento