Nota: alcuni collegamenti meno recenti potrebbero fare riferimento al nome precedente del progetto.
Che cos’è
Una suite eseguibile di test di regressione della sicurezza basata su scenari di attacco:- Ogni affermazione dispone di una verifica del modello eseguibile su uno spazio degli stati finito.
- Molte affermazioni dispongono di un modello negativo associato che produce una traccia di controesempio per una classe realistica di bug.
Dove si trovano i modelli
I modelli sono gestiti in un repository separato: vignesh07/openclaw-formal-models.Al momento tale repository non è raggiungibile (GitHub restituisce “Repository not found” al momento della stesura). Se risulta ancora non disponibile, chiedi nei canali dei manutentori di OpenClaw quale sia la posizione attuale prima di supporre che i modelli siano stati rimossi.
Avvertenze
- Si tratta di modelli, non dell’intera implementazione TypeScript: è possibile che il modello e il codice divergano.
- I risultati sono limitati dallo spazio degli stati esplorato da TLC. Un risultato positivo non implica sicurezza oltre i presupposti e i limiti modellati.
- Alcune affermazioni dipendono da presupposti espliciti sull’ambiente, ad esempio una distribuzione corretta e dati di configurazione corretti.
Riproduzione dei risultati
Clona il repository dei modelli ed esegui TLC:Affermazioni e target
Esposizione del Gateway e configurazione errata di un Gateway aperto
Affermazione: l’associazione a interfacce diverse da loopback senza autenticazione può rendere possibile una compromissione remota e aumentare l’esposizione; un token o una password blocca gli autori di attacchi non autenticati, secondo i presupposti del modello.
Consulta anche
docs/gateway-exposure-matrix.md nel repository dei modelli.
Pipeline di esecuzione del Node (funzionalità a rischio massimo)
Affermazione:exec host=node richiede (a) un elenco di comandi consentiti per il Node insieme ai comandi dichiarati e (b) un’approvazione in tempo reale, se configurata; nel modello, le approvazioni vengono associate a token per impedirne il riutilizzo.
Archivio di associazione (controllo dell’accesso ai messaggi diretti)
Affermazione: le richieste di associazione rispettano il TTL e i limiti delle richieste in sospeso.Controllo dell’ingresso (menzioni e aggiramento tramite comandi di controllo)
Affermazione: nei contesti di gruppo che richiedono una menzione, un comando di controllo non autorizzato non può aggirare il controllo basato sulle menzioni.Instradamento e isolamento delle chiavi di sessione
Affermazione: i messaggi diretti provenienti da interlocutori distinti non vengono accorpati nella stessa sessione, a meno che non siano esplicitamente collegati o configurati.Modelli v1++: concorrenza, nuovi tentativi e correttezza delle tracce
Modelli successivi che migliorano la fedeltà rispetto alle modalità di errore del mondo reale: aggiornamenti non atomici, nuovi tentativi e distribuzione dei messaggi.Concorrenza e idempotenza dell’archivio di associazione
Affermazione: l’archivio di associazione applicaMaxPending e l’idempotenza anche in presenza di intercalamenti: la sequenza di verifica e scrittura deve essere atomica o protetta da blocco e l’aggiornamento non deve creare duplicati. In concreto: le richieste simultanee non possono superare MaxPending per un canale e richieste o aggiornamenti ripetuti per la stessa coppia (channel, sender) non creano righe in sospeso attive duplicate.
Correlazione delle tracce e idempotenza dell’ingresso
Affermazione: l’acquisizione conserva la correlazione delle tracce durante la distribuzione ed è idempotente in caso di nuovi tentativi da parte del fornitore. Quando un evento esterno viene trasformato in più messaggi interni, ogni parte mantiene la stessa identità di traccia o evento; i nuovi tentativi non causano una doppia elaborazione; se mancano gli ID evento del fornitore, la deduplicazione ricorre a una chiave sicura, ad esempio l’ID traccia, per evitare di eliminare eventi distinti.Precedenza di dmScope nell’instradamento e identityLinks
Affermazione: l’instradamento mantiene isolate per impostazione predefinita le sessioni dei messaggi diretti e accorpa le sessioni soltanto quando è configurato esplicitamente, mediante la precedenza dei canali e i collegamenti di identità. Le impostazionidmScope specifiche del canale prevalgono sui valori predefiniti globali; identityLinks accorpa le sessioni soltanto all’interno di gruppi collegati esplicitamente, non tra interlocutori non correlati.