2009-02-23 9 views
5

Ci sono alcune domande (C#, Java) che illustrano come si potrebbero implementare gli aggiornamenti automatici. Inizialmente sembra facile fornire aggiornamenti automatici e apparentemente non ci sono buoni motivi per non fornire aggiornamenti automatici per la maggior parte del software.Aggiornamenti automatici: che cos'è la sicurezza "adeguata"?

Tuttavia, nessuno sembra coprire gli aspetti di sicurezza degli aggiornamenti automatici.

  • Quanto sono sicuri gli aggiornamenti automatici adesso?
  • Quanto dovrebbero essere sicuri?
  • Quanto sono sicuri?

Il mio problema principale è che Internet è, a tutti gli effetti, un selvaggio west dove non si può assumere nulla sui dati che ricevono. Gli aggiornamenti automatici su Internet appaiono intrinsecamente rischiosi.

Un computer aziendale viene infettato, contraffà il DNS (solo una piccola percentuale del quale vince) e fa credere agli altri computer dell'azienda che il server di aggiornamento per un'applicazione comune sia altrove, scaricano la "nuova" applicazione e diventano infetto.

Come sviluppatore, quali possibili attacchi ci sono e quali misure dovrei adottare per proteggere i miei clienti dagli abusi?

-Adam

risposta

6

Con l'uso corretto della crittografia, gli aggiornamenti possono essere molto sicuri. Proteggi il sito da cui distribuisci gli aggiornamenti con SSL. Firma tutti i tuoi aggiornamenti con GPG/PGP o altro, fai verificare ai tuoi clienti la firma prima di applicare l'aggiornamento. Prende le misure necessarie per assicurarsi che il server e le chiavi siano mantenute estremamente sicure.

Adeguato a, è molto soggettivo. Cosa è adeguato per un gioco su Internet, forse completamente adeguato per il sistema di sicurezza per i nostri missili nucleari. Devi decidere quanti danni potenziali potrebbero verificarsi se qualcuno è riuscito a violare la tua sicurezza.

2

L'attacco più ovvia sarebbe un aggressore fornendo i binari modificati attraverso il suo server di aggiornamento "male". Pertanto, è necessario assicurarsi che i dati scaricati possano essere verificati per provenire da te, utilizzando una firma digitale.

Per garantire la sicurezza, ovviamente è necessario evitare di distribuire la chiave per la firma. Pertanto, è possibile implementare alcune varianti di RSA message signing

1

La connessione al server di aggiornamento tramite SSL può essere sufficiente, a condizione che il client rifiuta di connettersi se riceve un certificato non valido e il server richiede di negoziare un livello ragionevole di sicurezza della connessione (e anche il client lo supporta).

Tuttavia, praticamente qualsiasi cosa tu faccia sarà sicura almeno quanto il percorso attraverso il quale i tuoi utenti ottengono comunque la prima installazione del tuo software. Se i tuoi utenti inizialmente scaricano il tuo programma di installazione tramite semplice http, è troppo tardi per iniziare a proteggere le cose dagli aggiornamenti.

Questo è anche vero in una certa misura, anche se si ottiene il software iniziale tramite https o firmato digitalmente - come la maggior parte degli utenti può facilmente essere persuaso a fare clic su OK su quasi tutti gli avvisi di sicurezza che vedono su quello.

1

apparentemente non ci sono buoni motivi per non fornire aggiornamenti automatici per la maggior parte del software.

Ci sono buoni motivi per non forzare un aggiornamento.

  1. correzioni di bug può rompere il codice
  2. utenti potrebbero non voler rischiare di rompere i sistemi di produzione che si basano su caratteristiche più anziani
+0

Questo è un buon punto - ragioni per evitare gli aggiornamenti automatici sono coperti abbastanza bene qui: http : //stackoverflow.com/questions/558535/should-a-web-app-have-automatic-updates –

Problemi correlati