Sto progettando un servizio HTTP per un dispositivo incorporato e mi chiedo se il seguente concetto di sicurezza è abbastanza buono:
-
SSL (fino alla versione 3) è abilitato per impostazione predefinita, TLS non è limitato dalla piattaforma.
-
Lo spessore della chiave SSL è RSA 2048
-
Tutte le richieste HTTP vengono reindirizzate a HTTPS se SSL è abilitato.
-
L'intestazione HSTS viene inviata per impostazione predefinita.
-
Autorizzazione tramite un hash segreto MD5 in un campo di intestazione personalizzato. La richiesta viene eseguita se il segreto è valido.
-
Dopo troppe richieste con un segreto di autorizzazione non valido, l'API è bloccata per un po '.
-
Il certificato SSL può essere estratto o sostituito in un modo che richiede l'accesso fisico al dispositivo e la conoscenza del segreto dell'autorizzazione.
Nella mia comprensione i seguenti vettori di attacco sono trattati con questo.
- MITM: se l'utente ha già installato il certificato, l'utente malintenzionato deve ingannare l'utente per accettare un altro certificato o provare a sfruttare i punti deboli in SSL3.
- XSRF: poiché il campo dell'intestazione è personalizzato, non viene inviato automaticamente dal browser. Se l'attaccante è in grado di creare pacchetti personalizzati, deve forzare il segreto.
Il servizio è vulnerabile al DOS abusando del meccanismo di blocco dell'API ma poiché le risorse del dispositivo sono limitate non posso fare nulla al riguardo.