Whitepaper di LayerT

Fail-closed per progettazione

Versione
1.1
Pubblicato
3 ottobre 2026
Destinatari
Ingegneri della sicurezza
Tempo di lettura
14 minuti
A cura di
Il team di LayerT
SintesiPolicy firmata per l’applicazione nel browser: come le regole vengono pubblicate, firmate, distribuite, verificate e applicate, e perché una policy non aggiornata blocca invece di lasciar passare.

Un controllo che funziona nel browser ha un punto debole evidente: il browser si trova sul laptop del dipendente. Se il laptop può smettere in silenzio di ricevere la policy, o accettare una policy che non dovrebbe, il controllo diventa un semplice suggerimento. Questo documento descrive come LayerT chiude queste lacune con una policy firmata e un comportamento predefinito fail-closed (in caso di errore blocca), e come appare tutto questo alla persona davanti alla tastiera.

Perché applicare le regole proprio nel browser

Gli strumenti di sicurezza di rete vedono traffico cifrato verso un sito web. Non possono vedere cosa è stato digitato in un modulo di login, né a chi appartenesse l’account. Quando una richiesta raggiunge la rete, un login personale su un laptop di lavoro appare identico a uno di lavoro.

LayerT gira là dove avviene la digitazione. Il suo content script vede il valore nel campo, lo confronta con le vostre regole e agisce prima che il codice del sito invii la richiesta. Questa posizione è il vantaggio del prodotto, ed è anche il motivo per cui la policy che applica deve essere affidabile.

Una policy, una firma

Gli amministratori scrivono le regole nella console come bozze. La pubblicazione trasforma tutte le bozze in sospeso in un’unica nuova versione della policy della vostra organizzazione. I numeri di versione possono solo crescere, e ogni pubblicazione prende il numero successivo sotto un lock, così due amministratori non possono produrre la stessa versione.

  1. ConsoleBozzeRegole, modifiche agli elenchi e revoche di eccezioni vengono preparate. Revisione facoltativa a due autori.
  2. Cloud di LayerTCompilazioneRegole, eccezioni approvate ed elenchi delle persone vengono raccolti in un unico documento per l’intera organizzazione.
  3. Cloud di LayerTFirmaJSON canonico (chiavi ordinate, firma esclusa) firmato con Ed25519.
  4. BrowserVerificaVerificato con Web Crypto rispetto alle chiavi integrate nell’estensione.

Il documento firmato riporta l’organizzazione a cui appartiene, la sua versione, quando è stato emesso e quando scade. Il rollback non riavvolge la cronologia. Pubblica le vecchie regole come una versione nuova e più alta, mantenendo le eccezioni approvate nel frattempo.

Cosa verifica il browser

L’estensione scarica la policy ogni 15 minuti, all’avvio e dopo la navigazione, usando richieste condizionali, così una policy invariata non costa quasi nulla. Prima di usare una policy, verifica:

Verifica, nell’ordineRifiuta
VersioneTutto ciò che non è più recente di ciò che ha già, così una policy vecchia non può essere riproposta
OrganizzazioneUna policy destinata a qualsiasi organizzazione diversa dalla propria
ChiaveTutto ciò che è firmato con una chiave che l’estensione non conosce
FirmaTutto ciò che non risulta valido rispetto alla chiave pubblica integrata nell’estensione
ScadenzaUna policy oltre la sua ora di scadenza, secondo l’orologio del laptop

Una policy rifiutata viene scartata, e il browser mantiene quella che aveva. Nell’estensione possono essere integrate più chiavi pubbliche contemporaneamente, così la chiave di firma può essere ruotata senza interruzioni. La chiave di firma è custodita in un servizio di gestione delle chiavi e non può essere esportata: i server di LayerT chiedono al servizio ogni singola firma. La chiave è protetta via software. Il servizio offre questo tipo di chiave (Ed25519) solo in software, quindi non è custodita in un modulo di sicurezza hardware. Questo è realizzato e in uso nell’ambiente di test di LayerT. Per la produzione, che custodirà la chiave in Google Cloud KMS, non c’è alcun deploy. Le build di sviluppo firmano con una chiave locale di cui le build di produzione dell’estensione non si fidano.

Su cosa può agire una regola

Le regole sono nate con i login: una regola indica un campo, e LayerT verifica ciò che vi viene digitato quando un modulo viene inviato, o ciò che viene incollato in una casella di testo a riga singola.

