Devo mettere online un programma potenzialmente insicuro?

6

OK: un avanti. Non sono un esperto di sicurezza. Sono uno dei quattro bambini di una scuola che lavorano a un progetto. Non ho alcuna esperienza con situazioni di vita reale in cui la sicurezza è una preoccupazione.

Ho un progetto per la valutazione automatica dei programmi. Gli studenti caricano il codice e lo compiliamo e testiamo. Ovviamente, c'è una minaccia di persone che caricano codice dannoso. Quindi, ciò che abbiamo fatto di recente è avere il codice eseguito dietro un comando runas su un utente con pochi privilegi. Sembra funzionare, ma poi di nuovo cosa sappiamo?

Ora il mio istruttore vuole che andiamo avanti e mettiamo il nostro progetto online, disponibile su Internet. Sono preoccupato che il nostro progetto sia probabilmente insicuro e che noi studenti non siamo qualificati per valutare la sicurezza del programma.

Sarebbe sufficiente un semplice sistema di "sicurezza" basato su runas o dovremmo aspettare di metterlo online?

Modifica: per chiarire, il modo in cui funziona è che le persone caricano i programmi sul nostro server, che poi li esegue in locale e visualizza i risultati. Pertanto, se il codice caricato è dannoso e funziona, il nostro server è sostituito.

    
posta user26672 03.06.2013 - 16:34
fonte

2 risposte

2

"runas" ti proteggerà da solo una parte delle minacce.

Ci sono alcuni modi in cui puoi gestirlo. Devi bloccare il firewall per evitare connessioni in uscita che non intendi. La registrazione e l'auditing devono essere attivati (e revisionati !!) per rilevare eventuali manomissioni.

Se il server è una macchina virtuale, è possibile farlo tornare a un'istantanea salvata ogni ora, il che significa che qualsiasi codice dannoso non potrebbe persistere.

Riesci a conservare una copia del codice caricato e dell'indirizzo IP che l'ha caricata per la revisione legale?

In ogni caso, è necessario pensare al server come già compromesso e trattarlo come tale. Segregalo sulla rete in cui si trova e spostalo dall'orbita regolarmente o alla fine del tuo progetto. Assicurati che sul server non sia in esecuzione nient'altro che non sia in grado di gestire l'acquisizione (ad esempio, fai in modo che il tuo servizio sia l'unica cosa in esecuzione sul server).

    
risposta data 05.06.2013 - 19:56
fonte
0

Esegui il software compilato in una macchina virtuale, mostra l'output, quindi ripristina la macchina virtuale nell'istantanea precedente dopo ogni esecuzione.

qualcosa del tipo:

  1. compilare l'eseguibile sul server
  2. copialo sulla VM tramite rete
  3. attiva un comando sulla VM che eseguirà l'eseguibile compilato in, diciamo, 5 secondi
  4. esegui un comando sul server che isolerà la VM dalla rete
  5. attendi che la VM esegua il programma
  6. prendi l'output dalla VM (screenshot? remote control / viewer?)
risposta data 05.06.2013 - 21:00
fonte

Leggi altre domande sui tag