Cloudflare ha sviluppato Workers, un ambiente cloud serverless basato su istanze isolate di V8, il motore JavaScript creato da Google per i browser Chrome e Chromium.
Secondo le dichiarazioni della società, questo approccio garantirebbe maggiore efficienza nella creazione ed esecuzione delle applicazioni all’interno della rete globale di Cloudflare con 155 data center, aprendo però le porte ad alcune perplessità sul fronte della sicurezza.
Tuttavia, prima di scendere nel merito, bisogna capire come funziona Workers.
Cosa è Workers e come funziona
Workers è un ambiente cloud serverless, ovvero una sorta di PaaS che permette agli sviluppatori di creare logiche applicative indipendenti dai dettagli di implementazione sottostanti (per esempio, l’accesso ai database o le configurazioni dell’infrastruttura), garantendo scalabilità “infinita” (compatibilmente con il budget del cliente per il pagamento del servizio).
Simile al sistema Lambda@Edge di AWS, che consente l’implementazione del codice nella cache CloudFront di Amazon, Workers è progettato per consentire agli sviluppatori di creare e implementare servizi più vicini al browser dell’utente finale.
Ad esempio, si consideri un server web che implementa la logica di business per un’applicazione rivolta al cliente. Se il cliente desidera inserire un’intestazione Http o un cookie personalizzati nel flusso dell’applicazione, gli sviluppatori possono farlo utilizzando Lambda@Edge o Workers senza la necessità di intervenire direttamente sul server per aggiornare il codice.
Workers si differenzia da Lambda@Edge perché sfrutta le istanze isolate di V8. Questa tecnica, che permette ai singoli tabs dei browser Google di mantenere il proprio stato JavaScript, può apportare benefici di performance e risparmio anche al cloud serverless.
Infatti, potendo eseguire diverse istanze all’interno dello stesso processo del sistema operativo, non è necessario istanziare un nuovo processo ogni volta che un cliente desidera aggiungere un codice personalizzato, con un risparmio di risorse.
Considerazioni sulla sicurezza
Se il beneficio in termini di sviluppo è chiaro, sul piano della sicurezza il cloud serverless richiede maggiore attenzione. Visto l’utilizzo massivo di JavaScript o WebAssembly, ci sono vincoli nei casi d’uso (ad esempio, per le operazioni finanziarie basate su sistemi Legacy e mainframe).
Inoltre, in un ambiente multi-tenant, bisogna considerare l’efficacia del modello di segmentazione: infatti, in caso di errore, un cliente potrebbe accedere ai dati di un altro segmento. In un contesto di virtualizzazione del sistema operativo, un hypervisor traccia i confini di segmentazione tra le diverse istanze dell’Os. Docker, o altro orchestratore di container, marca invece la separazione a livello di processo: in una singola istanza del sistema operativo, diversi processi possono essere eseguiti sotto la supervisione di contenitori diversi.
Con le istanze isolate, il limite che segmenta i dati e lo stato di esecuzione da un cliente all’altro può trovarsi all’interno dello stesso processo del sistema operativo.
Le implicazioni sulla sicurezza non sono necessariamente né positive né negative: anche gli altri modelli di segmentazione (per istanze virtuali o per processo) hanno già dimostrato vulnerabilità agli attacchi.
Pertanto si suggerisce un’oculata valutazione del comportamento delle applicazioni (utilizzando ad esempio metodologie come l’application threat modeling) per capire dove implementare ulteriori tecniche di difesa a supporto della segmentazione.