Skip to content

crypto/tls: remove SSLv3 support #32716

Closed

Description

@FiloSottile

SSLv3 has been irreparably broken since the POODLE attack 5 years ago.

RFC 7568 (f.k.a. draft-ietf-tls-sslv3-diediedie) prohibits its use in no uncertain terms, and proceeds to list everything that's broken with it.

SSLv3 MUST NOT be used.

Negotiation of SSLv3 from any version of TLS MUST NOT be permitted.

Major CDNs dropped support immediately upon the disclosure of POODLE. Google frontends followed in 2015. Mozilla called the end of SSL 3.0 in 2014.

In crypto/tls, SSLv3 is only supported on the server side, and is disabled by default. It's time we remove it entirely, as it's not just obsolete, but insecure.

I would like to mark it as deprecated in Go 1.13 and announce it in the release notes, also to get feedback on the impact, and then remove it in Go 1.14.

/cc @rsc @agl

Activity

  1. added this to the Proposal milestone on Jun 20, 2019
  2. FiloSottile commented on Jun 21, 2019

    @FiloSottile
    ContributorAuthor

    Out of curiosity, this is the diffstat of a very straightforward removal of SSLv3, without touching tests or refactoring.

     src/crypto/tls/auth_test.go             |  7 -------
     src/crypto/tls/cipher_suites.go         | 48 ------------------------------------------------
     src/crypto/tls/common.go                |  9 ++-------
     src/crypto/tls/conn.go                  | 22 +---------------------
     src/crypto/tls/handshake_server_test.go |  1 -
     src/crypto/tls/key_agreement.go         | 11 ++++-------
     src/crypto/tls/prf.go                   | 98 ++++----------------------------------------------------------------------------------------------
     src/crypto/tls/prf_test.go              | 16 ----------------
     src/crypto/tls/tls_test.go              |  1 -
     9 files changed, 11 insertions(+), 202 deletions(-)
    
  3. rsc commented on Jun 26, 2019

    @rsc
    Contributor

    I'm certainly in favor of doing this but it would be nice to know more about the impact.

    It seems clear from the links in the top message above that SSLv3 has not been a concern for HTTPS since 2014-2015. What's less clear is whether there are other SSL servers (especially on company-internal networks) that have not yet migrated to TLS. That seems very unlikely, but we simply don't know.

    Marking it deprecated in Go 1.13 sounds like a reasonable tentative plan. I suggest we:

    • consider this issue tentatively accepted
    • add text to the Go 1.13 release notes about the removal and pointing back here for feedback
    • remove support at the start of the Go 1.14 dev cycle
    • leave this issue open to collect that feedback until the end of the Go 1.14 dev cycle
    • accept the issue at the end of the Go 1.14 dev cycle assuming no showstopper feedback arrives
  4. gopherbot commented on Jun 27, 2019

    @gopherbot
    Contributor

    Change https://golang.org/cl/184102 mentions this issue: crypto/tls: deprecate SSLv3 support

  5. added
    early-in-cycleA change that should be done early in the 3 month dev cycle.
    on Jul 15, 2019
  6. modified the milestones: Proposal, Go1.14 on Jul 15, 2019
  7. self-assigned this
    on Jul 15, 2019
  8. added a commit that references this issue on Jul 15, 2019
  9. gopherbot commented on Aug 27, 2019

    @gopherbot
    Contributor

    Change https://golang.org/cl/191976 mentions this issue: crypto/tls: remove SSLv3 support

  10. FiloSottile commented on Aug 27, 2019

    @FiloSottile
    ContributorAuthor

    This has now landed. We'll keep this open to collect feedback until the freeze, at which point we'll make a final decision.

  11. added a commit that references this issue on Aug 27, 2019
  12. added a commit that references this issue on Sep 1, 2019
  13. 7 remaining items

  14. rsc commented on Dec 11, 2019

    @rsc
    Contributor

    This was tentatively accepted in June - see #32716 (comment).
    This issue was left open to collect feedback about problems after the change landed.
    There have been no reported problems, so this is now a likely accept.

    Leaving open for a week for final comments.

  15. rsc commented on Jan 8, 2020

    @rsc
    Contributor

    No final comments, so accepting.

  16. FiloSottile commented on Jan 8, 2020

    @FiloSottile
    ContributorAuthor

    This was implemented by CL 191976. Closing.

  17. changed the title [-]proposal: crypto/tls: remove SSLv3 support[/-] [+]crypto/tls: remove SSLv3 support[/+] on Jan 8, 2020
  18. locked and limited conversation to collaborators on Jan 7, 2021
  19. moved this to Accepted in Proposalson Aug 10, 2022
  20. removed this from Proposalson Oct 19, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions