O Manual SysAdm do UNIX e Linux: Por que as páginas de manual em cache são um "risco de segurança"?

O Manual SysAdm do UNIX e Linux: Por que as páginas de manual em cache são um "risco de segurança"?

OManual de administração de sistemas UNIX e Linuxdiz:

man mantém um cache de páginas formatadas em /var/cache/man ou /usr/share/man se os diretórios apropriados forem graváveis; no entanto, este é um risco de segurança. A maioria dos sistemas pré-formata as páginas man uma vez no momento da instalação (veja catman) ou não formata.

Qual é o(s) "risco(s) de segurança" aqui?

Existe o risco óbvio de segurança de que alguém possa alterar as páginas de manual para induzir um usuário (novato) a executar algo indesejável, como apontado porUlrich Schwartz em sua resposta, mas estou procurando outras maneiras de explorar isso. Obrigado!

Responder1

Não é seguro permitir que os usuários manipulem o conteúdo das páginas de manual (ou quaisquer dados, na verdade) que também serão usados ​​por outros usuários, porque existe o perigo deenvenenamento de cache. Como diz a velha piada do BOFH:

Para aprender tudo sobre o seu sistema, desde o root, use o comando "ler manual" com a opção "ler mais rápido" assim: rm -rf /

(Para ser claro,nãoexecute este comando.) Mas se eu controlar o cache da página de manual, você pode digitar man rmpara ver uma página de manual falsa em cache que informa rmque é de fato "rm - leia o manual" e não "rm - remova arquivos ou diretórios". Ou mesmosaída de sequências de escape do terminal que injetam código em seu shell.

Responder2

Digamos que o sistema em questão seja um servidor web. Digamos também que o administrador do servidor disponibiliza ao público em geral (ou intranet corporativa) algum software instalado no sistema por meio de uma página web. Pode ser tão simples quanto um redimensionador de imagens, uma calculadora ou um dicionário.

Se o software tivesse páginas de manual associadas a ele quando foi instalado, então o administrador - sendo a pessoa gentil e atenciosa que é - poderia decidir que disponibilizar essas páginas de manual para os usuários do serviço da web também seria uma boa ideia.

Portanto, o ícone ‘Ajuda’ na página da web inicia um script que captura um ou mais –armazenado em cache— páginas man e as envia para o navegador do usuário.

Qualquer pessoa ou código com acesso de gravação ao diretório de cache pode modificar esses arquivos para:

  • injetar Javascript arbitrário que será executado visitando os navegadores do usuário
  • coletar dados de telemetria de todos os usuários visitantes e encaminhá-los para algum repositório para processamento/criação de perfil posterior
  • coletar credenciais de autenticação – possivelmente até mesmo as credenciais de um usuário privilegiado do sistema (como o administrador)

Cada um dos itens acima pode ser abusado de muitas maneiras diferentes por qualquer pessoa com imaginação e moral/ética frouxa.

Responder3

Sempre que um diretório se torna gravável globalmente, uma falha de segurança é criada. Ignorando qual é a finalidade do diretório e como isso pode ser subvertido, apenas tê-lo gravável é um problema.

Aqui estão alguns possíveis problemas não relacionados à função do diretório:

  • Se não houver outros diretórios no sistema de arquivos graváveis ​​para o usuário, isso forneceria a qualquer usuário uma maneira de usar espaço nesse sistema de arquivos que não poderia usar de outra forma
  • Qualquer usuário pode salvar arquivos no diretório, enchendo o sistema de arquivos e causando um ataque de negação de serviço. Se este for o mesmo sistema de arquivos que /var/log, poderá impedir que os logs sejam gravados
  • Os arquivos podem estar ocultos neste diretório, fora dos locais esperados. Eles podem persistir após a exclusão da conta e, se o sistema de arquivos for preenchido misteriosamente, pode ser difícil encontrá-los
  • Se arquivos ou diretórios forem criados com o mesmo nome de futuros arquivos armazenados em cache, isso poderá impedir o funcionamento correto do uso pretendido do diretório (mesmo que o conteúdo desses arquivos não seja malicioso). Ajustar as permissões nesses arquivos pode dificultar a correção automática.

Responder4

A maioria das distribuições modernas pré-armazena em cache as páginas de manual (processando com troff) quando o pacote apropriado é instalado. Isso não é um problema.

O problema ocorre quando os arquivos man originais estão presentes, mas o cache está vazio (ou seja, os arquivos de cache não são pré-gerados).

Existem duas maneiras de lidar com isso:

  1. Execute a página de manual através do trofftoda vezcomo o usuário
  2. Execute a página de manual através do troff uma vez comoraize salve no diretório de cache

Para executar como root, o homem precisaria ser setuid. Se houvesse alguma falha de segurança noqualquer coisapor exemplo, análise de linha de comando, o invasor pode obter privilégios elevados

Aqui está a fonte relevante:https://git.savannah.gnu.org/cgit/man-db.git/tree/src/man.c

Felizmente, todas as principais distros agora pré-armazenam páginas de manual em cache, então não há realmente nada com que se preocupar

informação relacionada