Le variabili di ambiente sono visibili agli utenti non privilegiati su Linux?


12

Sto cercando di determinare se, in Linux, le variabili di ambiente per un processo sono osservabili da altri utenti (non root).

Il caso d'uso immediato sta mettendo segreti in variabili d'ambiente. Questo è discusso in molti punti del Web come insicuro, ma non sono stato in grado di concentrarmi sull'esatto punto di esposizione in Linux.

Si noti che sto non parlando di mettere in chiaro segreti in file. Si noti inoltre che sto non parlando l'esposizione verso l'account root (visualizzare materiale tentativo di nascondere i segreti da un avversario con la radice di come nonstarter).

Questa domanda sembra rispondere alla mia, con commenti che classificano le variabili d'ambiente come completamente senza sicurezza, o semplicemente semplicemente offuscate, ma come si accede a esse?

Nei miei test un utente senza privilegi non può osservare le variabili di ambiente per un altro utente attraverso la tabella dei processi ('ps auxwwe'). I comandi che impostano le variabili di ambiente (es. Export) sono builtin della shell che non arrivano alla tabella dei processi e per estensione non sono in / proc / $ pid / cmdline. / proc / $ pid / environment è leggibile solo dall'UID del proprietario del processo.

Forse la confusione è tra diversi sistemi operativi o versioni. Varie fonti (recenti) sul web denigrano l'insicurezza delle variabili di ambiente, ma il mio controllo a campione delle diverse versioni di Linux sembra indicare che ciò non è possibile risalire almeno al 2007 (probabilmente oltre ma non ho caselle attive) mano per testare).

In Linux, come può un utente non privilegiato osservare le variabili di ambiente per i processi di un altro?

Risposte:


7

Come Gilles ha spiegato in una risposta molto esauriente a una domanda simile su security.stackexchange.com, gli ambienti di processo sono accessibili solo all'utente proprietario del processo (e ovviamente root).


Qualche link al post che intendevi?
cyc115,

@ cyc115 fai clic sulla parola "rispondi" :)
guntbert,

6

Le variabili di ambiente sono molto sicure. La domanda a cui ti sei collegato è che se il sistema è compromesso, l'unico vantaggio di sicurezza derivante dall'uso delle variabili di ambiente su un file di configurazione è l'oscurità. Ciò significa che se qualcuno ha ottenuto l'accesso come root, può raggiungere entrambi.
È discutibile se l'uso di variabili d'ambiente per dati segreti sia considerato "oscuro". Questa è una pratica molto comune e quindi non la considero tale.

Puoi accedere ai dati memorizzati in una variabile d'ambiente solo in 2 posti:

1. L'ambiente di esecuzione del processo

Quando il processo è in esecuzione, è possibile accedere alle variabili di ambiente di quel processo /proc/$PID/environ. Tuttavia, solo l'utente proprietario del processo, o root, può accedere a quel file.

2. La fonte delle variabili d'ambiente

Se stai usando uno script init e le variabili sono memorizzate in quello script init, ovviamente le variabili possono essere ottenute leggendo quello script.

O se le variabili di ambiente provengono da qualche altra parte, allora dovunque sia.

3. Uscita "ps"

Sì, lo so che ho detto 2, e in qualsiasi sistema decente, sarà 2. Tuttavia, se l'amministratore non sa cosa sta facendo, è possibile aprire una terza strada.

Se il processo viene avviato tramite qualcosa di simile sh -c 'cd /foo/bar; POP=tart /my/executable', tale shprocesso sarà visibile in ps:

$ sh -c 'cd /; POP=tart sleep 10' &
[1] 3085

$ ps ax | grep POP
phemmer   3085  14   5  0.0  0.0 SN         00:00 sh -c cd /; POP=tart sleep 10

1
Dovresti anche menzionare il emodificatore a ps. Consente inoltre solo la visualizzazione dell'ambiente dei processi di proprietà dell'utente.
Barmar,

1
Un'altra posizione possibile: se la variabile d'ambiente è stata impostata tramite la shell (ad es. export FOO=bar), Potrebbe anche apparire nel file di cronologia (ad es. ~/.bash_history) Se l'utente non ha preso le precauzioni per impedirne il salvataggio o rimuoverlo.
Tavnab,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.