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
metahub — Strumento automatizzato per l'arricchimento dei risultati di sicurezza e la valutazione dell'impatto per AWS. Arricchisce i dati sulle vulnerabilità con contesto delle risorse, associazioni e tag per calcolare punteggi di impatto contestuali per una remediation prioritaria. | Kitploit
Strumenti/GitHubGitHub/gabrielsoltz/metahub
Scanner di VulnerabilitàAnalisi delle VulnerabilitàAudit di ConfigurazioneSicurezza CloudThreat IntelligenceRisposta agli Incidenti
GitHubgabrielsoltz/metahub

metahub

Strumento automatizzato per l'arricchimento dei risultati di sicurezza e la valutazione dell'impatto per AWS. Arricchisce i dati sulle vulnerabilità con contesto delle risorse, associazioni e tag per calcolare punteggi di impatto contestuali per una remediation prioritaria.

Vedi Repository
177195 mesi 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

MetaHub

MetaHub è uno strumento automatico di arricchimento contestuale delle scoperte di sicurezza e di valutazione dell'impatto per la gestione delle vulnerabilità. Puoi usarlo con AWS Security Hub o qualsiasi scanner di sicurezza compatibile con ASFF. Smetti di fare affidamento su gravità inutili e passa a definizioni di punteggio di impatto basate sul TUO contesto.

AWS ECR Gallery

Indice

  • Descrizione
  • Avvio Rapido
  • Contesto
  • Impatto
  • Architettura di Alto Livello
  • Casi d'Uso
  • Configurazione
  • Esecuzione con Python
  • Esecuzione con Docker
  • Esecuzione con Lambda
  • Esecuzione con Azione Personalizzata di Security Hub
  • Autenticazione AWS
  • Configurazione di Security Hub
  • Configurazione del Contesto
  • Input
  • Output
  • Filtri
  • Azioni di Security Hub
  • Contribuire

Descrizione

MetaHub è uno strumento di sicurezza open source per la gestione delle vulnerabilità basata sul contesto di impatto. Può automatizzare il processo di contestualizzazione dei risultati di sicurezza in base al tuo ambiente e alle tue esigenze, al TUO contesto, identificare la proprietà e calcolare un punteggio di impatto basato su di esso che puoi utilizzare per definire la priorità (da dove iniziare?) e automazioni come rimedi, avvisi o ticket. Lo strumento è per ambienti AWS e puoi usarlo con AWS Security Hub o qualsiasi scanner compatibile con ASFF (come Prowler).

ℹ️ Esplora e amplia i nuovi Dashboard di MetaHub usando Powerpipe!

MetaHub descrive il tuo contesto connettendosi alle tue risorse interessate nei tuoi account interessati. Può descrivere informazioni sul tuo account AWS e organizzazione, i tag delle risorse interessate, gli eventi CloudTrail correlati, le configurazioni delle risorse interessate e tutte le loro associazioni: se stai contestualizzando un risultato di sicurezza che interessa un'istanza EC2, MetaHub si collegherà non solo a quell'istanza stessa ma anche ai suoi Ruoli IAM; da lì, si collegherà alle Policy IAM associate a quei ruoli. Si collegherà ai Security Group e analizzerà tutte le loro regole, la VPC e le Subnet in cui è in esecuzione l'istanza, i Volumi, gli Auto Scaling Group e altro. Puoi applicare filtri per automatizzare il rilevamento di altre risorse con le stesse proprietà e fare indagini approfondite.

Dopo aver recuperato tutte le informazioni dal tuo contesto, MetaHub valuterà le condizioni di impatto per tutte le tue risorse: esposizione, accesso, crittografia, stato, ambiente, applicazione e proprietario e sulla base di quei calcoli e in aggiunta alle informazioni sui risultati di sicurezza che interessano la risorsa tutti insieme, MetaHub genererà un punteggio per ogni risultato e risorsa interessata.

Guarda la seguente dashboard generata da MetaHub. Hai le risorse interessate, che raggruppano tutti i risultati di sicurezza che le interessano insieme e la gravità originale di ogni risultato. Dopo di che, hai il punteggio e tutti i criteri che MetaHub ha valutato per generare quel punteggio. Tutte queste informazioni sono filtrabili, ordinabili, raggruppabili, scaricabili e personalizzabili.

Il seguente è l'output JSON per un'istanza EC2; guarda come MetaHub organizza tutte le informazioni sul suo contesto insieme, sotto associazioni, config, tag, account e cloudtrail, e infine la chiave impatto con il punteggio e tutti i criteri valutati per generare quel punteggio.

Diagramma

MetaHub offre una gamma di modi per elencare, gestire e produrre i tuoi risultati di sicurezza per indagini, soppressioni, aggiornamenti e integrazione con altri strumenti. È progettato per essere utilizzato come strumento CLI o all'interno di flussi di lavoro automatizzati, come funzioni AWS Lambda. Supporta diversi output, alcuni di essi json programmatico, ma anche potenti html, xlsx e csv che puoi personalizzare.

Se usi AWS Security Hub, MetaHub si integra senza problemi e ne estende le funzionalità. Può essere utilizzato come Azione Personalizzata di Security Hub, supporta i filtri di AWS Security Hub, puoi gestire lo stato del flusso di lavoro dei tuoi risultati e puoi persino arricchire i tuoi risultati direttamente in AWS Security Hub.

MetaHub è progettato per essere utilizzato con AWS e supporta configurazioni multi-account. Puoi eseguire lo strumento da qualsiasi ambiente assumendo ruoli nel tuo account master di AWS Security Hub e nei tuoi account child/service. Questo ti consente di recuperare dati aggregati da più account utilizzando la tua implementazione multi-account di AWS Security Hub, mentre recuperi e arricchisci anche quei risultati con dati dagli account in cui sono in esecuzione le tue risorse interessate. Fai riferimento a Configurazione di Security Hub per maggiori informazioni.

Avvio Rapido

Leggi i tuoi risultati di sicurezza da AWS Security Hub con i filtri predefiniti ed esegue le opzioni di contesto predefinite:```bash ./metahub

root@kitploit:~
Legge un risultato di sicurezza specifico (filtrato per ID) da AWS Security Hub ed esegue le opzioni di contesto predefinite:```bash
./metahub --sh-filters Id=arn:aws:securityhub:us-east-1:123456789012:security-control/CloudFront.1/finding/8bd4d049-dcbc-445b-a5d1-595d8274b4c1

Legge tutti i risultati di sicurezza che riguardano una risorsa e che sono ATTIVI (filtrati per ResourceId e RecordState) da AWS Security Hub ed esegue le opzioni di contesto predefinite:```bash ./metahub --sh-filters RecordState=ACTIVE ResourceId=arn:aws:ec2:eu-west-1:123456789012:subnet/subnet-0b7d243ff90ebc03e

root@kitploit:~
Legge tutti i security findings che interessano un account AWS che sono ACTIVE (filtrati per AwsAccountId e RecordState) per risorse con un tag `Environment` e il valore `stg` ed esegue le opzioni di contesto `config` e `tags`.```bash
./metahub --sh-filters RecordState=ACTIVE AwsAccountId=123456789012 --mh-filters-tags Environment=stg --context config tags

Esecuzione rapida (Leggendo i risultati da un file ASFF di input)

Leggi i tuoi risultati di sicurezza da Prowler come file di input ed esegui le opzioni di contesto predefinite:```bash python3 prowler.py aws -M json-asff -q ./metahub --inputs file-asff --input-asff /path/to/prowler-findings.json.asff

root@kitploit:~
Legge i tuoi risultati di sicurezza da Powerpipe come file di input ed esegue le opzioni di contesto predefinite:```bash
powerpipe benchmark run aws_compliance.benchmark.all_controls --export asff
./metahub --inputs file-asff --input-asff /path/to/powerpipe-findings.json.asff

Leggi i tuoi risultati di sicurezza da Trivy come file di input ed esegui le opzioni di contesto predefinite:```bash export AWS_REGION=us-west-1 export AWS_ACCOUNT_ID=012345678901 trivy image --format template --template "@contrib/asff.tpl" -o trivy-findings.json.asff public.ecr.aws/n2p8q5p4/metahub:stable ./metahub --inputs file-asff --input-asff /path/to/trivy-findings.json.asff

root@kitploit:~
# Contesto

In **MetaHub**, il **contesto** si riferisce alle informazioni sulle risorse interessate come la loro **configurazione**, le **associazioni**, i **log**, i **tag** e l'**account**.

MetaHub non si ferma alla risorsa interessata ma analizza anche eventuali risorse associate o allegate. Ad esempio, se esiste un reperto di sicurezza su un Security Group, **MetaHub** analizzerà il Security Group e tutto ciò che è associato ad esso, come le istanze EC2 che lo utilizzano. Per ogni risorsa associata, **MetaHub** recupererà il suo contesto. Se il Security Group è associato a un'istanza EC2, **MetaHub** analizzerà l'istanza e tutte le sue associazioni, come i Ruoli IAM e le policy. Da un singolo reperto di sicurezza su un Security Group, **MetaHub** recupererà il contesto del Security Group, dell'istanza EC2, dei Ruoli IAM e delle Policy IAM. Questo è fondamentale per comprendere l'impatto dei tuoi reperti di sicurezza.

Il modulo **contesto** ha cinque parti principali: [**configurazione**](#config) (che include [**associazioni**](#associations)), [**tag**](#tags), [**cloudtrail**](#cloudtrail) e [**account**](#account). Per impostazione predefinita sono abilitati solo **configurazione**, **tag** e **account**, ma puoi modificare questo comportamento usando l'opzione `--context` (ad esempio usa `--context config tags cloudtrail account` per abilitare tutte le chiavi di contesto, o `--context config` per abilitare solo la chiave config e associazioni.):

## Configurazione

Sotto la chiave `config`, puoi trovare importanti configurazioni della risorsa interessata. Ad esempio, se la risorsa interessata è un bucket S3, troverai informazioni sulla sua bucket policy, sulle sue ACL, sulla sua configurazione di crittografia e altro. Se la risorsa interessata è un'istanza EC2, troverai informazioni sulla sua chiave, sui suoi IP pubblico e privato, sui suoi metadati e altro. Le informazioni di configurazione recuperate da **MetaHub** sono definite per tipo di risorsa. Se desideri aggiungere ulteriori informazioni di configurazione, consulta [contribuire](#contributing).

Puoi filtrare i tuoi reperti in base agli output config utilizzando l'opzione: `--mh-filters-config <key> {True/False}` (vedi [filtri config](#config-filters)).

<details>
  <summary>Esempio per una chiave config di un bucket S3</summary>```json
