O que é injeção de log?





18 de agosto de 2017, Eslam Medhat

Os desenvolvedores precisam considerar o risco de ler e gravar logs de aplicativos se eles não estão limpando e validando a entrada antes de chegar ao log.
Os registros que são suscetíveis a injeção podem ter sido comprometidos por um usuário mal-intencionado para cobrir as faixas de um ataque bem-sucedido com entradas enganosas. Isso também é conhecido como um ataque de repúdio (repudiation attack).

Um aplicativo que não loga as ações dos usuários de forma segura pode ser vulnerável a usuários negando uma ação. Imagine um aplicativo que registre solicitações neste formato:

Data, Hora, Nome de usuário, ID, Fonte IP, Solicitação

Os parâmetros vêm diretamente da solicitação sem validação de entrada:
Cookie: PHPSESSID = pltmp1obqfig09bs9gfeersju3; Username = sdr; Id = justin

Um invasor pode então modificar o parâmetro id para preencher o log com entradas erradas:
Cookie: PHPSESSID = pltmp1obqfig09bs9gfeersju3; Username = sdr; Id = \ r \ n [FAKE ENTRY]
Em algumas plataformas, se o registro não evitar corretamente de bytes nulos, o restante de uma seqüência de caracteres que deve ser logada pode não ser gravado. Por exemplo:

Cookie: PHPSESSID = pltmp1obqfig09bs9gfeersju3; Username = sdr; Id =% 00

Pode resultar na entrada de registro individual que se intercepta no campo ID:
Data, Hora, Nome de usuário, ...

Um exemplo real de injeção de log ocorreu com a popular ferramenta de monitoramento SSHD DenyHosts. O DenyHosts monitora os logs SSH e bloqueia dinamicamente o endereço IP de origem de uma conexão que produz muitas falhas de autenticação. A versão 2.6 é Vulnerável a um ataque de injeção de log que pode levar a uma negação de serviço (DoS) do serviço SSH.
Como os usuários podem especificar o nome de usuário que é registrado, um invasor pode especificar qualquer usuário que ele ou ela deseja no arquivo /etc/hosts.deny, que controla o acesso ao SSH. Ao especificar todos os usuários, o invasor cria um bloqueio completo do serviço SSH na máquina, impedindo que qualquer um da caixa se conecte.
Todos os logs e sistemas de monitoramento devem exigir uma validação rigorosa para evitar um ataque que trunca as entradas que levam à perda de informações. O tipo mais grave de ataques de injeção de log permite que o sistema usado para monitorar os registros seja comprometido, tornando a resposta a incidentes especialmente difícil se não houver evidências de quais tipos de ataques foram realizados.
Eslam Medhat