Injeção de Comandos
O que é Injeção de Comandos?
Injeção de ComandosAtaque em que a entrada do utilizador é passada sem sanitização a um shell do sistema, levando a aplicação a executar comandos fornecidos pelo atacante.
A injeção de comandos (OS command injection) ocorre quando uma aplicação constrói um comando de sistema concatenando entradas não confiáveis e o entrega a um shell. Metacaracteres como ;, &, |, $() ou crases permitem ao atacante encadear comandos adicionais que correm com os privilégios do processo da aplicação. As consequências vão da leitura e escrita arbitrária de ficheiros ao movimento lateral, shells inversas e ao controlo total do servidor. As defesas passam por evitar completamente o shell usando APIs da linguagem que aceitam arrays de argumentos, listas de valores permitidos, bibliotecas de validação e escape, sandboxing, execução dos serviços com privilégios mínimos e filtragem de saída para limitar o impacto.
● Exemplos
- 01
Um utilitário de ping que concatena um parâmetro de host permite que 127.0.0.1; cat /etc/shadow exponha hashes de palavras-passe.
- 02
Um endpoint de processamento de imagens que invoca o ImageMagick executa um comando do atacante através de um nome de ficheiro manipulado.
● Perguntas frequentes
O que é Injeção de Comandos?
Ataque em que a entrada do utilizador é passada sem sanitização a um shell do sistema, levando a aplicação a executar comandos fornecidos pelo atacante. Pertence à categoria Ataques e ameaças da cibersegurança.
O que significa Injeção de Comandos?
Ataque em que a entrada do utilizador é passada sem sanitização a um shell do sistema, levando a aplicação a executar comandos fornecidos pelo atacante.
Como se defender contra Injeção de Comandos?
As defesas contra Injeção de Comandos costumam combinar controles técnicos e práticas operacionais, conforme detalhado na definição acima.
Quais são outros nomes para Injeção de Comandos?
Nomes alternativos comuns: Injeção de comandos do SO, Shell injection.