"config": {
  "resource_policy": {
    "Version": "2012-10-17",
    "Statement": [
      {
        "Sid": "Test",
        "Effect": "Allow",
        "Principal": {
          "Service": "config.amazonaws.com"
        },
        "Action": "s3:GetBucketAcl",
        "Resource": "arn:aws:s3:::metahub-bucket",
        "Condition": {
          "StringEquals": {
            "AWS:SourceAccount": "123456789012"
          }
        }
      },
    ]
  },
  "website_enabled": false,
  "bucket_acl": [
    {
      "Grantee": {
        "DisplayName": "gabriel.soltz",
        "ID": "1234564bd76c6c64080717b68eafaa588b41706daaf22d3d0705b398bd7cbd57",
        "Type": "CanonicalUser"
      },
      "Permission": "FULL_CONTROL"
    }
  ],
  "cannonical_user_id": "1234564bd76c6c64080717b68eafaa588b41706daaf22d3d0705b398bd7cbd57",
  "public_access_block_enabled": {
    "BlockPublicAcls": true,
    "IgnorePublicAcls": true,
    "BlockPublicPolicy": true,
    "RestrictPublicBuckets": true
  },
  "account_public_access_block_enabled": false,
  "public": false,
  "bucket_encryption": [
    {
      "ApplyServerSideEncryptionByDefault": {
        "SSEAlgorithm": "AES256"
      },
      "BucketKeyEnabled": false
    }
  ]
},

Associazioni

Sotto la chiave associations, troverai tutte le risorse associate della risorsa interessata. Ad esempio, se la risorsa interessata è un'istanza EC2, troverai risorse come: Gruppi di Sicurezza, Ruoli IAM, Volumi, VPC, Subnet, Gruppi di Auto Scaling. Se la risorsa interessata è un Ruolo IAM, troverai risorse come Politiche IAM, Utenti IAM, Gruppi IAM e altro ancora. Ogni volta che MetaHub trova un'associazione, si connetterà nuovamente alla risorsa associata e recupererà il suo contesto. Le associazioni sono fondamentali per comprendere il contesto e l'impatto dei tuoi reperti di sicurezza.

Puoi filtrare i tuoi reperti in base agli output delle associazioni utilizzando l'opzione: --mh-filters-config <key> {True/False} (vedi filtri di configurazione).

Esempio per una chiave associazioni di un'istanza EC2```json "associations": { "security_groups": { "arn:aws:ec2:eu-west-1:123456789012:security-group/sg-020cc749a58678e05": { "associations": { "vpcs": { "arn:aws:ec2:eu-west-1:123456789012:vpc/vpc-03cc56a1c2afb5760": { "associations": { "subnets": { "arn:aws:ec2:eu-west-1:123456789012:subnet/subnet-03d86f1ccd7729d85": {}, "arn:aws:ec2:eu-west-1:123456789012:subnet/subnet-0ccfb8dea658f49ec": {}, "arn:aws:ec2:eu-west-1:123456789012:subnet/subnet-05e85a7b0ec9e404c": {}, "arn:aws:ec2:eu-west-1:123456789012:subnet/subnet-0e177ea95bcc76256": {} } }, "config": { "cidr": "172.10.0.0/16", "default": false, "public": null } } }, "network_interfaces": { "arn:aws:ec2:eu-west-1:123456789012:network-interface/eni-041a6e5bb59c336ee": {} }, "instances": { "arn:aws:ec2:eu-west-1:123456789012:instance/i-018daeedcf06398c0": {} } }, "config": { "public_ips": [ "100.100.100.100" ], "managed_services": [], "its_referenced_by_a_security_group": false, "security_group_rules": [ { "SecurityGroupRuleId": "sgr-08cdc9fdac8fd1a5b", "GroupId": "sg-020cc749a58678e05", "GroupOwnerId": "123456789012", "IsEgress": true, "IpProtocol": "-1", "FromPort": -1, "ToPort": -1, "CidrIpv4": "0.0.0.0/0", "Tags": [] }, { "SecurityGroupRuleId": "sgr-0e6cd39169dc137ab", "GroupId": "sg-020cc749a58678e05", "GroupOwnerId": "123456789012", "IsEgress": false, "IpProtocol": "tcp", "FromPort": 22, "ToPort": 22, "CidrIpv4": "0.0.0.0/0", "Tags": [] } ], "public": true, "default": false, "attached": true, "resource_policy": null } }, }, "iam_roles": { "arn:aws:iam::123456789012:role/eu-west-1-stg-backend-iam-role": { "associations": { "iam_policies": { "arn:aws:iam::123456789012:policy/eu-west-1-stg-backend-iam-policy-cw": { "associations": { "iam_roles": { "arn:aws:iam::123456789012:role/eu-west-1-stg-backend-iam-role": {} }, "iam_groups": {}, "iam_users": {} }, "config": { "name": "eu-west-1-stg-backend-iam-policy-cw", "description": false, "customer_managed": true, "attached": true, "public": null, "resource_policy": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:*:*:*" ] } ] } } }, } }, "config": { "iam_inline_policies": {}, "instance_profile": "arn:aws:iam::123456789012:instance-profile/eu-west-1-stg-backend-iam-profile", "trust_policy": { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }, "permissions_boundary": false, "public": null, "resource_policy": null } } }, "volumes": { "arn:aws:ec2:eu-west-1:123456789012:volume/vol-0371a09e338f582da": { "associations": { "instances": { "arn:aws:ec2:eu-west-1:123456789012:instance/i-018daeedcf06398c0": {} } }, "config": { "encrypted": true, "attached": true, "public": null, "resource_policy": null } } }, "autoscaling_groups": { "arn:aws:autoscaling:eu-west-1:123456789012:autoScalingGroup/stg-backend-20201205160228428400000002": { "associations": { "instances": { "arn:aws:ec2:eu-west-1:123456789012:instance/i-018daeedcf06398c0": {} }, "launch_templates": { "arn:aws:ec2:eu-west-1:123456789012:launch-template/lt-06b73d2e77f10446f": {} }, "launch_configurations": {} }, "config": { "name": "stg-backend-20201205160228428400000002", "public": null, "resource_policy": null } } }, "vpcs": { "arn:aws:ec2:eu-west-1:123456789012:vpc/vpc-03cc56a1c2afb5760": { "associations": { "subnets": { "arn:aws:ec2:eu-west-1:123456789012:subnet/subnet-03d86f1ccd7729d85": {}, "arn:aws:ec2:eu-west-1:123456789012:subnet/subnet-0ccfb8dea658f49ec": {}, "arn:aws:ec2:eu-west-1:123456789012:subnet/subnet-05e85a7b0ec9e404c": {}, "arn:aws:ec2:eu-west-1:123456789012:subnet/subnet-0e177ea95bcc76256": {} } }, "config": { "cidr": "172.10.0.0/16", "default": false, "public": null } } }, "subnets": { "arn:aws:ec2:eu-west-1:123456789012:subnet/subnet-03d86f1ccd7729d85": { "associations": { "route_tables": { "arn:aws:ec2:eu-west-1:123456789012:route-table/rtb-0ebae6462f919943d": { "associations": {}, "config": { "default": false, "route_to_internet_gateway": [ { "DestinationCidrBlock": "0.0.0.0/0", "GatewayId": "igw-0790540d8d726f9d4", "Origin": "CreateRoute", "State": "active" } ], "route_to_nat_gateway": [], "route_to_transit_gateway": [], "route_to_vpc_peering": [], "public": null } } }, "network_interfaces": { "arn:aws:ec2:eu-west-1:123456789012:network-interface/eni-0e8918fa31d2acd55": {}, "arn:aws:ec2:eu-west-1:123456789012:network-interface/eni-0f6c936934fd9d6a6": {}, "arn:aws:ec2:eu-west-1:123456789012:network-interface/eni-041a6e5bb59c336ee": {}, "arn:aws:ec2:eu-west-1:123456789012:network-interface/eni-0e5f6cfdc7c286224": {} }, "instances": { "arn:aws:ec2:eu-west-1:123456789012:instance/i-018daeedcf06398c0": {} } }, "config": { "cidr": "172.11.11.0/24", "map_public_ip_on_launch_enabled": true, "default": false, "public": true, "resource_policy": null, "public_ips": [ "100.100.100.100", ], "managed_services": [ "ELB app/stg-alb-backend/3567d780bd062d75", "Interface for NAT Gateway nat-0805d9808347bba69" ], "attached": true } } }, } ```

Tag

Sotto la chiave tags, troverai tutti i tag associati alla risorsa interessata. MetaHub si basa su AWS Resource Groups Tagging API per interrogare i tag associati alle tue risorse. Nota che non tutti i tipi di risorsa AWS supportano questa API. Puoi consultare i servizi supportati.

