Recentemente ho cercato la possibilità di passare informazioni sensibili da un processo a un altro (all'avvio del processo) senza passare attraverso la riga di comando o senza utilizzare una voce del filesystem. Questo su Linux ma le domande si applicano anche ad altri sistemi.
In particolare, la password per accedere a un server MySQL deve essere trasferita da uno script al client MySQL. Per fare ciò, puoi passarlo sulla riga di comando ( -pPASSWORD
), ma questo è sgradevole in quanto una semplice lista di processi rivelerà la password a tutti gli altri. In questo preciso caso, il programma client MySQL è abbastanza amichevole da sovrascrivere il testo della riga di comando, sostituendo la stringa della password visibile con XXX
ma questa è una soluzione maleodorante.
Ho pensato di utilizzare invece l'ambiente di processo. Lo script imposta la password nell'ambiente di processo, il sottoprocesso avviato può quindi leggerlo da lì. Infatti, il client MySQL lo consente e cerca la variabile di ambiente MYSQL_PWD
. Questo sembra abbastanza sicuro e anche elegante, poiché un ambiente di processo non può essere consultato da nessuno tranne da root e dal proprietario del processo, almeno per quanto ne so.
Tuttavia, il manuale di MySQL 5.1 afferma:
This method of specifying your MySQL password [via the environment] must be considered extremely insecure and should not be used. Some versions of
ps
include an option to display the environment of running processes. On some systems, if you setMYSQL_PWD
, your password is exposed to any other user who runs ps. Even on systems without such a version ofps
, it is unwise to assume that there are no other methods by which users can examine process environments."
La domanda quindi è: il passaggio di dati sensibili attraverso l'ambiente di processo è veramente insicuro? Esistono sistemi che consentono la consultazione di un altro ambiente di processo senza alcuna verifica delle autorizzazioni? Chiaramente, il superutente può afferrare la password a piacere, ma poi di nuovo, non ne ha bisogno in primo luogo.