Quali sono i rischi del caricamento e del download di dati in formato binario (non codificato) su server e browser?

0

Ammetto apertamente che questa domanda potrebbe essere il risultato di una paranoia infondata. Ma sono preoccupato che caricare e scaricare dati in formato binario apre la porta a exploit che potrebbero non essere possibili se i dati fossero codificati durante il trasferimento e decodificati alla destinazione.

Stabilirò definizioni perché vedo il termine "binario" gettato molto spesso e non sono sicuro che tutti intendano la stessa cosa quando lo usano. Quando dico "binario" nel contesto di questa domanda, intendo un flusso di byte che può avere i bit di ordine alto impostati in almeno alcuni di quei byte. Non intendo un flusso di byte semplicemente che rappresentano dati binari, come la codifica base64.

Sto immaginando che nei livelli più bassi di qualche possibile protocollo di rete usato per i trasferimenti di dati su Internet, ci potrebbero essere vari "handshake" che usano byte con bit di ordine elevato impostati. Se ciò fosse vero, un server Web o un browser che accetta flussi di dati arbitrari a 8 bit potrebbero diventare vulnerabili a determinate forme di attacco che utilizzano una sorta di "doping di stretta di mano" o simili.

Potrei essere d'accordo che a livello di web server / browser "livello" della gerarchia di trasmissione dei dati, forse questo problema è irrilevante. Questo è quello che voglio sapere: una "connessione" web (stretta di mano e trasferimenti di dati associati) è immune dalla manipolazione in questo modo?

Lo scenario che sto pensando potrebbe verificarsi se un browser o un server è in esecuzione da un po 'di tempo e le sue tabelle interne di dati sono ingombre e probabilmente danneggiate, forse da qualche piccolo difetto in javascript o perl (come oso insinuare che !). A quel punto, sembra che browser e server potrebbero diventare particolarmente vulnerabili. (E sono d'accordo che l'utilizzo di un sistema operativo affidabile e di un software affidabile aiuterà molto a prevenire questo e altri spettacoli horror.)

Non sto chiedendo consigli su misure di sicurezza e recupero; Sto solo chiedendo se esiste una possibilità del tipo di scenario che sto suggerendo.

    
posta Phelonius 29.07.2013 - 08:19
fonte

1 risposta

1

Sulla rete, i byte vengono inviati e ricevuti. Ciò che questi byte rappresentano è una questione di convenzione tra client e server. Tuttavia, se il client e il server utilizzano una sorta di codifica aperta (ad esempio Base64) che tutti conoscono, è facile per qualsiasi utente malintenzionato applicare e non applicare la codifica a piacere. Quindi questo avrà zero benefici per la sicurezza.

Se la codifica utilizzava una convenzione segreta tra client e server, allora entriamo nel regno della crittografia e quindi "dipende".

Non c'è nulla di intrinsecamente tossico in "dati binari"; al contrario, non c'è nulla di addomesticato nei "personaggi". I byte sono byte. Se qualche codice ha problemi con i byte arbitrari, che non avrebbe con "caratteri", allora questo significa che il codice in questione sta interpretando byte grezzi come caratteri, e questo è un bug tutto bene. Se lo desideri, puoi chiamarlo "tabelle delle pagine di dati danneggiati"; non cambia le cose in alcun modo: un bug è un bug. Non si verifica attraverso l'accumulo di tempo; si verifica attraverso errori di programmazione o errori hardware. Non esiste un valore di byte che renda tali problemi più probabili di qualsiasi altro.

Ciò che rende i bug più probabili sono le ipotesi ingiustificate dei programmatori incuranti . Per esempio. un programmatore che si aspetta, nel suo codice, alcuni byte che rappresentano caratteri e non inserisce alcun codice per gestire byte nulli o altri dati "non validi" in entrata. Questo è l'accordo con gli attaccanti: non seguono sempre le regole di codifica. Non esiste una cosa di codifica che protegga un programmatore disattento contro l'incuria. Ci sono strumenti che mitigheranno le conseguenze, ad es. linguaggi di programmazione che controllano i limiti degli array e impongono una strong digitazione; ma questi operano ad un altro livello.

    
risposta data 29.07.2013 - 15:34
fonte

Leggi altre domande sui tag