coreinfrastructure / best-practices-badge

🏆Open Source Security Foundation (OpenSSF) Best Practices Badge (formerly Core Infrastructure Initiative (CII) Best Practices Badge)
https://www.bestpractices.dev
MIT License
1.2k stars 203 forks source link

Harden BadgeApp TLS settings: Remove 3DES in permitted list and require TLS 1.2+? #485

Open david-a-wheeler opened 8 years ago

david-a-wheeler commented 8 years ago

There's a new collision attack that appears to be devastating to 3DES and Blowfish. See: https://threatpost.com/new-collision-attacks-against-3des-blowfish-allow-for-cookie-decryption/120087/

Our current site supports 3DES, and that is now being frowned on: https://tls.imirhil.fr/https/bestpractices.coreinfrastructure.org

That's sad, 3DES is slow but it has held up well against other attacks. But crypto algorithm agility to the rescue: we'll just remove it from our permitted crypto algorithms.

A challenge: This is actually controlled by Heroku and Fastly. We need to figure out how to invoke that agility.

david-a-wheeler commented 8 years ago

Hmm, don't see a way to configure the crypto suite on Heroku in these docs: https://devcenter.heroku.com/articles/ssl-endpoint

david-a-wheeler commented 8 years ago

For the record, a lot of people are looking at removing 3DES. Here's the discussion for Python: https://bugs.python.org/issue27850

david-a-wheeler commented 7 years ago

Submitted ticket to Heroku: https://help.heroku.com/tickets/425806

This may be painfully obvious & a stupid question, but I don't see the answer.

david-a-wheeler commented 7 years ago

Heroku has responded (and quite quickly too). My plan is to update the master and staging tiers, try that out, and if it works roll it out to production.

david-a-wheeler commented 7 years ago

Qualys currently gives our site an "A+", but they also plan to update their grading criteria to penalize 3DES support. Details here: https://blog.qualys.com/ssllabs/2016/11/16/announcing-ssl-labs-grading-changes-for-2017

david-a-wheeler commented 7 years ago

Fastly is our CDN. Fastly's schedule for 3DES and TLS 1.2 is as follows:

david-a-wheeler commented 7 years ago

I'm thinking we should switch to "no lower than TLS 1.2" and "no 3DES".

All major browsers support TLS version 1.2 as of 2014, and practically everyone at least supports AES (not just 3DES). We can ask Fastly to do this for us, via customer service, and enforce in other ways.

@dankohn @jdossett Marcus Streets - what do you think? Time to tighten the HTTPS requirements for BadgeApp in this way?

david-a-wheeler commented 7 years ago

The only problem with upgrading the TLS minimum is that many old Android versions don't support TLS 1.2 - and Android phones often don't get upgraded properly.

But I think it's doable. Android 5.0 (Lollipop) or better directly handle TLS 1.2, and Android 5.0 or better covers 60% of the Android market (and probably much more of those who'd visit this website). Android 4.1-4.4.4 disable TLS 1.2 by default, and they're almost all the rest. That said, Android 4.1-4.4.4 merely disable TLS 1.2 by default but do have it... so those users could enable TLS 1.2, and if we included them that includes 97.9% of the Android market.