Fattori di minaccia di Kubernetes gestiti

Completato

In un ambiente Kubernetes gestito, la gestione della sicurezza implica la comprensione e la mitigazione delle minacce in varie istanze. Di seguito è riportata un'analisi dettagliata dei fattori di minaccia in istanze specifiche:

Account compromesso

  • Fattore di minaccia: un utente malintenzionato ottiene l'accesso a un cluster Kubernetes tramite credenziali, token API o chiavi rubate. Ciò può causare accessi non autorizzati, furti di dati e distribuzioni dannose.
  • Mitigazione: implementare meccanismi di autenticazione forti, autenticazione a più fattori (MFA), rotazione regolare delle credenziali e principi di accesso con privilegio minimo.

Immagini vulnerabili o configurate in modo errato

  • Fattore di minaccia: dopo la distribuzione, le immagini del contenitore con vulnerabilità o configurazioni errate possono essere sfruttate dagli utenti malintenzionati. Queste vulnerabilità potrebbero includere software obsoleto, impostazioni predefinite non sicure o segreti incorporati.
  • Mitigazione: usare gli strumenti di analisi delle immagini per rilevare le vulnerabilità prima della distribuzione, applicare i criteri di provenienza delle immagini e adottare un processo di firma dell'immagine del contenitore.

Configurazione errata dell'ambiente

  • Fattore di minaccia: configurazioni errate nelle impostazioni Kubernetes o nei descrittori di distribuzione possono esporre i cluster ad attacchi. I problemi comuni includono interfacce dashboard esposte, impostazioni del controllo degli accessi in base al ruolo (RBAC) eccessivamente permissive ed endpoint non protetti.
  • Mitigazione: seguire le procedure consigliate per la configurazione sicura, controllare regolarmente le configurazioni con strumenti automatizzati e usare i controller di ammissione per applicare la conformità ai criteri.

Livello di attacco dell'applicazione

  • Fattore di minaccia: le applicazioni in esecuzione nei contenitori potrebbero essere vulnerabili ai vettori di attacco Web tradizionali, ad esempio SQL injection o scripting intersito (XSS), che possono compromettere il contenitore o causare un ulteriore sfruttamento del cluster.
  • Mitigazione: usare le procedure consigliate per la sicurezza delle applicazioni, ad esempio la convalida dell'input e la codifica dell'output e usare i Web Application Firewall (WAF). Implementare la sicurezza nella pipeline diIntegrazione continua (CI)/Recapito continuo e/o distribuzione ( CD), inclusi gli strumenti di analisi statica e dinamica.

Attacco a livello di nodo

  • Fattore di minaccia: se un utente malintenzionato ottiene l'accesso a un nodo Kubernetes, può potenzialmente aumentare i privilegi per controllare l'intero cluster. Le vulnerabilità potrebbero derivare da sistemi operativi obsoleti o componenti Kubernetes.
  • Mitigazione: mantenere aggiornati i nodi con le patch di sicurezza più recenti, limitare l'accesso ai nodi usando criteri di rete e firewall e usare sistemi di rilevamento delle intrusioni basati su host (HIDS).

Traffico non autorizzato

  • Fattore di minaccia: l’accesso non autorizzato al cluster o proveniente da esso può verificarsi se i criteri di rete non sono configurati correttamente, consentendo in tal modo agli utenti malintenzionati di esfiltrare i dati, distribuire malware o sfruttare i servizi esposti.
  • Mitigazione: implementare criteri di rete rigorosi per controllare il traffico in ingresso e in uscita, separare i carichi di lavoro sensibili usando gli spazi dei nomi e monitorare il traffico per individuare modelli anomali.

La gestione di queste minacce in un ambiente Kubernetes gestito richiede un approccio di sicurezza a più livelli che includa sia le pratiche specifiche di Kubernetes che le misure di sicurezza tradizionali. Il monitoraggio continuo, i controlli regolari e l'adesione al principio del minimo privilegio in tutti gli aspetti del cluster sono componenti essenziali di una solida strategia di sicurezza Kubernetes.

Diagramma che mostra un esempio di fattori di minaccia Kubernetes gestiti.

Tecniche di attacco comuni

  • Sfruttare immagini vulnerabili: un'applicazione vulnerabile rivolta al pubblico in un cluster che consente l'accesso iniziale al cluster. Casi tristemente noti: SolarWinds, Log4j
  • Accedere alle applicazioni esposte: un'interfaccia sensibile esposta a Internet rappresenta un rischio per la sicurezza. Alcuni framework popolari non sono stati progettati per essere esposti a Internet e pertanto non richiedono l'autenticazione per impostazione predefinita. Di conseguenza, l'esposizione a Internet consente l'accesso non autenticato a un'interfaccia sensibile che potrebbe consentire l'esecuzione di codice o la distribuzione di contenitori nel cluster da parte di un attore malintenzionato. Esempi di tali interfacce che sono state sfruttate includono Apache NiFi, Kubeflow, Argo Workflows, Weave Scope e il dashboard Kubernetes.
  • Distribuire contenitori backdoor: gli utenti malintenzionati eseguono il codice dannoso in un contenitore nel cluster. Tramite i controller di Kubernetes, ad esempio DaemonSets o Distribuzioni, gli utenti malintenzionati si sono assicurati che un numero costante di contenitori venisse eseguito in uno, o in tutti, i nodi del cluster.
  • Abuso nei confronti dei ruoli permissivi Software Assurance (SA): l'account del servizio (SA) rappresenta un'identità dell'applicazione in Kubernetes. Per impostazione predefinita, una Software Assurance viene montata in ogni pod creato nel cluster. Tramite la Software Assurance, i contenitori nel pod possono inviare richieste al server API Kubernetes. Gli utenti malintenzionati che ottengono l'accesso a un pod accedono al token di Software Assurance ed eseguono azioni nel cluster, in base alle autorizzazioni di SA. Se il controllo degli accessi in base al ruolo (RBAC) non è abilitato, Software Assurance dispone di autorizzazioni illimitate nel cluster. Se il controllo degli accessi in base al ruolo (RBAC) è abilitato, le relative autorizzazioni vengono determinate dai ruoli RoleBindings e ClusterRoleBindings associati.
  • Escape verso l'host: il volume hostPath monta una directory o un file dall'host al contenitore. Gli utenti malintenzionati che dispongono delle autorizzazioni per creare un nuovo contenitore nel cluster possono crearne uno con un volume hostPath scrivibile e ottenere la persistenza nell'host sottostante. Ad esempio, quest'ultimo può essere ottenuto creando un processo cron nell'host.

Diagramma che mostra un esempio di tecniche di attacco comuni di Kubernetes.