Un'applicazione avviata dall'utente root ha i privilegi di root?

1

Sto iniziando node.js sul mio server. Devo avviare il server HTTP node.js come root, perché ascolterà sulla porta 80. Una volta che avviò il nodo.js sulla porta 80, se una persona è in grado di eseguire del codice sul mio server attraverso l'applicazione questo sarà persona ha i privilegi di root?

Sto usando xubuntu.

    
posta krionz 21.08.2018 - 23:11
fonte

2 risposte

2

Dipende dall'attuale implementazione del server.

Sebbene sembri che node.js sia avviato come root, manterrà questi privilegi altri server (come Apache o nginx) solo come root e poi come privilegi. Un tipico progetto, ad esempio, consiste nell'avere un processo master che si collega ai socket con i privilegi necessari e quindi genera un figlio che rinuncia permanentemente a tutti i privilegi di root prima di elaborare i dati dalla rete. Ciò è possibile poiché i socket di ascolto sono ereditati dal processo padre e le autorizzazioni root erano necessarie solo per collegare il socket a una porta privilegiata ma non per accettare connessioni sul socket stabilito.

Ad esempio con nginx vedrai qualcosa di simile al seguente:

$ ps -ax -o user,pid,ppid,cmd | grep nginx
root     14746     1 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
www-data 14747 14746 nginx: worker process
www-data 14748 14746 nginx: worker process 

Il primo processo mostrato è il master, eseguito come root. Gli altri sono i lavoratori avviati dal master in esecuzione come% non privilegiato conwww-data. Solo questi lavoratori non privilegiati elaboreranno l'input dell'utente e quindi, in caso di compromissione dovuta ad alcuni input imprevisti dalla rete, verrà compromesso solo l'utente non privilegiato. Ovviamente, un utente malintenzionato potrebbe quindi provare a eseguire un'escalation dei privilegi locali utilizzando bug aggiuntivi nell'host, ma si tratta di un problema diverso.

    
risposta data 22.08.2018 - 00:03
fonte
0

Di sicuro sì. Ecco perché in produzione alcune persone usano NGINX come proxy per il nodo. Quindi è possibile avviare il nodo su un numero elevato di porte che non richiede privilegi intensificati.

Ecco una descrizione sulla configurazione di NGINX e Node.JS collegamento

    
risposta data 21.08.2018 - 23:27
fonte

Leggi altre domande sui tag