Passa al contenuto principale

8. Considerazioni sulla sicurezza

Un'applicazione esposta alla rete può presentare vulnerabilità nella propria logica di elaborazione dei dati in ingresso. I parser complessi sono ben noti come probabile fonte di tali vulnerabilità, come la capacità di far arrestare in modo anomalo un nodo da remoto, o addirittura di eseguire codice arbitrario su di esso da remoto. CBOR cerca di ridurre le opportunità di introdurre tali vulnerabilità riducendo la complessità del parser, attribuendo un significato, dove possibile, all'intero intervallo di valori codificabili.

Gli attacchi di esaurimento delle risorse potrebbero cercare di indurre un decoder ad allocare elementi dati molto grandi (stringhe, array, mappe) oppure a esaurire la profondità dello stack predisponendo elementi profondamente annidati. I decoder devono disporre di una gestione appropriata delle risorse per mitigare questi attacchi. (Anche gli elementi per i quali vengono indicate dimensioni molto grandi possono cercare di sfruttare vulnerabilità di overflow degli interi.)

Le applicazioni in cui un elemento dati CBOR viene esaminato da una funzione di controllo e successivamente utilizzato da un'applicazione diversa possono presentare vulnerabilità quando sono possibili più interpretazioni dell'elemento dati. Ad esempio, un attaccante potrebbe sfruttare chiavi duplicate nelle mappe e problemi di precisione nei numeri per fare in modo che la funzione di controllo basi le proprie decisioni su un'interpretazione diversa da quella che verrà utilizzata dalla seconda applicazione. I protocolli utilizzati in un contesto di sicurezza dovrebbero essere definiti in modo tale che queste interpretazioni multiple siano ridotte in modo affidabile a una sola. Per facilitare ciò, le implementazioni di encoder e decoder utilizzate in tali contesti dovrebbero fornire almeno una modalità di operazione strict (Sezione 3.10).