Le regole possono agire anche sul testo digitato in un campo, e su un file consegnato a una pagina tramite una casella di selezione file, un trascinamento o un’operazione di incolla, valutato in base al nome o al testo contenuto in un file di testo semplice fino a 1 MB. Un file che corrisponde a una regola di blocco non raggiunge mai la pagina.

Una parte di questo segue lo stesso principio del resto di questo documento. Una regola sul testo di un file ferma anche un file che LayerT non può leggere, come un’immagine, un PDF o un documento di Office, e dice di non averlo potuto controllare. Un input che LayerT non può valutare viene fermato, non lasciato passare.

Il comportamento fail-closed

Ogni policy scade 7 giorni dopo l’emissione. LayerT la firma di nuovo automaticamente 48 ore prima, quindi un browser connesso non vede mai una policy scaduta. La vede solo un browser che non è riuscito a raggiungere LayerT per giorni.

In quel caso, LayerT non ripiega su “consenti”. Su qualsiasi pagina coperta da una regola blocca o forza il logout, ferma gli invii dei moduli e le operazioni di incolla nei campi della regola, e mostra una scheda che spiega il motivo:

Connectivity required (connessione necessaria). LayerT non è riuscito ad aggiornare la policy di questo browser, quindi non può verificare questa azione. Collegatevi alla vostra rete, poi riprovate.

Le regole avvisa e monitora continuano a funzionare. Quando il browser si riconnette e riceve una policy aggiornata, la scheda scompare da sola entro circa 30 secondi, senza ricaricare la pagina.

La stessa scheda ferma un file consegnato ai campi di una regola sui file, e il tasto Invio in un campo osservato da una regola sulla digitazione, senza leggere nulla.

Due funzionalità più recenti vanno in fail-closed allo stesso modo.

Regole per un gruppo della directory. Una regola può applicarsi alle persone di un gruppo della directory, o a tutti quelli che ne sono fuori. Ogni browser riceve una risposta firmata sui gruppi della propria persona, valida per 24 ore. Un browser che non ha una risposta aggiornata ferma l’azione nelle pagine in cui una regola di blocco indica un gruppo, come fa quando la sua policy non è aggiornata.

Proseguire con un motivo. Una regola sui moduli o sull’incolla può lasciar proseguire le persone oltre un blocco indicando un motivo. LayerT lascia passare l’azione solo dopo che il server ha registrato il motivo. Offline, o quando LayerT non è raggiungibile, l’azione resta bloccata e la scheda conserva ciò che è stato digitato.

Perché non fail-open. Una policy che si disattiva quando un laptop va offline, o quando qualcuno blocca un dominio, protegge solo le persone che non stavano cercando di aggirarla. Le regole di ingegneria scritte di LayerT rendono il comportamento fail-closed non negoziabile, e un test di scenario lo dimostra in un browser reale.

Abbiamo scelto il comportamento fail-closed solo dove si applica una regola di blocco, non sull’intero web. Una policy non aggiornata su un laptop ferma il login rischioso. Non impedisce alla persona di leggere le notizie.

L’arresto di emergenza

A volte serve disattivare l’applicazione delle regole, ovunque, subito: una regola è sbagliata e sta bloccando il team commerciale. L’Owner può attivare un arresto di emergenza. L’arresto è esso stesso una versione firmata della policy, quindi nessuno può inviare a un browser un arresto falsificato per disattivare LayerT. Viene registrato nel log, e i browser lo recepiscono alla sincronizzazione successiva: entro 15 minuti, prima se la persona naviga. L’arresto è contrassegnato come urgente all’interno della policy, ma oggi l’estensione non lo scarica più rapidamente delle altre modifiche.

Eccezioni senza backdoor

Una regola può permettere alle persone bloccate di chiedere l’accesso. Un approvatore sceglie per quanto tempo: un singolo tentativo (una finestra di cinque minuti), 15 minuti, oppure 1, 8 o 24 ore. Le eccezioni permanenti possono essere concesse solo dal Compliance Officer o dall’Owner, mai dall’IT, così chi scrive le regole non è chi concede eccezioni permanenti a quelle regole.

