O resultado de um scanner nomeia um endereço, uma porta e algo negociado ali. Não nomeia o processo por trás desse socket, e num host VPN vários processos podem compartilhar a máquina enquanto apenas um deles é o túnel. Ler uma string de versão de um utilitário auxiliar ou encontrar um arquivo de biblioteca no disco acrescenta evidências sobre o host, não sobre o ouvinte. A descoberta só se torna acionável quando é vinculada a um componente em execução e então comparada ao escopo que um aviso realmente declara.

A ordem importa: componente primeiro, aviso depois, remediação por último.

O relatório nomeia uma porta, não um programa

Comece pelo endpoint que foi realmente avaliado. Uma sondagem contra a porta de administração HTTPS mediu o serviço web, sua pilha TLS e qualquer proxy à frente dele; nada aprendeu sobre o ouvinte OpenVPN ou WireGuard em outra porta. Proxies reversos e agentes de gestão pioram isso, porque o certificado e o banner podem pertencer ao frontend enquanto a biblioteca vulnerável fica atrás, num processo de backend.

Registre o destino, o transporte, a porta e o nome do serviço junto com o resultado, para que o escopo viaje com a descoberta.

O que é realmente a compilação em execução

Num host de propósito geral, o pacote instalado e a biblioteca carregada são questões distintas. Um banco de dados de pacotes pode listar uma versão corrigida enquanto um daemon de longa duração ainda mantém o objeto compartilhado antigo na memória, e uma imagem de appliance integrada pode trazer suas próprias bibliotecas que nenhum gerenciador de pacotes reporta. Pergunte ao gerenciador de serviços o que está em execução e depois inspecione o processo e suas ligações.

systemctl status openvpn-server@server --no-pager
ps -o pid,lstart,args -C openvpn
ss -lntup | grep -E '1194|443'
dpkg -l | grep -i -E 'openvpn|libssl'
ldd "$(command -v openvpn)" | grep -i ssl

A hora de início na lista de processos é o detalhe que as pessoas pulam. Um daemon iniciado antes da última atualização de pacotes ainda executa a compilação carregada na inicialização, e esse é exatamente o caso em que um inventário diz corrigido e o socket diz o contrário.

Compatibilizar a compilação com o escopo de um aviso

Avisos descrevem produtos, versões e às vezes condições exigidas, e esses três campos nem sempre se alinham à versão de um pacote. O aviso de Heartbleed da OpenVPN de abril de 2014 é um exemplo histórico útil porque separa as versões afetadas do Access Server dos serviços web e dos daemons VPN, que tinham exposição diferente. A lição é ler qual componente o texto abrange em vez de fazer coincidir por padrão a palavra OpenSSL.

Esse aviso também está datado. Seus números de versão corrigidos já não são conselho de instalação, e uma falha corrigida em 2014 não diz nada sobre problemas posteriores no ramo que você executa hoje.

Resolver a divergência e depois fechar a exposição

Quando inventário e avaliação discordam, verifique se ambos descrevem o mesmo endpoint e o mesmo ambiente de execução: outro endereço, um proxy frontal, um segundo serviço, um processo antigo ainda vinculado à porta ou uma biblioteca integrada que o gerenciador de pacotes nunca viu. Resolva isso na fronteira antes de reescrever um relatório.

Aplique a correção suportada, reinicie o serviço afetado e confirme que a nova compilação é a que está em execução agora. Um arquivo corrigido no disco com o processo antigo ainda servindo tráfego não é remediação.

Depois trate do que o componente pode ter retido durante a janela de exposição. Corrigir e substituir credenciais respondem a perguntas diferentes, e um certificado guardado perto do host afetado não é por si só uma lista do que vazou. Siga o procedimento do responsável pelo incidente para revogação, remoção de sessões e atualizações de clientes, e registre qual componente foi afetado, por que as evidências se aplicavam e o que o encerrou. Esse registro é o que uma revisão posterior lerá.

Artigos relacionados