Sim, o DNS é inseguro. Se você realmente quer saber que está falando com o servidor que queria, você deve autenticar o servidor. Então é isso que fazemos. Não confiamos que o DNS seja seguro e implementamos a segurança de que precisamos em outro lugar, como o TLS (Transport-Layer Security).
O TLS (a moderna camada de segurança do HTTPS) faz isso forçando o servidor a enviar ao cliente um certificado indicando o nome do servidor e a chave pública. Esse certificado é criptograficamente assinado por uma terceira parte confiável, chamada Autoridade de Certificação (CA). A assinatura da AC confirma que o certificado mostra a chave pública correta para o servidor nomeado.
Para provar que o servidor é o legítimo proprietário do certificado (e não algum impostor que roubou um certificado válido), o handshake TLS prova que ele conhece a chave privada secreta que forma um conjunto correspondente com a chave pública no cert. Isso é feito sem revelar a própria chave privada, é claro.
Existe uma proposta para proteger o DNS chamado DNSsec, mas ele está funcionando há anos e nunca parece ir a lugar nenhum. Pode nunca se tornar amplamente implantado. Existe agora uma proposta para "DNS sobre HTTP" (DoH, pronunciado "D'oh!") Que poderia proteger o DNS fazendo-o por HTTPS.