Un’approvazione diventa parte di una policy firmata di nuovo, in un unico passaggio atomico, quindi un’eccezione è affidabile esattamente quanto la regola che allenta. Nessuno può approvare la propria richiesta. Il server la rifiuta. Le richieste su cui nessuno decide scadono.

Un’applicazione che una pagina non può aggirare

LayerT agisce sugli invii dei moduli e sulle operazioni di incolla prima che vengano eseguiti i gestori del sito, e li annulla quando una regola trova una corrispondenza, quindi la richiesta del sito non parte mai. Un file che corrisponde a una regola di blocco viene fermato allo stesso modo, prima che lo vedano i gestori della pagina. Il testo digitato è diverso: è nella pagina fin dal primo tasto premuto, quindi una regola sulla digitazione impedisce che venga inviato con un modulo, un pulsante di invio o il tasto Invio, e non può riprenderlo da una pagina che invia mentre si digita. I prompt che spiegano un blocco sono costruiti per resistere alla pagina su cui sono disegnati:

  • shadow root chiuse che gli script della pagina non possono raggiungere,
  • pulsanti che rispondono solo a clic e pressioni di tasti reali,
  • nessun campo password, mai, e un piè di pagina che dice che LayerT non ne chiede mai una,
  • un puntino ambra sull’icona di LayerT nella barra degli strumenti, che la pagina non può disegnare.

Cosa viene registrato

Ogni blocco, ogni avviso, ogni corrispondenza di una regola monitora e ogni uso di un’eccezione viene registrato nel log con la regola, l’indirizzo della pagina, il campo, il valore corrispondente e la persona. Quando una regola trova una corrispondenza, LayerT registra ciò che corrispondeva e, per una regola sulla digitazione, il testo del campo, così che un auditor possa verificare la decisione. Una regola può mascherare o nascondere i propri valori.

  • I valori sono leggibili di default, così un auditor può confermare che ciò che è stato bloccato era davvero un account personale. Il browser invia sempre il valore, e l’impostazione con cui una regola lo maschera o lo nasconde viene applicata sul server prima che qualsiasi cosa venga archiviata.
  • Una regola sulla digitazione conserva l’intero campo com’era quando la regola ha trovato la corrispondenza, fino a 10.000 caratteri, non solo la parte che corrispondeva.
  • Una regola sui file conserva il nome, il tipo e la dimensione del file, e se LayerT ha potuto leggerlo. Il testo di un file viene letto nel browser e non ne esce mai.
  • Un motivo indicato per proseguire oltre un blocco viene conservato insieme alla corrispondenza, con le parole della persona.
  • Nessuna regola legge una password o un codice compilati da LayerT, quindi la password di un account condiviso non può finire in ciò che una regola registra. Una regola sulla digitazione non legge mai, in nessun caso, una casella della password o una casella del codice monouso.
  • Una regola sui moduli o sull’incolla legge i campi che indica, e tra questi può esserci una casella della password in cui una persona ha digitato da sé. Un valore del genere viene registrato in forma leggibile a meno che la regola non sia impostata per mascherare o nascondere i propri valori.

Gli eventi di audit sono conservati per 365 giorni di default.

Cosa contiene un pacchetto, e cosa può fare un laptop compromesso

La policy firmata che un browser riceve si chiama pacchetto di policy. È un unico documento JSON per l’intera organizzazione: ogni regola, gli elenchi a cui le regole fanno riferimento, l’impostazione dell’arresto di emergenza, l’elenco dei browser revocati e ogni eccezione approvata e attiva. Non contiene mai password degli account condivisi, codici dell’app di autenticazione, credenziali del dispositivo o chiavi di firma. Questi viaggiano separatamente, un login alla volta, e restano in memoria.

Da questa progettazione derivano due conseguenze, che dichiariamo apertamente.

Ogni laptop contiene il pacchetto dell’intera organizzazione. Oggi ogni browser riceve lo stesso pacchetto, quindi ogni laptop con un browser approvato contiene le allowlist di altre persone, e ogni eccezione attiva con il valore approvato, chi l’ha approvata e la motivazione fornita. Le appartenenze ai gruppi non viaggiano più nel pacchetto: ogni browser riceve una risposta firmata sui gruppi della propria persona, e non viene a conoscenza di quelli di nessun altro. I pacchetti limitati a una singola persona fanno parte della progettazione di LayerT ma non sono realizzati. Trattate il pacchetto come dati aziendali interni.

