Um usuário pode forçar uma listagem de diretórios sem ter permissão de leitura no diretório?

6

Percebi que quando um usuário está trabalhando em um diretório em que ele não tem permissão de leitura, o uso de cd produz mensagens de erro diferentes, dependendo da existência ou não de um subdiretório:

$ ls
ls: cannot open directory .: Permission denied
$ cd nonexistentdirectory
-bash: cd: nonexistentdirectory: No such file or directory
$ cd existingdirectory
-bash: cd: username: Permission denied

Isso levanta a questão: o fato de um usuário poder forçar brutalmente um diretório listando dessa maneira sem permissão de leitura, uma falha de segurança? Em caso afirmativo, é uma falha de UNIX ou Bash?

    
por BlueBomber 24.01.2013 / 20:04

2 respostas

3

Isso não é uma falha de segurança, pois o recurso está funcionando da maneira que deveria funcionar. (Dado que esse recurso surgiu por acaso, isso não é surpresa.) Pode ser que suas expectativas não correspondam exatamente ao que o recurso realmente faz.

Quando um usuário tem a permissão de execução em um diretório, mas não a permissão de leitura, o usuário pode acessar qualquer entrada no diretório, desde que ele saiba seu nome. Esse acesso inclui todos os metadados sobre a entrada, incluindo seu nome, seu tipo, seu tamanho, suas datas, etc. Assim, o usuário pode distinguir uma entrada inexistente de uma entrada existente cujo conteúdo ele pode não ser capaz de acessar.

Os nomes das entradas agem como senhas. Se você souber a senha, poderá acessar a entrada. Pode haver restrições de acesso adicionais na entrada, mas esse é um problema não relacionado. Você sempre pode quebrar a autenticação de senha pela força bruta tentando todas as senhas possíveis.

Se você não quiser revelar nada sobre as entradas em um diretório --x, use nomes não solicitáveis (isto é, nomes aleatórios que são longos o suficiente).

    
por 24.01.2013 / 23:47
1

Sim, você pode considerá-lo uma falha de segurança na forma como as permissões de arquivo e diretório do Unix são definidas e implementadas. É um compromisso; ele permite, por exemplo, conceder aos usuários acesso a um diretório dentro de uma hierarquia restrita, se eles souberem o caminho.

A solução é aninhar diretórios restritos para que você tenha que adivinhar vários componentes antes de poder acessar informações realmente confidenciais. Mas claro, isso não adiciona segurança, apenas obscuridade.

O usuário root pode ignorar qualquer uma dessas restrições, portanto, não é particularmente seguro. Se você quer segurança razoável, um sistema multiusuário provavelmente não está onde deveria estar.

    
por 24.01.2013 / 20:20