I tag sono una parte cruciale per comprendere il tuo contesto. Le strategie di tagging spesso includono:

  • Ambiente (come Produzione, Staging, Sviluppo, ecc.)
  • Classificazione dei dati (come Riservato, Limitato, ecc.)
  • Proprietario (come un team, una squadra, una business unit, ecc.)
  • Conformità (come PCI, SOX, ecc.)

Se segui una corretta strategia di tagging, puoi filtrare e generare output interessanti. Ad esempio, potresti elencare tutti i risultati relativi a un team specifico e fornire quei dati direttamente a quel team.

Puoi filtrare i tuoi risultati in base agli output dei tag utilizzando l'opzione: --mh-filters-tags TAG=VALUE (vedi filtri tag).

Esempio per una chiave tag di un'istanza EC2```json "tags": { "aws:autoscaling:groupName": "stg-backend-20201205160228428400000002", "environment": "stg", "terraform": "true", "aws:ec2launchtemplate:version": "8", "aws:ec2launchtemplate:id": "lt-06b73d2e77f10446f", "Name": "stg-backend" } ```

CloudTrail

Sotto la chiave cloudtrail, troverai eventi CloudTrail critici relativi alla risorsa interessata, come eventi di creazione. Gli eventi CloudTrail che cerchiamo sono definiti per tipo di risorsa e puoi aggiungerli, rimuoverli o modificarli modificando il file di configurazione resources.py. Ad esempio, per una risorsa interessata di tipo Security Group, MetaHub cercherà i seguenti eventi: CreateSecurityGroup (evento di creazione Security Group) e AuthorizeSecurityGroupIngress (evento di autorizzazione regole Security Group).

Esempio per una chiave cloudtrail di un'istanza EC2```json "cloudtrail": { "RunInstances": { "Username": "root", "EventTime": "2023-11-15 06:10:07+01:00", "EventId": "4f122d76-812d-4438-bc33-3585a9e863cf" } } ```
Esempio per una chiave cloudtrail di una tabella DynamoDB```json "cloudtrail": { "CreateTable": { "Username": "gabriel.soltz", "EventTime": "2023-12-05 14:34:25+01:00", "EventId": "7110e3ae-09a3-44b9-929a-1775e0fbedcf" } } ```

Account

Sotto la chiave account, troverai informazioni sull'account in cui la risorsa interessata è in esecuzione, ad esempio se fa parte di AWS Organizations, informazioni sui contatti e altro.

Esempio per la chiave account```json "account": { "Alias": "metahub-demo", "AlternateContact": { "AlternateContactType": "SECURITY", "EmailAddress": "[email protected]", "Name": "Gabriel", "PhoneNumber": "+1234567890", "Title": "Security" }, "Organizations": { "Arn": "arn:aws:organizations::123456789012:organization/o-12349772jb", "Id": "o-12349772jb", "MasterAccountId": "123456789012", "MasterAccountEmail": "[email protected]", "FeatureSet": "ALL", "DelegatedAdministrators": {}, "Details": { "ParentId": "r-k123", "ParentType": "ROOT", "OU": "ROOT", "Policies": { "p-FullAWSAccess": { "Name": "FullAWSAccess", "Arn": "arn:aws:organizations::aws:policy/service_control_policy/p-FullAWSAccess", "Type": "SERVICE_CONTROL_POLICY", "Description": "Allows access to every operation", "AwsManaged": true, "Targets": [] } } } } }, ```

Impatto

Il modulo impact in MetaHub si concentra sulla comprensione delle 7 proprietà chiave della risorsa coinvolta: esposizione, accesso, crittografia, stato, ambiente, applicazione e proprietario. Combina i loro valori con quelli di tutti i finding di sicurezza che interessano la stessa risorsa e le relative gravità per generare un punteggio. Il punteggio d'impatto è un numero compreso tra 0 e 100, dove 100 è il massimo impatto.


Esposizione

Esposizione valuta come la risorsa coinvolta è esposta ad altre reti. Ad esempio, se la risorsa è effettivamente pubblica o solo pubblica, se fa parte di una VPC, se ha un IP pubblico o se è protetta da un firewall o da un gruppo di sicurezza.

Esempio per una risorsa effectively-public```json "exposure": { --> The exposure key "effectively-public": { --> The exposure value, effectively-public "entrypoint": "66.66.66.66", --> The entrypoint to the resource from the Internet (Ip, Domain, etc.) "unrestricted_ingress_rules": [ --> The unrestricted ingress rules, if any { "SecurityGroupRuleId": "sgr-0553206714e321b87", "GroupId": "sg-0a15a46e47f07d139", "GroupOwnerId": "123456789012", "IsEgress": false, "IpProtocol": "tcp", "FromPort": 22, "ToPort": 22, "CidrIpv4": "0.0.0.0/0", "Tags": [] } ], "unrestricted_egress_rules": [ --> The unrestricted egress rules, if any { "SecurityGroupRuleId": "sgr-007b509667896ebe3", "GroupId": "sg-0a15a46e47f07d139", "GroupOwnerId": "123456789012", "IsEgress": true, "IpProtocol": "-1", "FromPort": -1, "ToPort": -1, "CidrIpv4": "0.0.0.0/0", "Tags": [] }, ], "resource_public_config": true --> The public configuration of the resource } } ```

Accesso

Accesso valuta il livello delle policy delle risorse. MetaHub controlla ogni policy disponibile, incluse: policy gestite IAM, policy inline IAM, policy delle risorse, ACL dei bucket e qualsiasi associazione ad altre risorse come i ruoli IAM di cui vengono analizzate anche le policy. Una policy non limitata non è solo un problema in sé, ma influisce su qualsiasi altra risorsa che la utilizza.

Esempio per una risorsa con azioni non limitate```json "access": { --> The access key "unrestricted-actions": { --> The access value, unrestricted-actions "wildcard_actions": { --> The wildcard policies, if any "arn:aws:iam::123456789012:policy/eu-west-1-stg-iam-policy-dynamodb-cache": [ { "Action": [ "dynamodb:*" --> The wildcard action ], "Effect": "Allow", "Resource": [ "arn:aws:dynamodb:eu-west-1:123456789012:table/table", ] } ], } } ```

Crittografia

Crittografia valuta i diversi livelli di crittografia in base a ciascun tipo di risorsa. Ad esempio, per alcune risorse verifica se le configurazioni di crittografia at_rest e in_transit sono entrambe abilitate.

Possibili stati
Esempio di una risorsa non crittografata```json "encryption": { --> The encryption key "unencrypted": { --> The encryption value, unencrypted "unencrypted_resources": [ --> the unencrypted resources associated with the affected resource, if any "arn:aws:ec2:eu-west-1:012345678901:volume/vol-0ac713ec808a8d8bd" ], "resource_encryption_config": null --> The encryption configuration of the resource, if it has any } } ```

Stato

Stato valuta lo stato della risorsa interessata in termini di allegato o funzionamento. Ad esempio, per un'istanza EC2 valutiamo se la risorsa è in esecuzione, ferma o terminata, ma per risorse come volumi EBS e gruppi di sicurezza, valutiamo se tali risorse sono allegate a un'altra risorsa.

Esempio per una risorsa in esecuzione```json "status": { --> The status key "running": { --> The status value, running "status": "running", --> The status configuration of the resource, if it has any "attached": null --> The attachment configuration of the resource, if it has any } } ```

Ambiente

Ambiente valuta l'ambiente in cui la risorsa interessata è in esecuzione. Per impostazione predefinita, MetaHub definisce 3 ambienti: production, staging e development, ma puoi aggiungere, rimuovere o modificare questi ambienti in base alle tue esigenze. MetaHub valuta l'ambiente in base ai tag della risorsa interessata, all'ID dell'account o all'alias dell'account. Puoi definire le tue definizioni e strategie di ambiente nel file di configurazione (Vedi Personalizzazione della configurazione).

Esempio per una risorsa di produzione trovata tramite tag```json "environment": { --> The environment key "production": { --> The environment value, production "tags": { --> The parameters used for evaluating the environment, in this case tags "Env": "prod" --> The tag and key found used for evaluating the environment } } } ```

Applicazione

Applicazione valuta l'applicazione di cui la risorsa interessata fa parte. MetaHub si basa sulla funzionalità AWS myApplications, che utilizza il Tag awsApplication, ma è possibile estendere questa funzionalità in base al proprio contesto, ad esempio definendo altri tag che si usano per identificare applicazioni o servizi (come Service o qualsiasi altro), oppure basandosi sull'ID dell'account o sull'alias. Puoi definire le definizioni e la strategia dell'applicazione nel file di configurazione (Vedi Personalizzazione della configurazione).

Stati possibiliValoreDescrizione
🔵 sconosciuto-Non è stato possibile verificare l'applicazione per la risorsa.
Esempio per una risorsa abbinata dal Tag myApplication```json "application": { --> The application key "payments-app": { --> The application value, payments-app "tags": { --> The parameters used for evaluating the environment, in this case the tag awsApplication "awsApplication": "arn:aws:resource-groups:eu-west-1:123456789012:group/app1/0c8vpbjkzeeffsz2cqgxpae7b2" --> The tag and key found used for evaluating the environment } } } ```

Proprietario

Proprietario si concentra sul rilevamento della proprietà. Può determinare il proprietario della risorsa interessata in vari modi. Questa informazione può essere utilizzata per assegnare automaticamente un riscontro di sicurezza al proprietario corretto, promuoverlo o prendere decisioni basate su di essa. Un modo automatizzato per determinare il proprietario di una risorsa è fondamentale per i team di sicurezza. Consente loro di concentrarsi sulle questioni più critiche e di assegnarle il più rapidamente possibile alle persone giuste in flussi di lavoro automatizzati. Puoi definire le tue definizioni e strategie di proprietario nel file di configurazione (Vedi Personalizzazione della Configurazione).

