Differenza tra controllo del flusso di informazioni, integrità del flusso di dati e contaminazione

1

Le tre tecniche / concetti sono frequentemente citati nei recenti documenti di sicurezza accademici.

Ma quali sono la somiglianza, la differenza e la relazione tra di loro.

Di seguito la mia comprensione molto superficiale:

Tutti comprendono etichette, che vengono utilizzate per indicare le fonti o i tipi di informazioni.

Tainting è una forma semplice di controllo del flusso di informazioni. Ha solo 1 bit di informazioni per ogni byte / parola: macchiato o non dipinto.

Qualcuno potrebbe fornire ulteriori approfondimenti sulla domanda?

    
posta Infinite 03.06.2016 - 16:53
fonte

2 risposte

1

Il controllo del flusso di informazioni è un concetto ampio, ma il punto cruciale è che si può tentare di aumentare la sicurezza di un processo identificando quali parti della memoria dovrebbe legittimamente modificare, e quindi confrontandolo con le parti della memoria in realtà tenta di modificare. Questo può essere ampio o dettagliato a piacere: potresti prendere in considerazione Code Access Security come un vero e proprio modulo di IFC, o anche qualcosa di semplice come i permessi e il controllo dei file. Più comunemente, tuttavia, l'IFC viene applicato al codice in fase di compilazione / collegamento e applicato nell'assembly generato (o nel runtime della lingua se il programma è basato su JIT). Questo può anche, più ampiamente, essere applicato a casi come la perdita di informazioni, in cui si desidera capire come un dato sensibile si fa strada attraverso il sistema.

L'analisi di Taint è un meccanismo attraverso il quale è possibile implementare alcuni aspetti di IFC. Al fine di produrre la lista bianca delle sezioni di memoria legittime che un'operazione dovrebbe toccare, il compilatore valuta il codice per quali variabili vengono lette / scritte, quali funzioni vengono chiamate e quali percorsi di codice dovrebbero essere seguiti (ad esempio se un metodo viene chiamato con un valore statico, può dedurre che determinati rami devono sempre essere presi / non presi). Questo elenco può essere considerato come un elenco di entità che sono contaminate dall'operazione. In un caso più ampio, il controllo dell'inquinamento può anche essere usato come parte delle tecniche di analisi del codice in cui le fonti (cioè le posizioni da cui arrivano input non attendibili) possono essere mappate contro gli scarichi (cioè le posizioni in cui si verificano le operazioni rilevanti per la sicurezza), in modo tale che ciascuna sorgente abbia una lista di drenaggi mantenuti, e ogni drain ha una lista di fonti da cui può essere potenzialmente contaminato - questo è comunemente dimostrato considerando un caso in cui il valore dell'URL (source) potrebbe raggiungere una query SQL (drain), con conseguente iniezione SQL.

L'integrità del flusso di dati è semplicemente un termine usato per descrivere se un'applicazione in protezione IFC si è allontanata o meno dal flusso previsto. Quando il programma viene eseguito, è strumentato in qualche modo al fine di garantire che ogni istruzione o insieme di istruzioni non violi l'integrità del flusso di dati, vale a dire che i valori che non dovevano essere scoperti dall'operazione sono rimasti tali.

    
risposta data 03.06.2016 - 17:27
fonte
0

Controllo del flusso di informazioni

Il modo in cui ho capito è che il controllo del flusso di informazioni è un insieme di misure per proteggere il controllo e il flusso di dati dei programmi da interferenze dannose.

Integrità del flusso di dati

Garantire l'integrità dei tuoi dati assicurandoti che nessun dato non attendibile (ad es. input dell'utente) possa influenzare parti cruciali del tuo calcolo. È in qualche modo collegato al controllo dell'integrità del flusso in cui si desidera garantire che un attaccante non possa deviare il flusso di controllo, ad es. nessun buffer overflow, return-oriented-programming e simili, ma non ho una chiara distinzione per te. Alcuni potrebbero obiettare che l'integrità del flusso di dati copre anche gli attacchi di soli dati in cui non viene eseguito alcun codice irregolare, ma l'input malevolo modifica solo i dati su cui il programma opera, ma non sono completamente sicuro della definizione esatta.

Taint Tracking

Un meccanismo di controllo del flusso di informazioni che assegna etichette ai dati di interesse. Le etichette possono essere più di un semplice booleano, ad esempio i dati potrebbero essere etichettati in base all'origine. Ogni volta che i dati etichettati / contaminati vengono utilizzati in un calcolo, la contaminazione si verifica e non appena i dati contaminati stanno per perdere (scritti su file / registri / rete / ...). Taint Tracking è una misura ben studiata nel campo del controllo del flusso delle informazioni. Si sforza di dare dure garanzie ma viene spesso usato nella pratica. Taint Tracking può essere implementato come analisi dinamica o statica.

    
risposta data 03.06.2016 - 17:21
fonte

Leggi altre domande sui tag