La rete con due diodi di dati (in entrata e in uscita) è ancora sicura?

3

Ho un software che elabora dati numerici puri e fornisce una risposta.

Per renderlo sicuro, lo metto dietro a due diodi di dati: uno per i dati in arrivo e uno per la risposta in uscita. I diodi dati sono implementati come hardware specifico del cliente.

Punto importante: i diodi dati sono larghi 4 bit e quindi consentono solo parole a 4 bit. I dati sono puramente numerici e codificati come questo in forma binaria:

0000 = '0'
0001 = '1'
0010 = '2'
0011 = '3'
0100 = '4'
0101 = '5'
0110 = '6'
0111 = '7'
1000 = '8'
1001 = '9'
1010 = '.'
1011 = ';' (separator)

Il mio software dietro i diodi dati è ancora al riparo dagli attacchi degli hacker?

Credo di sì, perché le parole dati a 4 bit non consentono agli hacker di inviare comandi malevoli. Se fossero larghi 8 bit, tutti i caratteri ASCII sarebbero arrivati e il software sarebbe vulnerabile.

    
posta Pekka Sivonen 18.01.2018 - 11:17
fonte

2 risposte

6

Esistono diversi casi d'uso per i diodi di dati e non è chiaro quale sia esattamente il tuo caso d'uso e se i diodi di dati sono la soluzione per il tuo problema sconosciuto. Ma suppongo che i diodi di dati non siano ciò di cui hai realmente bisogno e che la tua idea attuale di come utilizzare i diodi di dati non fornisca la sicurezza che prevedi:

  • Un caso di utilizzo dei diodi di dati è quello di assicurarsi che i dati possano solo lasciare un sistema ma non entrare mai in un sistema. Questo è ad esempio utilizzato per estrarre i dati dai sistemi di settore, ma interrompere qualsiasi flusso di dati nei sistemi del settore in modo che non possano essere attaccati.
  • L'altro caso d'uso è assicurarsi che i dati possano solo entrare in un sistema ma non lasciarlo mai. Questo è ad esempio utilizzato per alimentare i dati raccolti da un ambiente di sicurezza inferiore in un sistema che contiene dati molto sensibili e garantisce che nessun dato sensibile possa mai diffondersi nell'ambiente di sicurezza inferiore, anche in caso di bug o vulnerabilità.

Il tuo caso d'uso non è nessuno di questi. Sembra invece che tu voglia inviare alcuni dati dall'esterno a qualche servizio e ottenere una risposta, ma proteggere ancora il servizio dall'essere hackerato dall'esterno. Questa comunicazione bidirezionale non è il caso d'uso del diodo unidirezionale dei dati. E semplicemente combinando due diodi di dati, si consente essenzialmente la comunicazione bidirezionale (per lo più illimitata) e quindi non si protegge il servizio.

Ciò di cui probabilmente avresti bisogno è invece un gateway a livello di protocollo applicativo, ovvero un sistema che consente la comunicazione limitata bidirezionale . Se si applica correttamente la sintassi e la semantica del protocollo di comunicazione, tale gateway può assicurarsi che il servizio ottenga solo i dati che può gestire in modo sicuro e che solo i dati lascino il servizio che aderisce alla sintassi e alla semantica definite del protocollo - che limita strongmente sia il modo in cui l'attaccante potrebbe compromettere il servizio e come potrebbe utilizzare un compromesso efficace.

    
risposta data 18.01.2018 - 13:32
fonte
2

È ancora a rischio. Sembri fraintendere come funziona un attacco.

Ad esempio, supponi di avere il seguente -

int arr[4];
int idx = ReadNumberFromInput();
int val = ReadNumberFromInput();
arr[idx] = val;

Non c'è stato alcun controllo su idx per assicurarsi che sia tra 0-3. Stai sovrascrivendo un pezzo di memoria arbitrario con val. È possibile che idx sia creato per indicare istruzioni che possono essere successivamente richiamate dall'utente.

    
risposta data 18.01.2018 - 11:30
fonte

Leggi altre domande sui tag