Quale sarebbe un modo sicuro per gestire i prompt delle password nella shell?

4

Ho uno script che un membro del nostro team L1 girerà su un server linux (ssh'ed in - non root) che prenderà la sua password e passerà a kinit tramite uno script di previsione incorporato (che alla fine parla con la nostra autenticazione Kerberos KDC) al fine di eseguire un controllo aziendale pronto.

Una considerazione era di usare getpass2 python ma non è disponibile inhouse. Una possibile soluzione esiste tramite uno script di shell che utilizza:

read -s -p "Password for $USER: " PASS

Ho letto questo blog . L'autore sostiene

Between the prompt and the shell execution, the password is in cleartext .

Ci sono dei passi da fare per mitigare questo?

Mi rendo conto che anche la password è in chiaro nella RAM - ma per ora è un problema a parte.

    
posta james6125 04.04.2018 - 19:21
fonte

3 risposte

3

Presumi (come fanno molte persone che dovrebbero sapere meglio) che quando inserisci una password c'è qualche mojo magico che protegge il suo testo chiaro nel programma. Se è possibile assicurare l'integrità del programma leggendo la password e non persiste o esporta deliberatamente il testo in chiaro, non sarà accessibile ad altri programmi.

Uno script è leggermente più semplice da compromettere rispetto a un programma binario supponendo che l'autore dell'attacco abbia l'accesso a livello di root al filesystem, ma a quel punto è già abbastanza game over. C'è un argomento che se il programma viene scambiato dalla memoria, allora il cleartext persisterà nello spazio di swap - ma questo è quasi lo stesso problema di protezione della RAM (non dovresti comunque usare l'archiviazione remota per lo swap).

Aggiorna La risposta di Sergey sembra rispondere a quello che fai con la password dopo che hai catturato il testo in chiaro (anche se non è molto chiaro). Ma se stai usando una shell integrata per iniettare la password nel programma di destinazione, non apparirà nell'output di "ps"

    
risposta data 05.04.2018 - 00:47
fonte
0

kinit ha una propria funzione per l'immissione della password. Ad esempio ...

$ kinit user@realm Enter password for user@realm:

Suggerirei il metodo di inserimento degli strumenti che nasconde già l'input dal terminale

    
risposta data 05.04.2018 - 12:19
fonte
0

Ogni comando non incorporato negli script viene visualizzato come processo separato, quindi dall'esempio del blog citato PASS (che dovrebbe essere citato, btw, per evitare la divisione delle parole) apparirà su ps output.

Vedi anche link  e link per possibili soluzioni per risolverlo

Ci sono anche implicazioni sulla sicurezza della divisione delle parole: link

    
risposta data 05.04.2018 - 03:36
fonte

Leggi altre domande sui tag