Os únicos diretórios mandatados pela ESF que geralmente são graváveis no mundo são /tmp
e /var/tmp
. Nos dois casos, é porque eles se destinam ao armazenamento de arquivos temporários que podem ser criados por qualquer pessoa.
Também é comum /dev/shm
, como um tmpfs (sistema de arquivos suportado pela RAM), o acesso rápido a dados de tamanho médio compartilhados entre processos ou apenas a criação de arquivos que são garantidos para serem destruídos na reinicialização.
Também pode haver um /var/mail
ou /var/spool/mail
, e às vezes, outros diretórios de spooler. Esses são usados para reter mensagens temporariamente antes de serem processadas. Eles nem sempre são graváveis no mundo, dependendo das ferramentas em uso. Quando estão, é porque os arquivos podem ser criados lá por ferramentas do usuário para processamento por daemons.
Todos esses diretórios geralmente têm o conjunto de bitst
fixos ( ), o que significa que somente o proprietário de um arquivo ou do diretório pode mover ou excluir os arquivos nele.
Qualquer programa em execução como qualquer usuário pode criar arquivos nesses diretórios, e cabe ao programa de criação fazer a coisa certa no que diz respeito à segurança de seus dados específicos. Não há nenhum problema geral de segurança em particular além de alguém potencialmente encher o sistema de arquivos, mas há muito espaço para um programa cometer erros.
Houve alguns movimentos em direção a /tmp
diretórios específicos de serviço . Isso evita alguns dos possíveis erros que podem surgir, portanto, não é tão vital que o programa esteja livre de erros na maneira como usa o diretório.
Você pode encontrar os diretórios graváveis no mundo em seu sistema com:
find / -maxdepth 3 -type d -perm -777
/var/lock
→/run/lock
/tmp
É arriscado, porque você precisa adicionar código extra para usá-lo com segurança. Obviamente, isso é esquecido.
Um exemplo recente é dado por Steve Kemp. http://blog.steve.org.uk/sometimes_reading_code_makes_you_scream_.html
Se você (o invasor) substituir / tmp / shadow antes da segunda linha, poderá substituir a senha de todos. (Acho que o ataque exige que você crie o arquivo antes da primeira linha e torne o arquivo gravável no mundo).
O Systemd no linux permite mitigar essas vulnerabilidades isolando / tmp para muitos serviços do sistema. (Exceto aqueles que "usam / tmp incorretamente como local para soquetes IPC e outros primitivos de comunicação").
No Fedora Linux - http://fedoraproject.org/wiki/Features/ServicesPrivateTmp
Explicação do Systemd - http://0pointer.de/blog/projects/security.html
fonte
fopen
substitua-o, mas não redefina as permissões, para que o usuário mal-intencionado ainda possa fazer alterações. Além disso, um usuário mal-intencionado poderia ter feito algo comoln -s /bin/bash /tmp/shadow
antes da primeira linha, para que um binário essencial do sistema fosse substituído.Para encontrar diretórios graváveis no mundo, você pode usar
Para arquivos, altere o tipo para
f
Para links simbólicos, digite
l
Para definir um bit adesivo:
fonte