Por que é ruim adicionar '.' para o caminho?

3

Eu li uma explicação dizendo que ela pode permitir que executáveis maliciosos que estão no cwd sejam executados no lugar de utilitários internos e utilitários com nomes semelhantes.

Para algo que cause verdadeiro estrago, isso não se aplicaria apenas à raiz? E em qualquer caso, se '. foram anexados ao PATH em vez de prefixados, isso não deve contornar esse ataque de "substituição", já que os diretórios do PATH são verificados em ordem? (Eles não são digitalizados em ordem?)

Existem outras questões além desta?

    
por William 26.08.2010 / 02:43

4 respostas

10

Depende do que você define como estrago. Se você considerar a perda de todos os seus arquivos pessoais, então eu diria que sim, mesmo que você tenha um backup.

No que diz respeito ao acréscimo, sim, é mais seguro, mas, a menos que sua digitação seja muito melhor que a minha, os erros de digitação podem causar o mesmo problema.

    
por 26.08.2010 / 02:56
3

Sim, as variáveis de caminho são processadas em ordem e sua solução garantiria que os executáveis conhecidos fossem processados primeiro.

No entanto, você ainda deixa espaço para executáveis maliciosos sendo executados. Por exemplo, se eu colocasse um script bash em algum lugar que executasse 'rm-fr ~ /' ou algo ainda mais desagradável e então chamasse o executável 'sl' (um erro comum para 'ls') você poderia se encontrar em todo tipo de problema! / p>

Não me diga que você nunca executa comandos de digitação;)

    
por 26.08.2010 / 12:34
3

Ter "." no caminho leva a comandos magicamente aparecendo e desaparecendo. cd em algum lugar e seu comando inicia ou pára de funcionar. É óbvio que você estava ficando sem "." se o comando for "./doit" do que se o comando for "doit". O mesmo problema se aplica a ".." e a qualquer caminho que comece com "./" ou "../" e qualquer outro caminho relativo.

Para comandos pessoais, recomendo $ HOME / bin. De lá eles podem migrar para / usr / local / bin se forem úteis o suficiente.

EDIT: Como aludido na resposta aceita, arquivos executáveis (programas) no diretório atual podem fazer coisas terríveis ao seu sistema. Se eles tiverem o mesmo nome que um comando comumente usado, é relativamente fácil para eles serem acionados alterando para o diretório que os contém. Sabe-se que pessoas mal-intencionadas escrevem esses programas com a intenção de causar danos. A execução acidental de tais programas pode ser mitigada colocando a entrada do caminho relativo no final da lista PATH. Programas nomeados com erros ortográficos comuns de comandos comuns ainda podem ser acionados.

    
por 26.08.2010 / 16:38
0

É fácil digitar apenas ./sl, o que é bastante específico, dizendo "Eu quero executar o arquivo chamado" sl "no CWD. Não há nenhum erro para fazer lá devido a $ PATH.: -)

    
por 26.08.2010 / 12:47