Stati PossibiliValoreDescrizione
🔵 sconosciuto-La risorsa non ha potuto essere controllata per il proprietario.
Esempio per una risorsa corrispondente per Account Id```json "owner": { --> The owner key "payments-team": { --> The owner value, payments-app "account": { --> The parameters used for evaluating the environment, in this case the account "account_ids": ["123456789012"], --> The account ids found used for evaluating the environment "account_aliases": [], }, } } ```

Findings

Come parte del calcolo del punteggio di impatto, valutiamo anche il numero totale di risultati di sicurezza e le loro gravità che interessano la risorsa. Usiamo la seguente formula per calcolare questa metrica:```sh (SUM of all (Finding Severity / Highest Severity) with a maximum of 1)

root@kitploit:~
Ad esempio, se la risorsa interessata ha due rilevamenti che la interessano, uno con gravità `HIGH` e un altro con gravità `LOW`, il **Punteggio dell'Impatto dei Rilevamenti** sarà:```sh
SUM(HIGH (3) / CRITICAL (4) + LOW (0.5) / CRITICAL (4)) = 0.875

Architettura di alto livello

MetaHub legge i tuoi risultati di sicurezza da AWS Security Hub o da qualsiasi scanner di sicurezza compatibile con ASFF. Quindi interroga le risorse interessate direttamente nell'account interessato per fornire un contesto aggiuntivo. Sulla base di tale contesto, calcola il suo impatto. Infine, genera diversi output in base alle tue esigenze.

Diagramma

Casi d'uso

Alcuni casi d'uso per MetaHub includono:

  • Integrazione di MetaHub con Prowler come scanner locale per l'arricchimento del contesto
  • Automazione della soppressione dei risultati di Security Hub in base ai tag
  • Integrare MetaHub direttamente come azione personalizzata di Security Hub per usarlo direttamente dalla console AWS
  • Crea report HTML arricchiti per i tuoi risultati che puoi filtrare, ordinare, raggruppare e scaricare
  • Creare Security Hub Insights basate sul contesto di MetaHub

Personalizzazione della configurazione

MetaHub utilizza file di configurazione che ti consentono di personalizzare alcuni comportamenti dei controlli, filtri predefiniti e altro. I file di configurazione si trovano in lib/config/.

Cose che puoi personalizzare:

  • lib/config/configuration.py: Questo file contiene la configurazione predefinita per MetaHub. Puoi modificare i filtri predefiniti, le modalità di output predefinite, le definizioni dell'ambiente e altro.
  • lib/config/impact.py: Questo file contiene i valori e i loro pesi per i criteri della formula di impatto. Puoi modificare i valori e i pesi in base alle tue esigenze.
  • lib/config/reources.py: Questo file contiene le definizioni per ogni tipo di risorsa, ad esempio quali eventi CloudTrail cercare.

Esecuzione con Python

MetaHub è un programma Python3. Devi avere Python3 installato nel tuo sistema e i moduli Python richiesti descritti nel file requirements.txt.

I requisiti possono essere installati nel tuo sistema manualmente (usando pip3) o utilizzando un ambiente virtuale Python (metodo consigliato).

Esecuzione utilizzando un ambiente virtuale Python

  1. Clona il repository: git clone [email protected]:gabrielsoltz/metahub.git
  2. Spostati nella directory del repository: cd metahub
  3. Crea un ambiente virtuale per questo progetto: python3 -m venv venv/metahub
  4. Attiva l'ambiente virtuale appena creato: source venv/metahub/bin/activate
  5. Installa i requisiti di Metahub: pip3 install -r requirements.txt
  6. Esegui: ./metahub -h
  7. Disattiva l'ambiente virtuale dopo aver finito con: deactivate

La prossima volta, hai solo bisogno dei passaggi 4 e 6 per utilizzare il programma.

In alternativa, puoi eseguire questo strumento usando Docker.

Esecuzione con Docker

MetaHub è disponibile anche come immagine Docker. Puoi eseguirlo direttamente dall'immagine Docker pubblica o crearla localmente.

I tag disponibili per i container MetaHub sono i seguenti:

  • latest: in sincronia con il ramo master
  • <x.y.z>: puoi trovare le release qui
  • stable: questo tag punta sempre all'ultima release.

Per eseguire dal registro pubblico, puoi eseguire il seguente comando:```sh docker run -ti public.ecr.aws/n2p8q5p4/metahub:latest ./metahub -h

root@kitploit:~
## Credenziali AWS e Docker

Se hai già effettuato l'accesso alla macchina host AWS, puoi utilizzare le stesse credenziali all'interno di un container Docker senza problemi. Puoi ottenere questo risultato passando le variabili d'ambiente necessarie al container o montando il file delle credenziali.

Ad esempio, puoi eseguire il seguente comando:```sh
docker run -e AWS_DEFAULT_REGION -e AWS_ACCESS_KEY_ID -e AWS_SECRET_ACCESS_KEY -e AWS_SESSION_TOKEN -ti public.ecr.aws/n2p8q5p4/metahub:latest ./metahub -h

D'altra parte, se non hai effettuato l'accesso sulla macchina host, dovrai effettuare nuovamente l'accesso dall'interno del container stesso.

Costruire ed eseguire Docker localmente

Oppure puoi anche costruirlo localmente:```sh git clone [email protected]:gabrielsoltz/metahub.git cd metahub docker build -t metahub . docker run -ti metahub ./metahub -h

root@kitploit:~
# Esecuzione con Lambda

**MetaHub** è pronto per Lambda/Serverless! Puoi eseguire MetaHub direttamente su una funzione AWS Lambda senza bisogno di infrastruttura aggiuntiva.

Eseguire MetaHub in una funzione Lambda ti consente di automatizzare la sua esecuzione in base ai trigger definiti. Ad esempio, puoi:

- Attivare la funzione Lambda di MetaHub ogni volta che viene rilevato un nuovo security finding per arricchire quel finding in AWS Security Hub.
- Attivare la funzione Lambda di MetaHub ogni volta che viene rilevato un nuovo security finding per la soppressione basata sul contesto.
- Attivare la funzione Lambda di MetaHub per identificare il proprietario interessato di un security finding basato sul contesto e assegnarlo utilizzando i tuoi sistemi interni.
- Attivare la funzione Lambda di MetaHub per creare un ticket con contesto arricchito.

## Distribuzione di Lambda

Il codice terraform per distribuire la funzione Lambda è fornito nella cartella `terraform/`.

Esegui semplicemente i seguenti comandi:```sh
cd terraform
terraform init
terraform apply

Il codice creerà un file zip per il codice Lambda e un file zip per le dipendenze Python che useremo come layer Lambda. Creerà anche la funzione Lambda e tutte le risorse necessarie.

Il codice Terraform creerà anche un'azione personalizzata di Security Hub e una regola EventBridge per attivare la funzione Lambda quando l'azione personalizzata viene eseguita. Vedi sotto.

Customize Lambda behaviour

Puoi personalizzare le opzioni di MetaHub per il tuo lambda modificando il file lib/lambda.py. Puoi cambiare le opzioni predefinite per MetaHub, come i filtri, le opzioni Meta*, e altro.

Lambda Permissions

