{"action":"created","issue":{"url":"https://api.github.com/repos/Homebrew/homebrew/issues/34634","labels_url":"https://api.github.com/repos/Homebrew/homebrew/issues/34634/labels{/name}","comments_url":"https://api.github.com/repos/Homebrew/homebrew/issues/34634/comments","events_url":"https://api.github.com/repos/Homebrew/homebrew/issues/34634/events","html_url":"https://github.com/Homebrew/homebrew/issues/34634","id":50779363,"number":34634,"title":"Death to SSLv3","user":{"login":"DomT4","id":6998367,"avatar_url":"https://avatars.githubusercontent.com/u/6998367?v=3","gravatar_id":"","url":"https://api.github.com/users/DomT4","html_url":"https://github.com/DomT4","followers_url":"https://api.github.com/users/DomT4/followers","following_url":"https://api.github.com/users/DomT4/following{/other_user}","gists_url":"https://api.github.com/users/DomT4/gists{/gist_id}","starred_url":"https://api.github.com/users/DomT4/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DomT4/subscriptions","organizations_url":"https://api.github.com/users/DomT4/orgs","repos_url":"https://api.github.com/users/DomT4/repos","events_url":"https://api.github.com/users/DomT4/events{/privacy}","received_events_url":"https://api.github.com/users/DomT4/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":26,"created_at":"2014-12-03T04:48:34Z","updated_at":"2015-01-10T18:28:31Z","closed_at":null,"body":"Alright, I'm punting this into public discussion. If there aren't any unworkable rejections of the idea, my desire is to press ahead with this and close it out before December 11th.\r\n\r\nI'm proposing, primarily, amongst other things, that we remove SSLv3 support from OpenSSL. This is in part driven by POODLE, which has thankfully hastened the demise of SSLv3, but I don't think anyone is going to deny that SSLv3 has been weak at best for years and years now. SSLv3 was 'birthed' in 1996. It was replaced by TLSv1.0 in 1999. 15 years after the introduction of TLSv1.0 we're still in a world where SSLv3 is a thing, sigh. But POODLE has finally nudged the world into some kind of coordinated action, and I think Homebrew should be part of that.\r\n\r\nI'll bullet point things from this point on to avoid making anyone read walls of text and scaring everyone off:\r\n\r\n* GnuTLS will stop supporting SSLv3 [from 3.4.0](http://nmav.gnutls.org/2014/10/what-about-poodle.html).\r\n* cURL now has SSLv3 [disabled by default](http://daniel.haxx.se/blog/2014/10/17/curl-is-no-poodle/).\r\n* PolarSSL has been [advising people](https://polarssl.org/tech-updates/security-advisories/polarssl-security-advisory-2014-03-poodle-attack-on-ssl-v3) to disable SSLv3. Homebrew disabled SSLv3 in PolarSSL a couple of months back, in [this commit](https://github.com/Homebrew/homebrew/commit/73ca769de13b72682d0dcfe7d54f31f96fd5e5ca). So far, no hiccups.\r\n* Mozilla's latest stable release of Firefox [completely axed](https://blog.mozilla.org/security/2014/10/14/the-poodle-attack-and-the-end-of-ssl-3-0/) SSLv3, and attempting to connect to a site that only talks SSLv3 is automatically blocked for safety.\r\n* Google is [axing](https://groups.google.com/a/chromium.org/forum/#!topic/security-dev/Vnhy9aKM_l4) SSLv3 from [Chromium](https://code.google.com/p/chromium/issues/detail?id=418848&q=sslv3&colspec=ID%20Pri%20M%20Iteration%20ReleaseBlock%20Cr%20Status%20Owner%20Summary%20OS%20Modified), Canary and [Google Chrome](http://www.zdnet.com/google-advances-ssl-with-new-chrome-versions-7000035966/) (>40). Chrome 39 [killed the](https://twitter.com/agl__/status/534756432889929729) SSLv3 fallback mechanism.\r\n* Python have released [two patches](http://bugs.python.org/issue22638) that disable SSLv3 in Python 2.7 & [Python 3.4](https://hg.python.org/cpython/rev/653dfb1240d5). Those patches would be adopted as part of this. Given those patches are in the trunk, It looks inevitable that we will see them at the next stable release.\r\n* Ruby recently [killed SSLv2 and SSLv3](https://bugs.ruby-lang.org/issues/9424). I believe those changes are in the latest stable Ruby release, and have been [backported](https://bugs.ruby-lang.org/issues/9640), although I will check this.\r\n* Cloudflare have some [interesting stats](https://blog.cloudflare.com/sslv3-support-disabled-by-default-due-to-vulnerability/) on SSLv3 usage, which is an important consideration here. Less than 0.7% of *all* SSL/TLS traffic that strolls across Cloudflare's network uses SSLv3.\r\n* Debian Jessie and above [killed SSLv3](http://metadata.ftp-master.debian.org/changelogs//main/o/openssl/openssl_1.0.1j-1_changelog) in early October. So far, nothing has cropped up that has forced Debian to reconsider this. Homebrew has a history of following Debian Jessie in terms of what releases we use and the configuration we adopt, and I feel confident that two months after Debian made the move we can follow them into disabling SSLv3. I am a strong proponent of Debian's move towards better security in recent years, ignoring that slightly embarrassing massive goof-up from 2006-2008. [Debian recently shot down the idea of bringing SSLv3 support back](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=765565).\r\n*  LibreSSL's latest stable release killed off SSLv3 by default, although there is [some confusion](http://comments.gmane.org/gmane.os.openbsd.tech/39606) about that.\r\n\r\nI made the argument at the time we disabled SSLv2, and I'll make it again now:\r\n\r\nFor better or worse, OpenSSL themselves have largely maintained a position over the years that it is up to distro managers and individual users how they configure OpenSSL. OpenSSL ships with all the ciphers you could possibly imagine (*almost*), and it's up to you to decide which ones you want to support or not. So it is down to package managers to decide whether to act or not, rather than waiting on OpenSSL to do so. For better or worse, OpenSSL has decided for now not to make that choice for package managers and individuals.\r\n\r\nThe OpenSSL trunk has started experimenting with the idea of Security Levels, where mandating Security Level 3 at build time would disable x,y,z ciphers, but that has not yet landed in stable and probably won't land until at least 1.0.2 stable.\r\n\r\nThe only OpenSSL release which is really going to get smacked about by any SSLv3 change is the 0.9.8 branch, which Apple currently uses, but Apple's OpenSSL support is depreciated. As of December 2015 OpenSSL 0.9.8 will cease to be supported entirely, and the last OpenSSL version which supports nothing newer than TLS1.0 will cease to be shipped by everyone, distros included, *hopefully*. \r\n\r\nSadly, there isn't a huge amount of point in disabling SSLv3 in OpenSSL 0.9.8 because that leaves it with TLS1.0 and that's all. I'd rather Homebrew ditch supporting OpenSSL 0.9.8 entirely, but I'm content to leave it in ``` Homebrew/Versions ``` until the December 2015 expiration date.\r\n\r\nSo, We'd do the same dance we did when we killed SSLv2, which is essentially:\r\n* Change OpenSSL, Revision.\r\n* Revision every dependent.\r\n\r\nYes, Making users bump everything is tedious, but yes, I believe it is worthwhile. The only formulae we had significant issues with last time were:\r\n* Python 2.7\r\n* Python 3.4\r\n* Ruby\r\n\r\nI seem to recall that [all three were bottle issues](https://github.com/Homebrew/homebrew/issues/31851), although I could be incorrect in that recollection. Now that SSLv3 removal has landed in Ruby stable, and been backported, and there are patches for the two Python versions available that will be in the next stable releases, I feel like those formulae should have a smoother ride this time. \r\n\r\nWe've had one request to turn [SSLv2 back on](https://github.com/Homebrew/homebrew/issues/33066) in the time since we disabled it.\r\n\r\nI expect SSLv3 to be *slightly* more troublesome, but in reality SSLv3 usage is tiny, and servers *should not* be using SSLv3 any more, and the number of servers out there that can't talk at least TLS1.0 is *tiny*.\r\n\r\nOther things I'd like to deal with whilst we're here:\r\n\r\n* Disabling IDEA, with ``` no-idea ```. Debian and [Ubuntu](https://launchpadlibrarian.net/178068934/buildlog_ubuntu-utopic-arm64.openssl_1.0.1f-1ubuntu6_UPLOADING.txt.gz) do this. IDEA has a well known weak-key problem, but isn't broken *as such* yet. Still, I feel we'd not lose anything following the Linux distros' lead on killing ``` IDEA ``` support. Apple's native OpenSSL also kills [IDEA](https://opensource.apple.com/source/OpenSSL098/OpenSSL098-27/src/crypto/opensslconf.h). IDEA is enabled by default, so this would be a change, albeit a minor one.\r\n* Specify ``` no-mdc2 ``` and ``` no-rc5 ```. These are already turned off by default, but making that more explicit won't do any harm, and follows the Linux distro's lead.\r\n\r\nThe most recent OpenSSL release finally properly killed off SSLv3. It turned out that although the option of doing ``` ./configure no-ssl3 ``` had been there for a while it wasn't completely working. As of the latest stable release, which Homebrew is using, that issue has been fixed and ``` no-ssl3 ``` works as expected. There's a slightly odd patch on the current [OpenSSL git](https://git.openssl.org/gitweb/?p=openssl.git;a=commit;h=961d2ddb4b48e0e857a704b0cc6b475d63372419) which I want to ask upstream about first, and pull into our OpenSSL formula if necessary.\r\n\r\nAlright, that's me. I open the floor to comments :wink:."},"comment":{"url":"https://api.github.com/repos/Homebrew/homebrew/issues/comments/69466212","html_url":"https://github.com/Homebrew/homebrew/issues/34634#issuecomment-69466212","issue_url":"https://api.github.com/repos/Homebrew/homebrew/issues/34634","id":69466212,"user":{"login":"mikemcquaid","id":125011,"avatar_url":"https://avatars.githubusercontent.com/u/125011?v=3","gravatar_id":"","url":"https://api.github.com/users/mikemcquaid","html_url":"https://github.com/mikemcquaid","followers_url":"https://api.github.com/users/mikemcquaid/followers","following_url":"https://api.github.com/users/mikemcquaid/following{/other_user}","gists_url":"https://api.github.com/users/mikemcquaid/gists{/gist_id}","starred_url":"https://api.github.com/users/mikemcquaid/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mikemcquaid/subscriptions","organizations_url":"https://api.github.com/users/mikemcquaid/orgs","repos_url":"https://api.github.com/users/mikemcquaid/repos","events_url":"https://api.github.com/users/mikemcquaid/events{/privacy}","received_events_url":"https://api.github.com/users/mikemcquaid/received_events","type":"User","site_admin":true},"created_at":"2015-01-10T18:28:31Z","updated_at":"2015-01-10T18:28:31Z","body":"@azet Please leave me alone."}}