Melhor seria reescrever myapplication
para obter a senha por meio de outro meio como stdin. O environ é outra opção, mas que ainda é visível para processos com o mesmo euid (ou euid 0) via /proc/<pid>/environ
.
Se não, no Linux com versões anteriores a 4.2, você pode limitar a exposição certificando-se de que a senha não esteja nos primeiros 4096 bytes da linha de comando para que outros processos não possam obtê-la através da leitura de /proc/<pid>/cmdline
(como ps
faz). 4.2 e acima não truncar mais /proc/<pid>/cmdline
.
Por exemplo, com zsh
.${(l:4094::/:):-myapplication} --smtp-password=secret
Executaria myapplication com o primeiro argumento sendo 4095 bytes grandes (4096 que você alteraria o limite PATH_MAX), algo como .//////[...]///myapplication
, portanto sua senha estaria além do ponto de quebra de 4095.
Observe que os logs de auditoria e os arquivos de histórico do shell são outras áreas de preocupação para as sequências secretas transmitidas na linha de comando.