Terraform creerà le autorizzazioni minime necessarie per la funzione Lambda per essere eseguita localmente (nello stesso account). Se vuoi che il tuo Lambda assuma un ruolo in altri account (ad esempio, ne avrai bisogno se esegui il Lambda nell'account master di Security Hub che sta aggregando i findings da altri account), dovrai specificare il ruolo da assumere, aggiungendo l'opzione --mh-assume-role nella configurazione della funzione Lambda (vedi il passo precedente) e aggiungendo la politica corrispondente per consentire al Lambda di assumere quel ruolo nel ruolo lambda.

Run with Security Hub Custom Action

MetaHub può essere eseguito come azione personalizzata di Security Hub. Questo ti permette di eseguire MetaHub direttamente dalla console di Security Hub per un finding selezionato o per un insieme selezionato di findings.

custom_action

L'azione personalizzata attiverà quindi una funzione Lambda che eseguirà MetaHub per i findings selezionati.

Quando attivi il Lambda utilizzando l'azione personalizzata di Security Hub, il lambda leggerà i findings selezionati per il suo contesto, ed eseguirà una volta per ogni finding. Per impostazione predefinita, non verrà eseguita alcuna azione sui findings, ma puoi cambiare questo comportamento. Vedi Personalizza il comportamento del Lambda.

L'azione personalizzata di Security Hub viene distribuita come parte del codice Terraform. Vedi Distribuzione di Lambda per maggiori informazioni.

Se vuoi distribuirlo manualmente, segui i passaggi seguenti:
  1. In Security Hub, scegli Impostazioni e poi Azioni personalizzate.
  2. Scegli Crea azione personalizzata.
  3. Fornisci un Nome, una Descrizione e un ID azione personalizzata per l'azione.
  4. Scegli Crea azione personalizzata. (Prendi nota dell'ARN dell'azione personalizzata. Dovrai usare l'ARN quando crei una regola da associare a questa azione in EventBridge.)
  5. In EventBridge, scegli Regole e poi Crea regola.
  6. Inserisci un nome e una descrizione per la regola.
  7. Per il bus di eventi, scegli il bus di eventi che vuoi associare a questa regola. Se vuoi che questa regola corrisponda a eventi provenienti dal tuo account, seleziona default. Quando un servizio AWS nel tuo account emette un evento, va sempre al bus di eventi predefinito del tuo account.
  8. Per Tipo di regola, scegli una regola con un pattern di eventi e poi premi Avanti.
  9. Per Sorgente evento, scegli Eventi AWS.
  10. Per Metodo di creazione, scegli Usa modulo pattern.
  11. Per Sorgente evento, scegli Servizi AWS.
  12. Per Servizio AWS, scegli Security Hub.
  13. Per Tipo di evento, scegli Security Hub Findings - Custom Action.
  14. Scegli ARN azioni personalizzate specifici e aggiungi un ARN di azione personalizzata.
  15. Scegli Avanti.
  16. Sotto Seleziona destinazioni, scegli la funzione Lambda
  17. Seleziona la funzione Lambda che hai creato per MetaHub.

AWS Authentication

Assicurati di aver configurato le credenziali AWS sulla tua macchina locale (o da dove eseguirai MetaHub).

Ad esempio, puoi usare l'opzione aws configure.```sh aws configure

root@kitploit:~
Oppure puoi esportare le tue credenziali nell'ambiente.```sh
export AWS_DEFAULT_REGION="us-east-1"
export AWS_ACCESS_KEY_ID= "ASXXXXXXX"
export AWS_SECRET_ACCESS_KEY= "XXXXXXXXX"
export AWS_SESSION_TOKEN= "XXXXXXXXX"

Configurazione di Security Hub

  • Se stai eseguendo MetaHub per una configurazione con un singolo account AWS (AWS Security Hub non sta aggregando risultati da account diversi), non hai bisogno di utilizzare opzioni aggiuntive; MetaHub utilizzerà le credenziali nel tuo ambiente. Tuttavia, se la tua progettazione IAM lo richiede, è possibile effettuare il login e assumere un ruolo nello stesso account in cui hai effettuato l'accesso. Basta usare le opzioni --sh-assume-role per specificare il ruolo e --sh-account con lo stesso ID account AWS in cui hai effettuato l'accesso.

  • --sh-region: La regione AWS in cui è in esecuzione Security Hub. Se non specifichi una regione, utilizzerà quella configurata nel tuo ambiente. Se stai utilizzando l'aggregazione cross-regione di AWS Security Hub, dovresti usare quella regione come opzione --sh-region in modo da poter recuperare tutti i risultati insieme.

  • --sh-account e --sh-assume-role: L'ID dell'account AWS in cui è in esecuzione Security Hub e il ruolo IAM AWS da assumere in quell'account. Queste opzioni sono utili quando hai effettuato l'accesso a un account AWS diverso da quello in cui è in esecuzione AWS Security Hub o quando esegui AWS Security Hub in una configurazione con più account AWS. Entrambe le opzioni devono essere usate insieme. Il ruolo fornito deve avere politiche sufficienti per ottenere e aggiornare i risultati in AWS Security Hub (se necessario). Se non specifichi --sh-account, MetaHub assumerà quello in cui hai effettuato l'accesso.

  • --sh-profile: Puoi anche fornire il nome del tuo profilo AWS da utilizzare per AWS Security Hub. Quando usi questa opzione, non hai bisogno di specificare o perché MetaHub utilizzerà le credenziali dal profilo. Se stai usando e , queste opzioni hanno la precedenza su .

Politica IAM per Security Hub

Questa è la politica IAM minima necessaria per leggere e scrivere da AWS Security Hub. Se non vuoi aggiornare i tuoi risultati con MetaHub, puoi rimuovere l'azione securityhub:BatchUpdateFindings.```sh { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "security hub:GetFindings", "security hub:ListFindingAggregators", "security hub:BatchUpdateFindings", "iam:ListAccountAliases" ], "Resource": [ "*" ] } ] }

root@kitploit:~
# Configurare Context

Se stai eseguendo MetaHub per una configurazione con più account AWS (AWS Security Hub sta aggregando i risultati da più account AWS), devi fornire il ruolo da assumere per le query di Context perché le risorse interessate non si trovano nello stesso account AWS dei risultati di AWS Security Hub. L'opzione `--mh-assume-role` verrà utilizzata per connettersi direttamente alle risorse interessate nell'account interessato. Questo ruolo deve disporre di policy sufficienti per essere in grado di descrivere le risorse.

## Policy IAM per Context

La policy minima necessaria per il context include la policy gestita `arn:aws:iam::aws:policy/SecurityAudit` e le seguenti azioni:

- `tag:GetResources`
- `lambda:GetFunction`
- `lambda:GetFunctionUrlConfig`
- `cloudtrail:LookupEvents`
- `account:GetAlternateContact`
- `organizations:DescribeAccount`
- `iam:ListAccountAliases`

# Inputs

MetaHub può leggere i risultati di sicurezza direttamente da AWS Security Hub utilizzando la sua API. Se non utilizzi Security Hub, puoi utilizzare qualsiasi scanner compatibile con ASFF. La maggior parte degli scanner di sicurezza cloud supporta il formato ASFF come Prolwer, Steampipe, Trivy e altri.

Se desideri leggere da un file ASFF di input, devi utilizzare l'opzione (`--inputs file-asff`) e fornire il percorso del file. Puoi fornire più file separati da uno spazio.:```sh
./metahub.py --inputs file-asff --input-asff path/to/the/file.json.asff path/to/the/file2.json.asff

Puoi anche combinare i risultati di AWS Security Hub con file ASFF di input specificando entrambi gli input (--inputs file-asff securityhub). MetaHub elaborerà tutti i risultati insieme e restituirà un unico output.:```sh ./metahub.py --inputs file-asff securityhub --input-asff path/to/the/file.json.asff

root@kitploit:~
Quando si utilizza un file come input, non è possibile usare l'opzione `--sh-filters` per filtrare i risultati, poiché questa opzione si basa sull'API AWS per il filtraggio. Non è possibile usare le opzioni `--update-findings` o `--enrich-findings` perché quei risultati non si trovano in AWS Security Hub. Se si leggono da entrambe le fonti contemporaneamente, solo i risultati provenienti da AWS Security Hub verranno aggiornati.

MetaHub implementa anche alcuni **meccanismi di correzione** per il formato ASFF, quando non sono formattati correttamente. Si tratta di un approccio di massimo sforzo per rendere l'ASFF il più utile possibile, ma non è perfetto e deve essere corretto nello scanner di origine.

- Se la chiave `Region` manca dalle Risorse e dal Livello Radice, MetaHub calcolerà la regione basandosi sull'ARN della risorsa interessata.
- Se il file ASFF non imposta correttamente il Tipo di Risorsa ASFF, MetaHub lo calcolerà basandosi sull'ARN della risorsa interessata utilizzando la libreria [aws-arn](https://github.com/gabrielsoltz/aws-arn)
- Se manca qualsiasi altro campo come `SeverityLabel`, `Workflow`, `RecordState`, `Compliance`, `Id`, `ProductArn` o `StandardsControlArn`, MetaHub li imposterà su `Unknown`.

# Output

**MetaHub** può generare diversi output programmatici e visivi. Per impostazione predefinita, tutte le modalità di output sono abilitate: `json-short`, `json-full`, `json-statistics`, `json-inventory`, `html`, `csv` e `xlsx`. Se si desidera generare solo una modalità di output specifica, è possibile utilizzare l'opzione `--output-modes` con la modalità desiderata. Gli output verranno salvati nella cartella `outputs/` con la data di esecuzione.

Ad esempio, se si desidera generare solo l'output `json-short`, è possibile utilizzare:```sh
./metahub.py --output-modes json-short

Se desideri generare gli output json-short, json-full e html, puoi utilizzare:```sh ./metahub.py --output-modes json-short json-full html

root@kitploit:~
**MetaHub** organizza i risultati di sicurezza che riguardano la stessa risorsa tutti insieme sotto la chiave `findings` nel tentativo di evitare l'Shadowing (quando due controlli si riferiscono allo stesso problema, ma uno in modo più generico rispetto all'altro) e la Duplicazione (quando si utilizza più di uno scanner e si ottiene lo stesso problema da più di uno.). Puoi vedere chiaramente questo comportamento negli output `json-short`, `json-full` e `html`.

- [JSON](#json)
- [HTML](#html)
- [CSV](#csv)
- [XLSX](#xlsx)
- [SQLite](#sqlite)

## JSON

> :info: Per esplorare un output JSON in modo interattivo, puoi usare lo strumento [fx](https://github.com/antonmedv/fx).

### JSON-Full

Mostra la risorsa interessata usando il suo ARN come chiave e i risultati che la riguardano come elenco sotto la chiave `findings`. Oltre ai risultati, otterrai anche le seguenti chiavi: `ResourceType`, `Region`, `AwsAccountId`, `associations`, `config`, `tags`, `account`, `cloudtrail` e `impact`.```json
"arn:aws:ec2:eu-west-1:1234567890:instance/i-0a40b2be25dbac0ac": {           --> The affected resource ARN
  "findings": [                                                              --> The findings affecting the resource
    {
      "EC2 instances should use Instance Metadata Service Version 2 (IMDSv2)": {   --> The finding title
        "SeverityLabel": "HIGH",                                                   --> The finding severity label
        "Workflow":{                                                               --> The finding workflow
          "Status": "NEW",
        },
        "RecordState": "ACTIVE",                                                   --> The finding record state
        "Compliance":{                                                             --> The finding compliance
          "Status": "FAILED",
        },
        "Id": "arn:aws:securityhub:eu-west-1:123456789012:security-control/EC2.8/finding/a1d4f19f-453e-4c3c-b486-8443c73e84f1",
        "ProductArn": "arn:aws:securityhub:eu-west-1::product/aws/securityhub",
      }
    },
    {"EC2 instances should be managed by AWS Systems Manager": {...}},        --> Another finding title
    {"EC2 instances should not have a public IPv4 address": {...}}          --> Another finding title
  ],
  "ResourceType": "AwsEc2Instance",                                         --> The affected resource type
  "Region": "eu-west-1",                                                    --> The affected resource region
  "AwsAccountId": "1234567890",                                             --> The affected resource account id
  "associations": {                                                         --> The associations of the affected resource
    "security_groups": {},                                                  --> The security groups associated with the affected resource
    "iam_roles": {},                                                        --> The IAM roles associated with the affected resource
    "volumes": {},                                                          --> The volumes associated with the affected resource
    "autoscaling_groups": {},                                               --> The autoscaling groups associated with the affected resource
    "vpcs": {},                                                             --> The VPCs associated with the affected resource
    "subnets": {},                                                          --> The subnets associated with the affected resource
  },
  "config": {                                                              --> The configuration of the affected resource (based on it's type)
    "public_ip": "200.200.200.200",                                       --> The public IP of the affected resource, if any
    "private_ip": "10.10.10.10",                                        --> The private IP of the affected resource, if any
    "key": "ssh-key",                                                  --> The key used for the affected resource, if any
    "metadata_options": {                                             --> The metadata options of the affected resource, if any
      "State": "applied",
      "HttpTokens": "required",
      "HttpPutResponseHopLimit": 1,
      "HttpEndpoint": "enabled",
      "HttpProtocolIpv6": "disabled",
      "InstanceMetadataTags": "disabled"
    },
  },
  "tags": {                                                            --> The tags of the affected resource
    "Name": "test",                                                  --> The tag key and value
    "Env": "prod",
    "awsApplication": "arn:aws:resource-groups:eu-west-1:1234567890:group/app1/0c8vpbjkzeeffsz2cqgxpae7b2"
  },
  "account": {                                                            --> The account of the affected resource
    "Alias": "prod",                                                --> The account alias
    "AlternateContact": {},                                        --> The alternate contact of the account, if any
    "Organizations": {                                            --> The organization of the account, if any
      "Id": "o-1234567890",
      "Arn": "arn:aws:organizations::1234567890:organization/o-1234567890/o-1234567890",
      "MasterAccountId": "1234567890",
      "MasterAccountArn": "arn:aws:organizations::1234567890:account/o-1234567890/1234567890",
      "MasterAccountEmail": "",
      "Details": {
        "ParentId": "p-k1234567890",
        "ParentType": "ROOT",
        "OU": "ROOT",
        "Policies": {                                           --> The policies of the account, if any
          "p-FullAWSAccess": {...}                              --> The policy name and policy
        }
      }
    },
  },
  "cloudtrail": {                                                     --> The CloudTrail events affecting the affected resource
    "RunInstances": {                                                --> The CloudTrail event name
      "Username": "test",                                            --> The username of the event, if any
      "EventTime": "2021-01-01T00:00:00Z",
      "EventId": "12345678-1234-1234-1234-123456789012",
    }
  },
  "impact": {                                                        --> The impact of the affected resource
    "exposure": {...},                                             --> The exposure impact
    "access": {...},                                              --> The access impact
    "encryption": {...},                                         --> The encryption impact
    "status": {...},                                            --> The status impact
    "environment": {...},                                      --> The environment impact
    "application": {...},                                     --> The application impact
    "owner": {...},                                          --> The owner impact
    "findings": {...},                                      --> The findings impact
    "score": {...}                                         --> The total impact score
  }
}

JSON-Short

Mostra la risorsa interessata utilizzando il suo ARN come chiave e i risultati che la riguardano come un elenco sotto la chiave findings. In aggiunta ai risultati, otterrai anche le seguenti chiavi: ResourceType, Region, AwsAccountId, associations, config, tags, account, cloudtrail e impact.```json "arn:aws:ec2:eu-west-1:1234567890:instance/i-0a40b2be25dbac0ac": { --> The affected resource ARN "findings": [ --> The findings affecting the resource "EC2 instances should use Instance Metadata Service Version 2 (IMDSv2)", --> The finding title "EC2 instances should be managed by AWS Systems Manager", --> The finding title "EC2 instances should not have a public IPv4 address" --> The finding title ], "ResourceType": "AwsEc2Instance", --> The affected resource type "Region": "eu-west-1", --> The affected resource region "AwsAccountId": "1234567890", --> The affected resource account id "associations": { --> The associations of the affected resource "security_groups": {}, --> The security groups associated with the affected resource "iam_roles": {}, --> The IAM roles associated with the affected resource "volumes": {}, --> The volumes associated with the affected resource "autoscaling_groups": {}, --> The autoscaling groups associated with the affected resource "vpcs": {}, --> The VPCs associated with the affected resource "subnets": {}, --> The subnets associated with the affected resource }, "config": { --> The configuration of the affected resource (based on it's type) "public_ip": "200.200.200.200", --> The public IP of the affected resource, if any "private_ip": "10.10.10.10", --> The private IP of the affected resource, if any "key": "ssh-key", --> The key used for the affected resource, if any "metadata_options": { --> The metadata options of the affected resource, if any "State": "applied", "HttpTokens": "required", "HttpPutResponseHopLimit": 1, "HttpEndpoint": "enabled", "HttpProtocolIpv6": "disabled", "InstanceMetadataTags": "disabled" }, }, "tags": { --> The tags of the affected resource "Name": "test", --> The tag key and value "Env": "prod", "awsApplication": "arn:aws:resource-groups:eu-west-1:1234567890:group/app1/0c8vpbjkzeeffsz2cqgxpae7b2" }, "account": { --> The account of the affected resource "Alias": "prod", --> The account alias "AlternateContact": {}, --> The alternate contact of the account, if any "Organizations": { --> The organization of the account, if any "Id": "o-1234567890", "Arn": "arn:aws:organizations::1234567890:organization/o-1234567890/o-1234567890", "MasterAccountId": "1234567890", "MasterAccountArn": "arn:aws:organizations::1234567890:account/o-1234567890/1234567890", "MasterAccountEmail": "", "Details": { "ParentId": "p-k1234567890", "ParentType": "ROOT", "OU": "ROOT", "Policies": { --> The policies of the account, if any "p-FullAWSAccess": {...} --> The policy name and policy } } }, }, "cloudtrail": { --> The CloudTrail events affecting the affected resource "RunInstances": { --> The CloudTrail event name "Username": "test", --> The username of the event, if any "EventTime": "2021-01-01T00:00:00Z", "EventId": "12345678-1234-1234-1234-123456789012", } }, "impact": { --> The impact of the affected resource "exposure": {...}, --> The exposure impact "access": {...}, --> The access impact "encryption": {...}, --> The encryption impact "status": {...}, --> The status impact "environment": {...}, --> The environment impact "application": {...}, --> The application impact "owner": {...}, --> The owner impact "findings": {...}, --> The findings impact "score": {...} --> The total impact score } }

root@kitploit:~
### JSON-Inventory

Mostra un elenco di tutte le risorse con il loro ARN.```json
[
  "arn:aws:sagemaker:us-east-1:ofuscated:notebook-instance/obfuscated",
  "arn:aws:sagemaker:eu-west-1:ofuscated:notebook-instance/obfuscated"
]

JSON-Statistiche

Mostra le statistiche per ogni campo/valore. Nell'output, vedrai ogni campo/valore e il numero di occorrenze; ad esempio, l'output seguente mostra le statistiche per sei risultati.```json { "Title": { "SageMaker.1 Amazon SageMaker notebook instances should not have direct internet access": 2, "SageMaker.2 SageMaker notebook instances should be launched in a custom VPC": 2, "SageMaker.3 Users should not have root access to SageMaker notebook instances": 2 }, "SeverityLabel": { "HIGH": 6 }, "Workflow": { "NEW": 6 }, "RecordState": { "ACTIVE": 6 }, "Compliance": { "FAILED": 6 }, "ProductArn": { "arn:aws:security hub:eu-west-1::product/aws/security hub": 3, "arn:aws:security hub:us-east-1::product/aws/security hub": 3 }, "ResourceType": { "AwsSageMakerNotebookInstance": 6 }, "AwsAccountId": { "obfuscated": 6 }, "Region": { "eu-west-1": 3, "us-east-1": 3 }, "ResourceId": { "arn:aws:sagemaker:eu-west-1:ofuscated:notebook-instance/obfuscated": 3, "arn:aws:sagemaker:us-east-1:ofuscated:notebook-instance/obfuscated": 3 } }

root@kitploit:~
## HTML

Puoi creare report HTML ricchi dei tuoi risultati, aggiungendo il tuo contesto come parte di essi.

I report HTML sono interattivi in molti modi:

- Puoi aggiungere/rimuovere colonne.
- Puoi ordinare e filtrare per qualsiasi colonna.
- Puoi filtrare automaticamente per qualsiasi colonna
- Puoi raggruppare/sciogliere i risultati
- Puoi anche scaricare i dati in xlsx, CSV, HTML e JSON.

<p align="center">
  <img src="https://assets.kitploit.com/production/public/readmes/6190/21d785d2413698ed7cb3e9dc7e9b51dc6550395a598d777abc9fc358f8a23573.png" alt="html-example"/>
</p>

## CSV

Puoi creare report CSV dei tuoi risultati, aggiungendo il tuo contesto come parte di essi.

<p align="center">
  <img src="https://assets.kitploit.com/production/public/readmes/6190/66f15350123702e1cc317e47938401853bdcb1d86dad0ad4e48e73f15e00dd76.png" alt="csv-example"/>
</p>

## XLSX

Simile a CSV ma con più opzioni di formattazione.

<p align="center">
  <img src="https://assets.kitploit.com/production/public/readmes/6190/953a77917dc5b06e5185e6cb882ba7e711d785861e184599f10cd472efc42db9.png" alt="xlsx-example"/>
</p>

## Personalizzare output HTML, CSV o XLSX

Puoi personalizzare quali chiavi di contesto espandere come colonne per i tuoi output HTML, CSV e XLSX utilizzando le opzioni `--output-tag-columns` e `--output-config-columns` (come elenco di colonne). Se le chiavi specificate non esistono per la risorsa interessata, saranno vuote. Puoi anche configurare queste colonne per impostazione predefinita nel file di configurazione (Vedi [Personalizzare la configurazione](#customizing-configuration)).

Ad esempio, puoi generare un output HTML con i Tag e aggiungere "Proprietario" e "Ambiente" come colonne al tuo report utilizzando:```sh
./metahub --output-modes html --output-tag-columns Owner Environment

SQLite

MetaHub può salvare i risultati e il contesto in un database SQLite. Questo database può essere utilizzato per analisi ulteriori, reportistica e integrazione con altri strumenti, come Powerpipe. Il database verrà salvato nella cartella outputs/ con la data di esecuzione e l'estensione .db.

Utilizzo con Powerpipe

Puoi utilizzare il database SQLite generato da MetaHub con Powerpipe. Trovi il modulo MetaHub PowerPipe nella cartella powerpipe/.

Per utilizzarlo, devi avere Powerpipe installato nel tuo sistema.

Una volta installato, puoi eseguire il seguente comando:```sh powerpipe server --database sqlite:../outputs/metahub-20240331-182942.db

root@kitploit:~
### Crea i tuoi dashboard

Costruire dashboard con Powerpipe è estremamente facile e potente. Puoi consultare la [documentazione di Powerpipe](https://powerpipe.io/docs) per maggiori informazioni.

Di seguito trovi le tabelle disponibili nel database SQLite.

#### Risorse

| Column Name                     | Data Type | Description                                                                                    |
| ------------------------------- | --------- | ---------------------------------------------------------------------------------------------- |
| resource_arn                    | VARCHAR   | L'Amazon Resource Name (ARN) della risorsa, che funge da chiave primaria.                    |
| resource_type                   | VARCHAR   | Il tipo della risorsa.                                                                      |
| resource_region                 | VARCHAR   | La regione in cui si trova la risorsa.                                                         |
| resource_account_id             | VARCHAR   | L'ID dell'account associato alla risorsa. Chiave esterna che fa riferimento a accounts(account_id). |
| resource_account_alias          | VARCHAR   | L'alias dell'account associato alla risorsa.                                         |
| resource_tags                   | TEXT      | Tag associati alla risorsa.                                                             |
| resource_exposure               | VARCHAR   | Il livello di esposizione della risorsa.                                                            |
| resource_access                 | VARCHAR   | Il livello di accesso della risorsa.                                                              |
| resource_encryption             | VARCHAR   | Lo stato di crittografia della risorsa.                                                         |
| resource_status                 | VARCHAR   | Lo stato attuale della risorsa.                                                            |
| resource_application            | VARCHAR   | L'applicazione associata alla risorsa.                                                  |
| resource_environment            | VARCHAR   | L'ambiente (es. produzione, staging) in cui si trova la risorsa.                                |
| resource_owner                  | VARCHAR   | Il proprietario della risorsa.                                                                     |
| resource_score                  | INTEGER   | Un punteggio associato alla risorsa.                                                          |
| resource_findings_score        | INTEGER   | Un punteggio basato sui findings associati alla risorsa.                                        |
| resource_findings_critical      | INTEGER   | Il numero di findings critici.                                                               |
| resource_findings_high          | INTEGER   | Il numero di findings ad alta gravità.                                                          |
| resource_findings_medium        | INTEGER   | Il numero di findings a media gravità.                                                        |
| resource_findings_low           | INTEGER   | Il numero di findings a bassa gravità.                                                           |
| resource_findings_informational | INTEGER   | Il numero di findings informativi.                                                          |

#### Findings

| Column Name              | Data Type | Description                                                        |
| ------------------------ | --------- | ------------------------------------------------------------------ |
| finding_id               | VARCHAR   | L'identificatore univoco del finding, che funge da chiave primaria. |
| finding_title            | VARCHAR   | Il titolo del finding.                                          |
| finding_severity         | VARCHAR   | La gravità del finding.                                       |
| finding_workflowstatus   | VARCHAR   | Lo stato del flusso di lavoro del finding.                                |
| finding_recordstate      | VARCHAR   | Lo stato del record del finding.                                   |
| finding_compliancestatus | VARCHAR   | Lo stato di conformità del finding.                              |
| finding_productarn       | VARCHAR   | L'ARN del prodotto che genera il finding.                     |
| finding_resource_arn     | VARCHAR   | L'ARN della risorsa associata.                                |

#### Account

| Column Name                     | Data Type | Description                                                                   |
| ------------------------------- | --------- | ----------------------------------------------------------------------------- |
| account_id                      | INTEGER   | L'identificatore univoco dell'account, che funge da chiave primaria.            |
| account_alias                   | VARCHAR   | L'alias dell'account.                                                     |
| account_organizations_id        | VARCHAR   | L'ID dell'organizzazione a cui appartiene l'account.                            |
| account_organizations_arn       | VARCHAR   | L'ARN dell'organizzazione a cui appartiene l'account.                           |
| account_master_account_id       | VARCHAR   | L'ID dell'account master, se questo account fa parte di un'organizzazione AWS. |
| account_master_account_email    | VARCHAR   | L'indirizzo email associato all'account master.                         |
| account_alternate_contact_type  | VARCHAR   | Il tipo di contatto alternativo (es. fatturazione, sicurezza).                      |
| account_alternate_contact_name  | VARCHAR   | Il nome del contatto alternativo.                                            |
| account_alternate_contact_email | VARCHAR   | L'indirizzo email del contatto alternativo.                                   |
| account_alternate_contact_phone | VARCHAR   | Il numero di telefono del contatto alternativo.                                    |
| account_alternate_contact_title | VARCHAR   | Il titolo del contatto alternativo.                                    |

# Filtri

Puoi filtrare i risultati di sicurezza (security findings) e le risorse che ottieni dalla tua fonte in diversi modi e combinarli tutti per ottenere esattamente ciò che stai cercando, per poi riutilizzare questi filtri per creare automazioni, avvisi, report e altro.

- [Filtri di Security Hub](#security-hub-filtering)
- [Filtri di Security Hub tramite template YAML](#security-hub-filtering-using-yaml-templates)
- [Filtri Config](#config-filters)
- [Filtri Tag](#tags-filters)
- [Filtri di Impatto](#impact-filters)

## Filtri di Security Hub

MetaHub supporta il filtraggio dei risultati di AWS Security Hub sotto forma di filtri `KEY=VALUE` per AWS Security Hub utilizzando l'opzione `--sh-filters`, allo stesso modo in cui filtraresti usando AWS CLI ma limitato al confronto `EQUALS`. Se desideri un altro confronto, usa l'opzione `--sh-template` [Filtri di Security Hub tramite template YAML](#security-hub-filtering-using-yaml-templates).

Puoi controllare i filtri disponibili nella [Documentazione AWS](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/securityhub.html#SecurityHub.Client.get_findings)```sh
./metahub --sh-filters <KEY=VALUE>

Se non specifichi alcun filtro, vengono applicati i filtri predefiniti: RecordState=ACTIVE WorkflowStatus=NEW

L'utilizzo di filtri tramite questa opzione reimposta i filtri predefiniti. Se desideri aggiungere filtri a quelli predefiniti, devi specificarli in aggiunta a quelli predefiniti. Ad esempio, aggiungendo SeverityLabel ai filtri predefiniti:```sh ./metahub --sh-filters RecordState=ACTIVE WorkflowStatus=NEW

root@kitploit:~
Se un valore contiene spazi, devi specificarlo usando doppi apici: `"ProductName="Security Hub"`

Puoi aggiungere tutti i filtri diversi di cui hai bisogno alla tua query e anche aggiungere la stessa chiave di filtro con valori diversi:

Esempi:

- Filtra per Severity (CRITICAL):```sh
./metaHub --sh-filters RecordState=ACTIVE WorkflowStatus=NEW SeverityLabel=CRITICAL
  • Filtra per Gravità (CRITICAL e HIGH):```sh ./metaHub --sh-filters RecordState=ACTIVE WorkflowStatus=NEW SeverityLabel=CRITICAL SeverityLabel=HIGH
root@kitploit:~
- Filtra per Severità e Account AWS:```sh
./metaHub --sh-filters RecordState=ACTIVE WorkflowStatus=NEW SeverityLabel=CRITICAL AwsAccountId=1234567890
  • Filtra per Titolo del Controllo:```sh ./metahub --sh-filters RecordState=ACTIVE WorkflowStatus=NEW Title="EC2.22 Unused EC2 security groups should be removed"
root@kitploit:~
- Filtra per tipo di risorsa AWS:```sh
./metahub --sh-filters RecordState=ACTIVE WorkflowStatus=NEW ResourceType=AwsEc2SecurityGroup
  • Filtra per ID risorsa:```sh ./metahub --sh-filters RecordState=ACTIVE WorkflowStatus=NEW ResourceId="arn:aws:ec2:eu-west-1:01234567890:security-group/sg-01234567890"
root@kitploit:~
- Filtra per Finding Id:```sh
./metahub --sh-filters Id="arn:aws:security hub:eu-west-1:01234567890:subscription/aws-foundational-security-best-practices/v/1.0.0/EC2.19/finding/01234567890-1234-1234-1234-01234567890"
  • Filtra per stato di conformità:```sh ./metahub --sh-filters ComplianceStatus=FAILED
root@kitploit:~
## Filtraggio di Security Hub utilizzando template YAML

**MetaHub** ti consente di creare filtri complessi utilizzando file YAML (template) che puoi riutilizzare quando necessario. I template YAML ti permettono di scrivere filtri utilizzando qualsiasi confronto supportato da AWS Security Hub come "EQUALS' | 'PREFIX' | 'NOT_EQUALS' | 'PREFIX_NOT_EQUALS". Puoi richiamare il tuo file YAML usando l'opzione `--sh-template <<FILE>>`.

Puoi trovare esempi nella cartella [templates](https://github.com/gabrielsoltz/metahub/blob/HEAD/templates)

- Filtra usando il template YAML default.yml:```sh
./metaHub --sh-template templates/default.yml

Filtri di Config

MetaHub supporta filtri di Config (e associazioni) usando KEY=VALUE dove il valore può essere solo True o False tramite l'opzione --mh-filters-config. Puoi usare quanti filtri desideri e separarli con spazi. Se specifichi più di un filtro, otterrai tutte le risorse che corrispondono a tutti i filtri.

I filtri di Config supportano solo valori True o False:

  • Un filtro di Config impostato su True significa True o con dati.
  • Un filtro di Config impostato su False significa False o senza dati.

I filtri di Config vengono eseguiti dopo i filtri di AWS Security Hub:

  1. MetaHub recupera i risultati di AWS Security Finding basati sui filtri specificati con --sh-filters (o quelli predefiniti).
  2. MetaHub esegue il Contesto per le risorse AWS interessate in base all'elenco precedente di risultati.
  3. MetaHub mostra solo le risorse che corrispondono a --mh-filters-config, quindi è un sottoinsieme delle risorse del punto 1.

Esempi:

  • Ottieni tutti i Security Groups (ResourceType=AwsEc2SecurityGroup) con risultati di AWS Security Hub che sono ACTIVE e NEW (RecordState=ACTIVE WorkflowStatus=NEW) solo se sono associati a Network Interfaces (network_interfaces=True):```sh ./metahub --sh-filters RecordState=ACTIVE WorkflowStatus=NEW ResourceType=AwsEc2SecurityGroup --mh-filters-config network_interfaces=True
root@kitploit:~
Ottieni tutti i bucket S3 (`ResourceType=AwsS3Bucket`) solo se sono pubblici (`public=True`):```sh
./metahub --sh-filters ResourceType=AwsS3Bucket --mh-filters-config public=False

Filtri per Tag

MetaHub supporta filtri per tag nel formato KEY=VALUE dove KEY è il nome del tag e value è il valore del tag. Puoi usare quanti filtri vuoi e separarli usando spazi. Specificare più filtri ti darà tutte le risorse che corrispondono ad almeno un filtro.

I filtri per tag vengono eseguiti dopo i filtri di AWS Security Hub:

  1. MetaHub recupera i risultati di AWS Security Hub in base ai filtri specificati usando --sh-filters (o quelli predefiniti).
  2. MetaHub esegue i tag per le risorse AWS interessate in base all'elenco precedente di risultati
  3. MetaHub mostra solo le risorse che corrispondono ai tuoi --mh-filters-tags, quindi è un sottoinsieme delle risorse del punto 1.

Esempi:

  • Ottieni tutti i Security Groups (ResourceType=AwsEc2SecurityGroup) con risultati di AWS Security Hub che sono ACTIVE e NEW (RecordState=ACTIVE WorkflowStatus=NEW) solo se sono taggati con un tag Environment e valore Production:```sh ./metahub --sh-filters RecordState=ACTIVE WorkflowStatus=NEW ResourceType=AwsEc2SecurityGroup --mh-filters-tags Environment=Production
root@kitploit:~
## Filtri di Impatto

**MetaHub** supporta **Filtri di Impatto**, puoi filtrare per le [chiavi di impatto](#impact) calcolate da MetaHub. Puoi utilizzare tutti i filtri che desideri e separarli con spazi. Se specifichi più di un filtro, otterrai tutte le risorse che corrispondono a **tutti** i filtri.

Esempi:

- Filtra tutti i Security Findings che interessano risorse con esposizione calcolata come effectively-public:```sh
./metahub --mh-filters-impact exposure=effectively-public
  • Filtra tutte le Risultanze di Sicurezza che interessano risorse con stato calcolato come not-attached:```sh ./metahub --mh-filters-impact status=not-attached
root@kitploit:~
# Azioni di Security Hub

## Aggiornamento dello stato del flusso di lavoro

Puoi utilizzare **MetaHub** per aggiornare lo stato del flusso di lavoro dei risultati di AWS Security Hub (`NOTIFIED`, `NEW`, `RESOLVED`, `SUPPRESSED`) con un singolo comando. Utilizzerai l'opzione `--update-findings` per aggiornare tutti i risultati della tua query MetaHub. Ciò significa che puoi aggiornare uno, dieci o migliaia di risultati utilizzando un solo comando. L'API di AWS Security Hub è limitata a 100 risultati per aggiornamento. Metahub suddividerà i tuoi risultati in blocchi da 100 elementi per evitare questa limitazione e aggiornare comunque i tuoi risultati, indipendentemente dal loro numero.

Ad esempio, utilizzando il seguente filtro: `./metahub --sh-filters ResourceType=AwsSageMakerNotebookInstance RecordState=ACTIVE WorkflowStatus=NEW` ho trovato due risorse interessate, ciascuna con tre risultati, per un totale di sei risultati di Security Hub.

Eseguendo il seguente comando di aggiornamento si aggiornerà lo stato del flusso di lavoro di quei sei risultati a `NOTIFIED` con una nota:```sh
./metahub --update-findings Workflow=NOTIFIED Note="Enter your ticket ID or reason here as a note that you will add to the finding as part of this update."

update-findings

update-findings

Il --update-findings ti chiederà conferma prima di aggiornare i tuoi risultati. Puoi saltare questa conferma utilizzando l'opzione --no-actions-confirmation.

Arricchimento dei Risultati

Puoi usare MetaHub per arricchire i tuoi risultati di AWS Security Hub con gli output di Context utilizzando l'opzione --enrich-findings. Arricchire i tuoi risultati significa aggiornarli direttamente in AWS Security Hub. MetaHub utilizza il campo UserDefinedFields per questo.

Arricchendo i tuoi risultati direttamente in AWS Security Hub, puoi sfruttare funzionalità come Insights e Filters utilizzando le informazioni aggiuntive non disponibili prima in Security Hub.

Ad esempio, vuoi arricchire tutti i risultati di AWS Security Hub con WorkflowStatus=NEW, RecordState=ACTIVE e ResourceType=AwsS3Bucket che sono public=True con output di Context:```sh ./metahub --sh-filters RecordState=ACTIVE WorkflowStatus=NEW ResourceType=AwsS3Bucket --mh-filters-checks public=True --enrich-findings

root@kitploit:~
<p align="center">
  <img src="https://assets.kitploit.com/production/public/readmes/6190/93a45d119a712b11ae5f23ea68e3a1f7d71e0e9511df7d7dadd2b462fcde71a2.png" alt="update-findings" width="850"/>
</p>

L'opzione `--enrich-findings` ti chiederà conferma prima di arricchire i tuoi findings. Puoi saltare questa conferma utilizzando l'opzione `--no-actions-confirmation`.

# Contribuire

Puoi seguire questa guida se vuoi contribuire al modulo Context [guida](https://github.com/gabrielsoltz/metahub/blob/HEAD/docs/context.md).
Scarica lo strumento
Possibili StatiValoreDescrizione
🔴 effectively-public100%La risorsa è effettivamente pubblica da Internet.
🟠 restricted-public40%La risorsa è pubblica, ma con una restrizione come un Security Group.
🟠 unrestricted-private30%La risorsa è privata ma senza restrizioni, come un gruppo di sicurezza aperto.
🟠 launch-public10%Sono risorse che possono avviare altre risorse come pubbliche. Ad esempio, un Auto Scaling Group o una Subnet.
🟢 restricted0%La risorsa è limitata.
🔵 unknown-La risorsa non può essere verificata.
Stati possibiliValoreDescrizione
🔴 non limitato100%Il principale è non limitato, senza alcuna condizione o restrizione.
🔴 principal non affidabile70%Il principale è un Account AWS, non parte dei tuoi account fidati.
🟠 principal non limitato40%Il principale non è limitato, definito con un wildcard. Potrebbero esserci condizioni che lo limitano o altre restrizioni come i blocchi pubblici S3.
🟠 principal cross-account30%Il principale proviene da un altro account AWS.
🟠 azioni non limitate30%Le azioni sono definite utilizzando wildcard.
🟠 azioni pericolose30%Alcune azioni pericolose sono definite come parte di questa policy.
🟠 servizio non limitato10%La policy consente un servizio AWS come principale senza restrizioni.
🟢 limitato0%La policy è limitata.
🔵 sconosciuto-La policy non può essere verificata.
Valore
Descrizione
🔴 non crittografato100%La risorsa non è completamente crittografata.
🟢 crittografato0%La risorsa è completamente crittografata, incluse le sue associazioni.
🔵 sconosciuto-La crittografia della risorsa non può essere verificata.
Stati possibiliValoreDescrizione
🟠 attached100%La risorsa supporta l'allegato ed è allegata.
🟠 running100%La risorsa supporta l'esecuzione ed è in esecuzione.
🟠 enabled100%La risorsa supporta l'abilitazione ed è abilitata.
🟢 not-attached0%La risorsa supporta l'allegato e non è allegata.
🟢 not-running0%La risorsa supporta l'esecuzione e non è in esecuzione.
🟢 not-enabled0%La risorsa supporta l'abilitazione e non è abilitata.
🔵 unknown-Non è stato possibile verificare lo stato della risorsa.
Stati possibiliValoreDescrizione
🟠 production100%È una risorsa di produzione.
🟢 staging30%È una risorsa di staging.
🟢 development0%È una risorsa di sviluppo.
🔵 unknown-La risorsa non ha potuto essere verificata per l'ambiente.
--sh-account
--sh-assume-role
--sh-account
--sh-assume-role
--sh-profile