
Análise da vulnerabilidade CVE 2024 3273: injeção de comandos em dispositivos D-Link
Um dispositivo D-Link Network Attached Storage (NAS), ou armazenamento em rede, é um dispositivo com disco rígido (ou discos) conectado a uma rede de computadores para armazenamento e compartilhamento de arquivos. Diferente de um disco rígido externo comum, que é conectado diretamente a um computador, o dispositivo NAS conecta-se à rede local, permitindo que vários utilizadores ou dispositivos utilizem e compartilhem arquivos simultaneamente. Os dispositivos NAS são usados tanto em ambientes domésticos quanto empresariais.
A empresa de pesquisa de segurança VulDB Coordination descobriu uma vulnerabilidade crítica (CVE-2024-3273) em alguns dispositivos NAS D-Link, que permite que utilizadores maliciosos executem injeção de comandos pela rede, executando comandos maliciosos no dispositivo da vítima.
Esta vulnerabilidade afeta apenas determinados dispositivos D-Link cujo ciclo de vida já terminou e o fabricante encerrou o suporte de software e hardware para esses dispositivos. Os seguintes modelos são afetados:
Esta vulnerabilidade também requer a exploração simultânea de outra fraqueza. Especificamente, o dispositivo NAS é tornado especialmente vulnerável por uma backdoor causada por credenciais de login pré-programadas. Essa backdoor é a vulnerabilidade (CVE-2024-3272), onde é possível contornar a autenticação utilizando o "utilizador de sistema" messagebus presente por defeito em todos os dispositivos afetados.
Com este utilizador deemon de sistema (system daemon) presente por defeito em sistemas Linux, não é possível fazer login diretamente no sistema, mas basta uma requisição HTTP habilmente elaborada para um endpoint específico para já causar danos.
Também é necessário saber o endereço IP do dispositivo alvo.
A vulnerabilidade reside na função de processamento de requisições HTTP GET no ficheiro /cgi-bin/nas_sharing.cgi do dispositivo NAS. Um utilizador malicioso pode enviar uma requisição GET pela rede para o dispositivo da vítima fornecendo como parâmetros o nome de utilizador "messagebus" e deixar a senha em branco. A injeção de comando entra em ação usando o parâmetro system, definindo o valor do parâmetro como o comando desejado.
O comando é ocultado com codificação base64 e adicionado como valor do parâmetro system. Posteriormente, ao decodificar, revela-se o comando malicioso que é executado como um comando shell no dispositivo alvo.
🗒️ CVSS Pontuação base: 7.3 Alta
A vulnerabilidade CVE-2024-3273 é causada por CWE-77, ou seja, injeção de comando. Isso significa que o atacante pode inserir comandos maliciosos, que o sistema alvo então executa, porque o comando inserido não é validado.
Como o código-fonte dos dispositivos não é público, provavelmente seria necessário adicionar uma função de validação ao método que lida com as requisições para evitar este problema. Por exemplo, poderia haver uma lista de comandos de sistema permitidos para evitar a execução de comandos arbitrários.
A vulnerabilidade compromete principalmente os seguintes objetivos de segurança:
Esta vulnerabilidade afeta apenas dispositivos cujo ciclo de vida já terminou, portanto, o fabricante recomenda substituir os dispositivos e não utilizar os dispositivos vulneráveis.
Como estes dispositivos já não são suportados, também não recebem atualizações de segurança de software, o que significa que a vulnerabilidade não será corrigida. Portanto, a única solução é parar de usar os produtos com a vulnerabilidade.
Se não for possível substituir o dispositivo vulnerável, o dispositivo deve ser removido da rede pública e, em último caso, ser utilizado apenas para dispositivos na rede local (deve ser instalado um firewall para bloquear requisições externas).
De acordo com o relatório inicial, havia mais de 92 000 dispositivos na rede no momento da descoberta da vulnerabilidade. De acordo com um estudo posterior, este número pode ter sido significativamente menor, ficando na casa dos 5500 dispositivos. No entanto, ainda hoje muitos dispositivos antigos provavelmente permanecem conectados à rede e, portanto, vulneráveis.
Foram publicadas várias provas de conceito (PoC) do ataque e a vulnerabilidade provavelmente ainda é amplamente explorada. Até o momento, foram detectados pelo menos 146 casos onde se tentou explorar a vulnerabilidade CVE-2024-3273.
Trecho de código de exemplo:
def execute_command(ip, command: str = "id", verbose: bool = True) -> str:
command_hex = ''.join(f'\\\\x{ord(c):02x}' for c in command)
command_final = f"echo -e {command_hex}|sh".replace(' ', '\t')
base64_cmd: str = base64.b64encode(command_final.encode()).decode()
url: str = f"{ip}/cgi-bin/nas_sharing.cgi"
params: dict = {
"user": "messagebus",
"passwd": "",
"cmd": "15",
"system": base64_cmd,
}