Meus 2 cents:
Ataques MITM precisam criar seus proprios certificados falsos, que nao tem CA valida - em teoria bastaria encerrar a aplicacao se a CA nao puder ser validada.
Dependendo da atividade, uma solucao seria incluir o fingerprint do certificado que voce conhece - mas nos casos onde o certificado eh validado a cada pouco tempo (p.ex. letsencrypt) isso seria um pouco complicado.
Tive uma situacao parecida - gerei um certificado de longa duracao (30 anos) e inclui o fingerprint dele na aplicacao e usava para trocar dados de 2a. ordem e confirmar a conexao principal. Como o uso era bem especifico - para mim resolveu (logico que nada impede de descompilarem a aplicacao, modificarem o fingerprint e redistribuirem - mas eh bem mais complicado).
De qualquer forma, verifique sobre HSTS tambem.