🦅 Falco Graduation 🦅
Il nuovo Standard nella Sicurezza Cloud-Native
11/04/2024
Sysdig, leader nella sicurezza cloud native basata su runtime insights, festeggia il progetto Falco, il quale è diventato un progetto “Graduation” all’interno della Cloud Native Computing Foundation (CNCF).
Questo genere di progetti sono i più “prestigiosi” all’interno della CNCF ritenuti stabili e production ready anche su infrastrutture molto complesse e critiche. Fanno parte di questa categoria progetti come harbor, cilium, containerd, prometheus e molti altri. Rientrare in questa categoria, quindi, è un grande prestigio e Falco dopo anni di sforzi ci dimostra l’importanza della sicurezza del mondo cloud native e della runtime security.
Falco infatti arriva proprio in un momento storico dove le aziende hanno bisogno di adeguarsi in fretta, non solo con soluzioni sempre più cloud native, ma anche sicure. Il suo engine per la scansione runtime permette proprio di identificare le minacce dove difficilmente si arriva ovvero durante l’esecuzione del container. Sapere immediatamente quando qualcuno si trova all’interno di un ambiente, identificandolo in pochi secondi e bloccarlo, riduce drasticamente la superficie di attacco e l’impatto sulle applicazioni.
Falco ha superato la soglia dei 100 milioni di download e ha guadagnato centinaia di contributors attivi da quando è passato alla fase precedente di Incubazione, all’interno del CNCF nel 2020. Le aziende che si basano pubblicamente su Falco includono Shopify, GitLab, Skyscanner, Frame.io e Booz Allen Hamilton; i manutentori del progetto includono sviluppatori di Sysdig, IBM, Apple e Red Hat.
La potenza della Runtime Security
Con la transizione in massa delle aziende verso le piattaforme di cloud provider pubblici sta diventando sempre più chiaro che anche gli attaccanti si stiano adeguando a questa nuova tendenza. Se in precedenza negli ambienti on-premise per effettuare un attacco ci si poteva impiegare settimane oggi purtroppo dall’inizio dell’attacco fino al pieno controllo dell’infrastruttura potrebbe richiedere anche meno di minuti!
Per questo motivo la Real-time visibility è un valido strumento che permette l’identificazione di comportamenti anomali attraverso più cloud providers, negli specifici workflow e addirittura attraverso le operazioni effettuate dagli utenti sui container. Questo permette una pronta e veloce risposta per minimizzare il rischio di attacchi ed un utilizzo non autorizzato delle risorse.
Cos’è Falco?
Per capire cos’è Falco è possibile fare un’analogia che calza a pennello con il suo funzionamento e la Real-time visibility. Possiamo immaginare Falco come una telecamera di sorveglianza a circuito chiuso che acquisisce immagini e mostra quando qualcosa è fuori dall’ordinario. Similarmente Falco recupera le informazioni, le elabora, identifica se quell’avvenimento è da ritenersi “fuori dal normale” e se lo ritiene tale lancia un allarme.
Il motore di Falco utilizza delle regole personalizzate sugli eventi del kernel linux e il protocollo eBPF come base dati; tutto questo viene arricchito con metadati provenienti dall’infrastruttura cloud-native come informazioni dai container e dalla piattaforma Kubernetes, per fornire avvisi in tempo reale.
Falco aiuta a ottenere visibilità in quegli ambienti dinamici ed effimeri tipici del cloud e mostra comportamenti anomali, potenziali minacce alla sicurezza e violazioni della compliance, contribuendo alla sicurezza completa del runtime.
L’utente ha quindi accesso ad una serie di informazioni “nascoste” come la natura dell’operazione eseguita e la gravità di questo avvenimento così che possa gestire in modo informato il problema.
Cosa si cela sotto il cofano?
Il funzionamento di Falco lo si può dividere in tre macroaree:
- la cattura dell’informazione
- il processing del dato catturato
- l’output dell’allarme dopo aver identificato il comportamento.
La cattura delle informazioni sul quale Falco si basa di default sono le chiamate a livello kernel dell’host ma è possibile utilizzare anche eBPF. Inoltre, Falco possiede molti plugin con i quali andare ad arricchire i dati come, per esempio, informazioni provenienti dai cloud provider, come Amazon e Google, ma anche informazioni più infrastrutturali come l’audit di kubernetes ed anche dati strutturati quali il JSON.
Il processing del dato catturato lo si può dividere in due macroaree, il filtering e l’enrichment; la prima fase è il filtering dello stream dati provenienti dalle chiamate a livello del kernel tramite l’ausilio di regole Falco. Queste regole hanno lo scopo di identificare eventi specifici come per esempio:
- L’accesso a dati sensibili (es. /etc/shadow)
- L’esecuzione di applicazioni (es. L’esecuzione di un nuovo processo in un container)
- Effettuare una operazione come root
- Lettura o scrittura di cartelle o file
- Aprire una nuova shell
- Connettersi in ssh
- La modifica di binari
- …
Falco di base possiede moltissime regole preconfezionate ma è anche possibile creare le proprie regole da zero.
Nella fase di enrichment Falco correla questi dati recuperati dal kernel con I metadati recuperati dai plugin in precedenza, inoltre esegue anche una funzione di traduzione dell’evento in un’informazione più leggibile e comprensibile all’utente.
Infine, l’output dell’allarme può essere inviato in molteplici modalità tra le quali:
- Stdout
- Syslog
- https
- gRPC
Alcuni strumenti supplementari
Assieme a Falco esistono alcuni strumenti dei quali vale la pena parlare che permettono di migliorarne ed ampliarne le funzioni.
Uno dei progetti opensource più popolari è Falcosidekick il quale si occupa proprio della visualizzazione degli eventi raccolti da Falco e l’integrazione con strumenti di terzi come per esempio: Slack, Elasticsearch, Prometheus, Pagerduty e molti altri. Questo progetto è molto utile nel caso si vogliano gestire gli eventi in modo più organico e inoltre l’interfaccia grafica web permette una visualizzazione più semplice degli eventi.
Grazie a Falco ora abbiamo uno strumento che osserva tutti gli eventi nel cloud ma manca un tassello fondamentale per avere una completa CDR (Cloud Detection and Response) ovvero la parte di Response agli attacchi. Infatti, Falco by default non ha nessun meccanismo di remediation agli eventi ed è qui che Talon entra in campo.
Falco Talon è un progetto opensource che permette di aggiungere una componente di risposta ad un evento malevolo. Similarmente a Falco anche Talon ha un set di regole ma al contrario di Falco queste si occupano di gestire gli eventi con delle azioni. Ogni Role ha un suo “Attuatore” il quale ha una lista in sequenza di azioni che permettono la risoluzione del problema. Le operazioni che è possibile eseguire sono molteplici, prendendo come esempio un cluster kubernetes è possibile eseguire delle operazioni che vanno da quella più aggressiva come la distruzione di un pod, ad una più leggera e meno invasiva come l’isolamento e il tag del pod con delle label.
Grazie a questi progetti aggiuntivi è quindi possibile utilizzare Falco in modo più semplice per effettuare il detect con il Falcosidekick ed effettuare una risposta pronta in pochi secondi con Talon. Questi strumenti rendono dunque Falco un progetto completo e pronto per essere introdotto nella difesa delle infrastrutture cloud native.