Esistono validi motivi per comprimere i file (zip, gzip, ecc.) per alterare le dimensioni del file?

4

File zip , GZip , e probabilmente altri, includono informazioni sul file contenuto, inclusa la dimensione non compressa del file. Tuttavia, quando si estrae questi file il numero non ha senso in quanto i dati effettivi possono essere molto più grandi (ad esempio: riportato come 1 byte, ma in realtà 10 GB ).

Dato che la decompressione di un file .zip di grandi dimensioni potrebbe eseguire un sistema DoS utilizzando tutte le risorse, è necessario un qualche tipo di controllo per impedire l'estrazione di un file che potrebbe danneggiare il server. Un metodo potrebbe essere quello di limitare le dimensioni consentite a X GB. Se la dimensione dichiarata di un file è maggiore, esci in anticipo. Tuttavia, se la dimensione è dichiarata errata, prima di uscire dovresti decomprimere fino a quella dimensione.

Un'alternativa potenziale è iniziare la decompressione e non appena la dimensione effettiva è maggiore di quella dichiarata (forse con un margine di errore), esci.

Esistono casi legittimi in cui la dimensione dichiarata di un file compresso in un archivio (zip, gzip o altro) sarebbe errata? C'è qualche software popolare che produce file così spezzati?

    
posta Tarka 03.02.2017 - 19:15
fonte

1 risposta

1

Le dimensioni non compresse di ogni file sono memorizzate nei metadati del file per nessun altro motivo se non consentire ad un'applicazione di conoscere cose come il rapporto di compressione. Non è pensato per essere autoritario in alcun modo. Non ci sono usi legittimi a cui posso pensare di avere la dimensione del file non compresso segnalata diversa dalla dimensione reale del file non compresso.

Quello che stai descrivendo è una bomba a cerniera, chiamata anche bomba a decompressione. Non funzionano mentendo sulla dimensione del file non compresso, ma piuttosto comprimendo molti archivi l'uno dentro l'altro. Un singolo file con un gigabyte di zeri si comprimerà piuttosto piccolo. Duplicare un archivio molte volte e poi comprimerle insieme non comporterà una crescita significativa dell'archivio finale a causa dell'elevata ridondanza. Una bomba zip da 20 byte che estrae in un terabyte può essere duplicata centinaia di volte, quindi archiviata e compressa, ottenendo una bomba zip da 25 byte. Questo processo può essere ripetuto molte volte fino a quando le dimensioni totali lo rendono poco pratico da estrarre. In passato questa era una tecnica comune utilizzata dal malware, in quanto gli scanner di malware tentavano di sbirciare ciecamente negli archivi. Quando l'archivio disponeva di una bomba a cerniera, la memoria rimaneva a corto di memoria, si bloccava, si bloccava, si arrendeva e si saltava e non si trovava il carico utile malevolo nascosto da qualche parte all'interno. Oggigiorno, gli scanner di malware spesso contrassegnano le sospette bombe a zip per consentire all'utente finale di adottare le misure appropriate.

Un modo semplice per mitigare questi attacchi è di imporre un limite su quanti livelli in profondità un decompressore andrà quando si estrae un archivio compresso. Tentativo di verificare che la corrispondenza delle dimensioni non compresso segnalate e effettive sia inutile in quanto le zip bomb non sono disoneste rispetto alle loro dimensioni. La confusione deriva dal fatto che viene registrata solo la dimensione di quell'archivio one . Non c'è modo per un file zip di sapere che i 100 file al suo interno sono anche zip-bomb.

    
risposta data 19.12.2017 - 09:50
fonte

Leggi altre domande sui tag