Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.
Sign updisable TLS negotiation for remotes that fail STARTTLS #770
Comments
msimerson
changed the title from
disable TLS negotiation for remotes that fail STARTTLS attempts
to
disable TLS negotiation for remotes that fail STARTTLS
Dec 9, 2014
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
jaredj
Dec 9, 2014
Contributor
+1, if someone not currently using Haraka can comment on this as a general MTA proposal :)
|
+1, if someone not currently using Haraka can comment on this as a general MTA proposal :) |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
baudehlo
Dec 9, 2014
Collaborator
Concern: There may be an attack vector whereby a client could be forced to downgrade to plaintext when they never have before. Some sort of protection against that would be useful.
note: MITM makes it already possible to perform this attack, so it would have to be a non-MITM attack vector to be relevant or worse than the current situation.
|
Concern: There may be an attack vector whereby a client could be forced to downgrade to plaintext when they never have before. Some sort of protection against that would be useful. note: MITM makes it already possible to perform this attack, so it would have to be a non-MITM attack vector to be relevant or worse than the current situation. |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
msimerson
Dec 9, 2014
Member
@msimerson said:
TLS should also have a "require" list as well
such as gmail.com
maybe even "learn" that list automatically, and refuse to connect to remotes
that used to offer STAARTTLS but currently don't
@godsflaw: that is a very good idea given recent downgrade attacks
|
@msimerson said:
@godsflaw: that is a very good idea given recent downgrade attacks |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
jaredj
Dec 10, 2014
Contributor
If I'm not mistaken, the original proposal plus the dynamic 'require' list would mean that if two haraka servers were talking to each other and TLS broke:
- on the first attempt, the sending haraka server would note that the receiving haraka server offered STARTTLS
- when TLS broke on the first attempt, the receiving haraka server would note that it failed and add the sending server to the no-tls object
- on the second attempt, the receiving server would not offer STARTTLS; the sending server would refuse to talk to the receiving server because it was no longer offering STARTTLS.
Just sayin'
|
If I'm not mistaken, the original proposal plus the dynamic 'require' list would mean that if two haraka servers were talking to each other and TLS broke:
Just sayin' |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
msimerson
Dec 10, 2014
Member
@jaredj absolutely true. However, that's exactly 0% worse than today, when a failed STARTTLS means email doesn't get delivered (until a human gets involved). With a "don't regress" option, the benefit is rejecting that extremely remote possibility of a MITM attack. I don't think that feature should be enabled by default, but I still think it's a great feature. The tin-foil hat crowd would also approve.
[tls]
; cache list of remotes that successfully STARTTLS with us. Require them to use TLS in the future.
remember_hosts=false
; remember hosts with valid signed certs. Require future connections from these hosts
; to have valid certificates.
remember_trusted_hosts=false
; remember when a host attempts STARTTLS and fails. The next time they connect, don't
; offer STARTTLS option (so message gets delivered). This trades a little bit of security for
; more reliably mail delivery.
disable_for_failed_hosts=true|
@jaredj absolutely true. However, that's exactly 0% worse than today, when a failed STARTTLS means email doesn't get delivered (until a human gets involved). With a "don't regress" option, the benefit is rejecting that extremely remote possibility of a MITM attack. I don't think that feature should be enabled by default, but I still think it's a great feature. The tin-foil hat crowd would also approve. [tls]
; cache list of remotes that successfully STARTTLS with us. Require them to use TLS in the future.
remember_hosts=false
; remember hosts with valid signed certs. Require future connections from these hosts
; to have valid certificates.
remember_trusted_hosts=false
; remember when a host attempts STARTTLS and fails. The next time they connect, don't
; offer STARTTLS option (so message gets delivered). This trades a little bit of security for
; more reliably mail delivery.
disable_for_failed_hosts=true |
msimerson commentedDec 9, 2014
the idea
If a remote attempts to connect and fails, cache their IP in an in-memory no-tls object. The next time that IP connects:
This would: