Ho un'applicazione web (software del forum) in cui sto lavorando a una funzione relativa all'utente che collega i file ai post del forum.
L'applicazione è scritta in linguaggio assembly e il database è SQLite.
L'approccio che ho usato è quello di mantenere i file allegati come un blob nel database e di consentire il download solo con le intestazioni:
Content-type: application/octet-stream
Content-Disposition: attachment
In questo modo, i file non verranno mai memorizzati come file sul server.
Non è pianificato implementare alcuna convalida del tipo e del contenuto del file, perché sono considerati superflui su questa impostazione (e voglio dare agli utenti la massima libertà, senza compromettere ovviamente la sicurezza).
È chiaro che il caricamento di file enormi è un modo per fare attacchi DoS, ma questo non è un argomento della domanda preimpostata.
I possibili bug nella stessa applicazione web, che causano overflow del buffer e simili, non sono un problema (sono possibili, ovviamente, ma voglio chiederne l'architettura, non l'implementazione).
L'impostazione interrogata è il seguente schema:
- senza file: dalla richiesta POST - > al campo blob SQLite.
- dal campo blob SQLite - > alla rete e al browser dell'utente.
- Sempre: application / octet-stream e Content-Disposition: allegato
- Nessuna convalida del server per il tipo e / o il contenuto del file.
E la domanda è:
Quali vettori di attacco sono ancora possibili con l'approccio sopra?
P.S. La domanda la funzionalità di caricamento dei file Pentesting è simile, ma principalmente discute i file caricati come esistenti in la FS del server che è diversa dal sistema che sto chiedendo.