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?