Partial Man on the End Security

2

La situazione: sto sviluppando uno script che viene eseguito in un popolare gioco sandbox come servizio a pagamento per altri sviluppatori. Il problema è che il gioco non implementa un modo per farlo. La lingua è Lua e il gioco ha disabilitato il caricamento del codice byte. Ciò significa che qualsiasi script che io passo agli altri sviluppatori dovrebbe essere codice eseguibile.

Il modello delle minacce: gli sviluppatori possono accedere e modificare il codice sorgente dello script. Possono configurare i server per eseguire script sul proprio computer o sul server del proprietario del gioco. Tutti gli script vengono eseguiti su un server e mai sul computer del giocatore.

Soluzione corrente: il mio codice può caricare il codice sorgente della stringa e contattare un server esterno tramite HTTP. Penso che la cosa migliore da fare sia contattare il server esterno che può controllare su quale tipo di server sono in esecuzione e negare l'accesso se la richiesta non proviene da un server di gioco ufficiale. Mi fido dei server di gioco ufficiali. Una volta fatto questo, il mio script può eseguire il servizio trasmesso ad esso.

Se gli sviluppatori possono modificare il mio codice sorgente e per eseguire il servizio ho bisogno di una stringa da caricare, che cosa deve impedire allo sviluppatore di stampare la stringa subito prima di eseguirla? Potrei usare tutta la crittografia della casella bianca che desidero, ma quell'endpoint del caricamento di una stringa è ancora vulnerabile. Qualcuno di voi esperti di sicurezza ha una risposta o esperienza su progetti come questo?

    
posta Tyler 12.12.2014 - 21:52
fonte

1 risposta

1

Puoi raggiungere i tuoi obiettivi con due metodi:

  1. scarica la logica nei server controllati da te. Molti giochi lo fanno già.
  2. offusca il tuo codice. Ad esempio, puoi utilizzare XFuscator .

Tuttavia, con 2, è impossibile essere sicuri al 100%. Impedire che le persone eseguano effettivamente il tuo codice da soli e non da un server è praticamente impossibile.

    
risposta data 12.12.2014 - 22:09
fonte

Leggi altre domande sui tag