Verifica dell'integrità del software del server?

12

Sto cercando di fare un brainstorming di uno schema di sicurezza per il problema di verificare l'integrità del software del server. Il dominio di questo problema è costituito dai server di gioco basati sui server dedicati all'origine di Valve. Questi server sono utilizzati nei giochi competitivi e l'integrità di questi server può essere incredibilmente importante nell'esecuzione di tornei e quant'altro.

I client di gioco sono già stati verificati abbastanza bene in un certo numero di modi dal sistema Steam di Valve. A causa dei vari sistemi di verifica dei contenuti e anti-cheat (VAC), possiamo essere abbastanza sicuri che nessun contenuto lato client è stato modificato.

Tuttavia, sul lato server, ci sono pochi o nessun schema di protezione in atto per garantire che i client stiano giocando su versioni non modificate del software. Il software stesso è intrinsecamente configurabile (tramite variabili e comandi di configurazione) e consente estensioni delle funzionalità tramite Plugin del server . Inoltre, non ci sono controlli sul codice server sul filesystem o in memoria. I server SRCDS sono intrinsecamente modificabili su molti livelli.

Questo pone un problema nel gioco competitivo sul motore Source. È possibile che un numero qualsiasi di modifiche di ConVar, plug-in o modifiche binarie del server possano essere utilizzate per "ingannare" - per dare un vantaggio nelle meccaniche di gioco a una squadra piuttosto che un'altra o un giocatore piuttosto che un'altra. Al momento non è possibile per un cliente o una terza parte verificare che il server SRCDS non sia modificato.

La soluzione di base a questo problema sembra essere aperta. Possiamo apportare modifiche ai valori di ConVar per essere annunciati ai clienti, creare elenchi di plug-in in esecuzione sui server disponibili per i client e persino eseguire controlli CRC sui file su disco e in memoria e fornire ai client i valori risultanti. Tuttavia, nessuno di questi può essere differenziato da un server che falsifica le informazioni annunciate / fornite. Qualunque cosa scenda in questa direzione è essenzialmente come l'oscurità piuttosto che la sicurezza.

Come posso progettare un sistema per verificare l'integrità del software del server utilizzando solo le risposte / risposte a quel server?

P.S. Sentiti libero di fare domande o chiedere ulteriori specifiche.

    
posta ProdigySim 08.03.2011 - 04:21
fonte

3 risposte

8

Che bella domanda. Penso che questa sia una delle cose che divide l'industria dei giochi: centralizzate i vostri server per mantenere il controllo su di essi, ma poi soffrite di mancanza di flessibilità per le esigenze dei giocatori e vieni accusato di avere un pugno di ferro o ti concedi il controllo alla popolazione di giocatori e correre il rischio di server dannosi o contaminati.

Mi vengono in mente tre pensieri: nessuno è l'ideale, ma potrebbe essere utile.

  1. Annuncia i config ai client - questo non metterà in discussione compromessi importanti del server ma aumenterà lo sforzo richiesto dalla parte malintenzionata.

  2. Scopri la strada della fiducia e della reputazione e disponi di server per i tassi di interesse, a prescindere dal fatto che siano onesti o meno. Anche questo ha dei problemi, e anche il rep può essere giocato, ma è un'altra opzione.

  3. Fornisci il software del server come modulo che puoi interrogare (a sua volta i controlli di punkbuster e valvole) e disabilitare le incoerenze. Ancora una volta, è stato dimostrato più e più volte che questo tipo di cose sarà rotto a un certo punto, mentre qualcuno analizza il codice per capire quale risposta inviare, e infastidirà i proprietari del server, ma aumenterà anche lo sforzo richiesto dal parte malevola.

risposta data 08.03.2011 - 10:02
fonte
4

Sembra altamente improbabile che tu possa essere sicuro delle risposte che ottieni direttamente dal server di cui non ti fidi. Sembra che tu abbia bisogno di una terza parte per garantirlo. Per esempio. trovare un modo per ottenere che un fornitore di servizi cloud attesti che l'operatore ha caricato una determinata immagine ISO su un hardware standard e in seguito ha comunicato solo tramite una determinata porta collegata a un'interfaccia di configurazione ben vincolata. Mi sono chiesto prima se qualcuno dei fornitori di cloud lo fa ...

    
risposta data 08.03.2011 - 06:21
fonte
3

In linea di principio, ci sono soluzioni tecniche. È possibile assicurarsi che tutti i server contengano un TPM e utilizzare l'attestazione remota per fare in modo che il server attesti che ogni client sta eseguendo il software legittimo lato server.

Tuttavia, nella pratica ci sono sfide ingegneristiche significative, che potrebbero rendere questo approccio non eccessivamente realistico, o più costoso di quello che vale nel tuo contesto. Ad esempio, i clienti devono ora avere un modo per ottenere l'elenco principale di quali versioni del software sono autorizzate; i server devono essere programmati per utilizzare l'hardware del TPM (che è un po 'un'operazione speciale); gli schemi devono essere concepiti per garantire che l'integrità del software server non possa essere compromessa dopo l'attestazione; e altre sfide. Tutto ciò suona come un problema di ingegneria e gestione di grandi proporzioni.

Sfortunatamente, le capacità di attestazione remota del TPM non sono ampiamente utilizzate oggi, quindi non puoi sfruttare gli sforzi e l'esperienza degli altri. Quindi, se volessi prendere questo approccio, saresti sul filo del rasoio. Sembra il tipo di cosa che farebbe funzionare un gestore di programmi urlando.

Pertanto, probabilmente non consiglierei questo approccio a un piccolo produttore di software indipendente, anche se in linea di principio sospetto che potrebbe probabilmente essere fatto per fornire una sicurezza abbastanza decente contro il tipo di minaccia che hai menzionato (se avessi risorse illimitate) .

    
risposta data 09.03.2011 - 06:49
fonte

Leggi altre domande sui tag