On Sun, Jun 21, 2020 at 06:57:26AM -0700, Kevin J. McCarthy wrote:
On Sun, Jun 21, 2020 at 01:37:53PM +0200, Vincent Lefevre wrote:
On 2020-06-20 14:49:56 -0700, Kevin J. McCarthy wrote:
BTW, I don't think that testing $ssl_starttls here is useful, as I've
just said in bug 246

https://gitlab.com/muttmua/mutt/-/issues/246

Its value alone will not prevent a MITM attack, and this test may
annoy users who do not need TLS because the connection is already
encapsulated in an encrypted connection.

Sorry, I don't understand this comment.  The fix checks for $tunnel, and
won't check for either in that case.

The intent of the patch was to prevent a possible MITM in default configuration. Yes, there are other MITMs that aren't mitigated by $ssl_starttls, but this one can be done. The user is free to turn off $ssl_starttls in an account-hook if they know their unencrypted PREAUTH is desired.

This has been a bad week and I'm tired. Sorry, I understand your point now.

I think you are right. I'm protecting against *nothing* by inserting a $ssl_starttls prompt for "* PREAUTH" because the MITM can just as easily insert "* OK" and strip the STARTTLS capability.

So the prompt is just an annoyance because the user really needs to set $ssl_force_tls to stop all this nonsense.

The code should really be just:

  else if (ascii_strncasecmp ("* PREAUTH", idata->buf, 9) == 0)
  {
#if defined(USE_SSL)
    /* Unless using $tunnel, an unencrypted PREAUTH response may be
     * a MITM attack.  Abort if $ssl_force_tls is set. */
    if (!idata->conn->ssf && !Tunnel && option(OPTSSLFORCETLS))
    {
      mutt_error _("Encrypted connection unavailable");
      mutt_sleep (1);
      goto err_close_conn;
    }
#endif
    [...]
  }

I'd appreciate other's comments. I'm plan on making another stable release in a couple days and want to get this right.

--
Kevin J. McCarthy
GPG Fingerprint: 8975 A9B3 3AA3 7910 385C  5308 ADEF 7684 8031 6BDA

Attachment: signature.asc
Description: PGP signature

Reply via email to