“Negar tem prioridade sobre Permitir” … Nem sempre!!!


Por: Daniel Aguiar / Technical Reviewer: Diana Hernandez

Este post é para desmistificar um dos chavões mais comuns sobre permissões NTFS:

“Negar tem prioridade sobre Permitir”

A frase acima não pode ser tomada como verdadeira para todos os casos. Recentemente trabalhei em um caso onde a má interpretação dela levou um cliente a abrir uma brecha de segurança.

Exemplo

Vejam a imagem abaixo.

clip_image002

Se você pensar “Negar tem prioridade sobre Permitir”, é bem provável que chegue a conclusão que o usuário da imagem acima, não terá acesso ao determinado recurso.

Porém não é verdade. Apesar do Negar (Deny) estar concorrendo diretamente com o Permitir (Allow), esse usuário vai sim ter acesso ao recurso.

Nova Idéia

Para entender melhor a idéia, tenha em mente uma nova sentença:

“Negar tem prioridade sobre Permitir, desde que ambos estejam no mesmo nível!”

Naquela imagem acima, você viu claramente que as permissões foram herdadas (pois estão todas na cor cinza) e sendo assim (por mais estranho que pareça) a permissão que vai preceder é a ultima que foi herdada.

Estranho? Então vamos facilitar…

Cenário

Considere o cenário abaixo onde temos as pastas (objetos) e uma tabela que indica se as permissões foram configuradas de maneira explicita ou se foram herdadas:

clip_image004

Agora, o que aconteceria se tentarmos acessar diretamente a pasta “Salários”?

Por exemplo: “\\localhost\c$\contosofinanças\salários\”

Como na pasta “Salários” não existem permissões explicitas, a ultima permissão herdada prevalecerá. Sendo assim são as permissões da pasta “Finanças” que ditaram os acessos à pasta “Salários”.

A Lógica

Para chegar a conclusão acima, o NTFS ira fazer o seguinte processo:

  1. Checar se existe Negar explicito na pasta Salários >>> Não possui.
  2. Checar se existe Permitir explicito na pasta Salários >>> Não possui.
  3. Checar se a herança está habilitada na pasta Salários >>> Herança habilitada, seguir conferencia no objeto pai (pasta Finanças).
  4. Checar se existe Negar explicito na pasta Finanças >>> Não possui.
  5. Checar se existe Permitir explicito na pasta Finanças >>> Possui!!!
  6. Liberar acesso do usuário ao objeto!!!

Veja que o NTFS sempre vai checar primeiro se existe um Negar (Deny) e depois ele verifica se tem Permitir (Allow), daí a expressão “Negar tem prioridade sobre permitir”…

Mas é claro… O NTFS não encontrando permissões configuradas no objeto filho ele procura pelas heranças vindas do primeiro objeto Pai.

No nosso caso, a primeira permissão encontrada foi Permitir (Allow) (vinda por herança da pasta “Finanças”).

A lógica acima também pode ser representada no diagrama a seguir.

clip_image006

Sendo assim: Negar tem prioridade sobre permitir???

Sim! Desde que no mesmo objeto.

Um pequeno, mas importante lembrete

Não se esqueça que você sempre pode (eu diria… “deve”) usar as “Permissões Efetivas” para validar as permissões de usuário

Referencia extra…

Um post, de muito tempo atrás (em inglês) trata do mesmo assunto de forma diferente

Verifiquem a figura 6 do post acima, muito esclarecedora também.

Conclusão

Bom agora que você entendeu a idéia, quando você ver algo como na situação a seguir…

clip_image002[1]

… Você vai lembrar que: “Nem sempre, negar tem prioridade sobre permitir” e que você terá que validar as heranças antes de afirmar algo.

Abraços.

Comments (2)

  1. Sebastian del Rio says:

    E ai Daniel , muito bom o Artigo ! Parabens !

  2. agripino says:

    Excelente artigo, tem muito tempo que não tenho que lidar com quirks de segurança, post guardado para futura referência!