TL; DR: el uso de certificados autofirmados no significa que MITM sea posible y el uso de un certificado emitido por una CA pública no significa que MITM sea imposible. Pero, es más probable que MITM sea posible si se usan certificados autofirmados porque los clientes que tratan con certificados autofirmados a menudo los tratan de forma incorrecta.
El uso de un certificado autofirmado no permite MITM en general y el uso de un certificado emitido por una CA pública no protege contra MITM en general. Además de mantener privada la clave privada, la protección importante contra los ataques MITM no es qué tipo de certificado se usa en el servidor, sino cómo se verifica este certificado en el cliente, es decir, si el servidor se autentica correctamente con un certificado o no.
La forma establecida de autenticar un servidor utilizando un certificado firmado por una CA pública es verificar el asunto del certificado, la cadena de confianza, el vencimiento, etc. - consulte marco de certificado SSL 101: ¿Cómo el navegador realmente verifica la validez de un certificado de servidor dado? para más detalles. Pero si un cliente no realiza estas comprobaciones o no las realiza correctamente, un atacante en la ruta podría proporcionar su propio certificado y el cliente no lo notará. En el pasado, este tipo de errores ocurrieron debido a la ignorancia o debido a errores, por ejemplo, no se verificaron los certificados, no se validó el tema, no se comprobaron las restricciones básicas, etc.
Con los certificados autofirmados, también se puede realizar la autenticación adecuada del servidor: si el cliente conoce el certificado que se espera (o su clave pública, o un hash de él ...), el cliente puede verificar que el certificado entregado coincide con el esperado. Este tipo de verificación se realiza correctamente en muchos casos de uso. Pero en muchos otros casos se hace mal: no es raro que los clientes simplemente tengan todas las comprobaciones de certificados deshabilitadas por completo si esperan un certificado autofirmado en lugar de esperar un certificado autofirmado específico. Con tales clientes rotos, MITM es fácil ya que el atacante podría usar un certificado arbitrario y el cliente lo aceptará.