La firma protegge il pacchetto in transito, non a riposo. Il browser verifica un pacchetto una sola volta, al suo arrivo, poi lo salva come JSON in chiaro nel profilo del browser e applica ciò che ha salvato. A riposo, lo protegge solo la cifratura del disco del laptop. Quindi:

ChiCosa può fare
Una pagina webNulla sul pacchetto. Non può leggere lo storage dell’estensione né inviare messaggi all’estensione
Qualcuno sulla reteRitardare gli aggiornamenti fino a 7 giorni, dopodiché le regole di blocco vanno in fail-closed. Non può falsificare, alterare o riproporre un pacchetto
La persona, o software eseguito con la sua identitàLeggere l’intero pacchetto. Un software in grado di scrivere nello storage dell’estensione del profilo può modificarlo e disattivare l’applicazione delle regole
Un amministratore, o malware con diritti di amministratoreAggirare LayerT su quel laptop: modificare lo storage, rimuovere le policy, sostituire l’estensione o cambiare l’orologio
Chi ha in mano un laptop bloccato con cifratura del discoNulla nel profilo. Revocate comunque il browser

Nessun controllo che giri all’interno di un browser può resistere a un amministratore sullo stesso laptop, e LayerT non pretende di farlo. Si affida ai controlli che ogni parco macchine gestito dovrebbe avere: cifratura completa del disco, nessun diritto di amministratore locale, LayerT installato forzatamente tramite il vostro MDM, strumenti per sviluppatori delle estensioni e modalità sviluppatore bloccati, e una procedura che revoca il browser, sospende la persona e blocca il laptop contemporaneamente. La revoca di un browser lo esclude da LayerT e gli impedisce di applicare le regole. Non lo blocca.

Una violazione dei server di LayerT è un caso diverso. Un attaccante che controlla l’applicazione di LayerT potrebbe chiedere al servizio di gestione delle chiavi di firmare finché mantiene quell’accesso, e i browser accetterebbero ciò che ha firmato. Non potrebbe copiare la chiave all’esterno, ogni richiesta di firma viene registrata nel log, e rimuovere il suo accesso pone fine al problema. L’analisi completa, caso per caso, è in Pacchetti di policy e compromissione del dispositivo.

Limiti

  • Le regole agiscono sugli invii dei moduli, sulle operazioni di incolla, sul testo digitato e sui file consegnati a una pagina. LayerT legge solo testo semplice, e non è uno scanner di contenuti: non guarda dentro PDF, file di Office o immagini.
  • I dati che una pagina invia da sola, senza un modulo, un’operazione di incolla, un campo digitato o un file che le viene consegnato, sono fuori da ogni regola.
  • Una regola sulla digitazione non può tenere il testo fuori dalla pagina. Avvisa la persona e impedisce che il testo venga inviato con un modulo, un pulsante di invio o il tasto Invio.
  • Il proseguire con un motivo, e le regole per un gruppo della directory, dipendono dai server di LayerT. Offline, un motivo non può essere registrato, e un browser conserva la sua ultima risposta sui gruppi della propria persona fino a 24 ore.
  • Una pagina aperta conserva le regole con cui è stata caricata finché non viene ricaricata o il suo indirizzo non cambia.
  • L’arresto di emergenza e le nuove regole raggiungono un browser alla sincronizzazione successiva, non istantaneamente.
  • Un pacchetto viene verificato quando arriva, non ogni volta che viene letto. Chi può scrivere nello storage dell’estensione del profilo del browser, o ha diritti di amministratore locale, può aggirare l’applicazione delle regole su quel laptop. Impedite alle persone di avere diritti di amministratore locale.
  • Ogni browser contiene il pacchetto dell’intera organizzazione, comprese le eccezioni approvate di altre persone.
  • La scadenza viene valutata in base all’orologio del laptop.
  • Il pacchetto firmato dell’estensione che l’MDM installa forzatamente è realizzato e verrà distribuito con il primo rilascio in produzione di LayerT. Non è ancora stato eseguito su una macchina gestita. L’installazione forzata impedisce alle persone di disattivare LayerT nelle impostazioni di Chrome. Non ferma un amministratore.

Il modo migliore per giudicare una progettazione fail-closed è provare a romperla. Portate alla demo le vostre domande più difficili: vi mostreremo che cosa succede.