Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Deprecate TLS v1.2 for PCI-DSS v3.2.1 Requirement 2.2.3 #979

Closed
cmlh opened this issue May 1, 2021 · 34 comments
Closed

Deprecate TLS v1.2 for PCI-DSS v3.2.1 Requirement 2.2.3 #979

cmlh opened this issue May 1, 2021 · 34 comments
Assignees

Comments

@cmlh
Copy link
Contributor

cmlh commented May 1, 2021

I would like to propose that OWASP recommend the migration from TLS v1.2 to TLS v1.3 [or later] to support PCI-DSS v3.2.1 Requirement 2.2.3 reproduced below:

image

Therefore, V9.1 Client Communications Security will need to be modified.

The alignment with PCI-DSS v3.2.1 is tracked by GitHub Issue #317 (comment)

@cmlh cmlh mentioned this issue May 1, 2021
@jmanico
Copy link
Member

jmanico commented May 1, 2021 via email

@markehack
Copy link

The Federal Government standards require that TLS1.3 be supported by January 2024 so this proposal does appear somewhat premature both for PCI-DSS and for OWASP.

@cmlh
Copy link
Contributor Author

cmlh commented May 1, 2021

“Early TLS” cites TLS 1.0 and 1.1. I see nothing in PCI-DSS suggesting the deprecation of TLS 1.2.

PCI-DSS v3.2.1 states "Refer to industry standards and best practices for information on strong cryptography and secure protocols (e.g., NIST SP 800-52 and SP 800-57, OWASP, etc.).".

Therefore, in order to maintain our leadership position OWASP must deprecate TLS v1.2 @jmanico.

@cmlh
Copy link
Contributor Author

cmlh commented May 1, 2021

The Federal Government standards require that TLS1.3 be supported by January 2024 so this proposal does appear somewhat premature both for PCI-DSS and for OWASP.

Are you referring to NIST SP 800-52 Rev. 2 @markehack?

The Australian Cyber Security Centre
states "TLS 1.3 removed vulnerable cipher suites found in TLS 1.2, while introducing stronger cipher suites." and advises to "Begin transitioning from TLS 1.2 to TLS 1.3" etc.

@jmanico jmanico self-assigned this May 2, 2021
@jmanico jmanico added the 2024 label May 2, 2021
@markehack
Copy link

markehack commented May 3, 2021 via email

@cmlh
Copy link
Contributor Author

cmlh commented May 3, 2021

As the S in OWASP is for Security then our policy in the past has deliberately not been aligned with compatibility such as @jmanico @owasp.org email to the OpenJDK security-dev mailing list

Nevertheless, interim Pull Request #983 maintains backwards compatibility for TLS 1.2 rather than wait until 2024 for Pull Request #980 @markehack

@elarlang
Copy link
Collaborator

elarlang commented May 4, 2021

@cmlh, please have discussion here in the issue first, and if the change/proposal found agreement, then it's time to make PR. Discussion over pull-requests is just a mess. Discussion in PR should be targeted only for "syntax or language", not for the idea of the change itself. This is also stated in PR template.

@jmanico
Copy link
Member

jmanico commented May 4, 2021

As the S in OWASP is for Security then our policy in the past has deliberately not been aligned with compatibility such as @jmanico @owasp.org email to the OpenJDK security-dev mailing list

Nevertheless, interim Pull Request #983 maintains backwards compatibility for TLS 1.2 rather than wait until 2024 for Pull Request #980 @markehack

Christian, using things that I said in 2017 as a way to either discredit me or make me look bad is the kind of behavior that got you banned from OWASP in the first place. Consider this a polite warning.

@markehack
Copy link

markehack commented May 4, 2021 via email

@tomato42
Copy link

tomato42 commented May 4, 2021

There really is no cryptographic reason to deprecate TLS 1.2 completely.
When it's used with ephemeral key exchanges, strong hashes for signatures, and AEAD ciphersuites it's as strong as TLS 1.3.

@cmlh
Copy link
Contributor Author

cmlh commented May 5, 2021

To address @elarlang #979 (comment)

While I wanted to wait until after the release of PCI-DSS 4.0 as per #317 (comment) which would have at delayed the timeline to 2024 or later I have adhered to CONTRIBUTING.md:

I created Issue #979 after the discussion within Issue #317 (comment) after @jmanico stated:

We are pushing toward 4.1 so PR's in this are are appreciated.

@jmanico then posted comments to Pull Request #980 (comment) against CONTRIBUTING.md before I was able to publish the other planned changes so they could be considered in their entirity.

To address both @markehack #979 (comment) and @ tomato42 #979 (comment)

Ultimately, I believed that @OWASP wanted to regain its leadership in Web Application Security as stated within #979 (comment) and #979 (comment) as @OWASP is referenced within PCI-DSS and therefore can push changes downstream to PCI-DSS.

At the risk of repetition above I wanted to wait until after the release of PCI-DSS 4.0 as per #317 (comment) which would have at delayed the timeline to 2024 or later

To address @jmanico #979 (comment)

@jmanico is aware that the ban was unprovoked, unjust and has caused considerable professional harm to me as he stated in his own words within https://lists.owasp.org/pipermail/owasp-leaders/2012-July/007468

Neither was my intent to be perceived as discrediting @jmanico, rather my reference to OpenJDK security-dev mailing list was to convey @OWASP wanted to regain its leadership in Web Application Security in pushing changes downstream to PCI-DSS (again repeated above).

I have decided to close this Issue #979 and will focus on making changes to CONTRIBUTING.md reflecting the above positive outcome.

@cmlh cmlh closed this as completed May 5, 2021
@cmlh
Copy link
Contributor Author

cmlh commented May 5, 2021

To quote @jmanico PR #983 (comment)

This is a major change. Please fully complete the discussion and get at least some ASVS leaders to agree to this before submitting a PR. And Christian, I think this is a very valid issue to discuss. cc @tghosth @danielcuthbert @vanderaj

#980 (comment) is when this alternative was presented.

Can @tghosth and/or @danielcuthbert and/or @vanderaj merge #983 as a minor change and close this [#979] issue and label 2024 too please?

@cmlh cmlh reopened this May 5, 2021
@elarlang
Copy link
Collaborator

elarlang commented May 5, 2021

I have not checked the timeline (and it does not matter), maybe this CONTRIBUTING.md did not exists yet when Jim was asking PR from you. Back then Jim was full of enthusiasm and wanted to get old issues to move. "Discussion in issue first, PR later" was not that clearly in place, please take this context in account. Anyway, it is new CONTRIBUTING.md and in development, give it a bit of time first. My comment was with goal to point this change out.

Feedback on this issue - technical issue should have focus on discussion over technical parameters and arguments, it's nice to have them here. Mailinglist history, who-when-what-was-said can be important and emotional for you, but from this issue point of view it feels a bit offtopic. It's just my opinion, I don't want to have any discussion over that or to "fight for The Only Truth" here.

@jmanico
Copy link
Member

jmanico commented May 6, 2021

Hey @cmlh what do you think of a ASVS Level 2 requirement that continues to endorse TLS 1.2-1.3 and a ASVS Level 3 requirement that states to only support TLS 1.3? I think these requirements would be in conflict if we expect folks to do all requirements but would be fine if we think of the different ASVS tiers as more of risk levels. Could this work? cc @ThunderSon

@ThunderSon
Copy link
Contributor

There is no way that only TLS1.3 will be running on a web server. Impossible. Of course, this is from an implementation point of view, and not a theoretical side (which we really shouldn't care about here). Lol, card processors are still on 3DES and AES-CBC. What if you have an IoT system that doesn't properly support TLS1.3? Or any device that isn't a PC with an up to date browser?
The linked requirement mentions to prefer 1.3; that's it, that's more than enough at the current state we're in (even a year from now).

Future proof? What if tomorrow AES-GCM is found to be broken? Let's keep the ASVS as realistic as possible.
OWASP is the leader for a reason in the appsec world -- it cares about its audience.

@cmlh
Copy link
Contributor Author

cmlh commented May 6, 2021

To address @jmanico #979 (comment) and @ThunderSon #979 (comment)

ASVS has to determine if its guiding principal is either the latest security OR compatibility with older technologies.

OWASP is the leader for a reason in the appsec world -- it cares about its audience.

If the above is true then ASVS guiding principal is compatibility with older technologies so therefore ASVS Level 1-3 should be uniform for TLS v1.2 but at the very least we should give notice to the impending change scheduled for 2024 within the next minor release(s) of ASVS.

@cmlh
Copy link
Contributor Author

cmlh commented May 10, 2021

Other Sources

NSA
NSA recommends that only TLS 1.2 or TLS 1.3 be used

NIST
It requires that TLS 1.2 configured with FIPS-based cipher suites be supported by all government TLS servers and clients and requires support for TLS 1.3 by January 1, 2024

AWS
Beginning March 31, 2021, if your client application cannot support TLS 1.2, it will result in connection failures.

@tghosth
Copy link
Collaborator

tghosth commented May 12, 2021

Given that 9.1.3 already mandates TLS 1.2 and 1.3, I am not sure I am clear on what is being added on 9.1.5.

Also, I'm not sure that server side support is as important as client side support which I think is the biggest problem in deprecating versions of TLS. I agree that we should be whatever possible mandating the best possible security controls but we also have to be realistic because the more controls we include which are impossible from a business perspective, the weaker the standard gets.

Perhaps the best option would be a note within 9.1.3 that companies should expect and be ready for deprecations of TLS versions?

Also, as a general note (which I am not sure is documented anywhere), we don't like to include links within requirements (the links to the proactive controls are an exception which we are planning to remove in the next major release).

@danielcuthbert
Copy link
Collaborator

"Perhaps the best option would be a note within 9.1.3 that companies should expect and be ready for deprecations of TLS versions?"

I like this approach, I think it gives enough time for those needing to plan and prepare. Yes, TLS 1.2 will become the bare minimum and rightly so, but we are also adult enough to know that many legacy apps wont and can't support it. I'd rather we highlight the issue, get people ready and help that way

@vanderaj
Copy link
Member

@cmlh Once a compromise or decision is reached for a future version of ASVS, please don't re-open this or similar tickets if you didn't get the outcome that you obviously desire. We can't keep re-litigating the same issue over and over again.

I trust my co-leads to come up with a path forward that encourages or demands better of our industry. The ASVS was one of the first standards to require the use of stronger authentication mechanisms back when that was controversial, and for more than 8 years we prohibited the use of insecure questions and answers, so we are early leaders and courageous when we need to be, but it needs to be a real likelihood that an impact is always going to happen in many different settings, rather than just a local shared wifi or hub based network. If we force people to take action on a really unlikely outcome, that's an opportunity cost to take an edge case action instead of another that might be far more impactful. This is the issue I have with PCI DSS - it has like 300 things you must do, and we still have breaches. It should be ordered with things you must do, that really do make a difference, and then the remaining 292 items are like "yeah, try this".

In practice, browsers and so on will choose the best available cipher suite, and in the absence of downgrade exploits that affect any connection, and not just local ones, means the likelihood of an attacker forcing a victim to use a weaker or exploitable ciphersuite is minimal in most settings. If there is a forced downgrade attack that is realistic, applies to most corporate or shared public networks, then we should be stronger in our recommendations to require the latest TLS. ASVS 5.0 is likely to last longer than 2024, so I'm supportive of noting that TLS 1.2 will be deprecated by many common browsers and platforms prior to 2024 and plans should be in place to migrate to the latest TLS or remove older cipher suites by then.

We need to be cognizant that if we say "The latest TLS cipher suites and leading algorithm choices should be the first available server offered choices, and as strongly configured as possible." and "If older TLS cipher suites, such as TLS 1.2, are required due to compatibility reasons with business-critical integrations, these older cipher suites must be offered last to prevent most users from using these weaker or potentially exploitable cipher suites." and "Regular cipher testing should be conducted to ensure that all available algorithms and cipher suites are configured strongly, ordered in the strongest to the weakest alternative, deprecated cipher suites or algorithms are removed, and the remaining choices do not create exploitable, breach confidential communications, or break the integrity of a secure communications channel."

@tomato42
Copy link

@vanderaj in general I agree, but blank requirement for server-side cipher suite ordering can be detrimental, clients running with pure software crypto stacks will prefer use of Chacha20 ciphers, while ones with hardware acceleration will likely want to use AES (both because of speed and battery usage). So I'd suggest a bit softer language on this requirement.

@cmlh
Copy link
Contributor Author

cmlh commented May 13, 2021

To address @tghosth #979 (comment)

Given that 9.1.3 already mandates TLS 1.2 and 1.3, I am not sure I am clear on what is being added on 9.1.5.

Pull Request #983 specifies the addition of 9.1.5 mandates the server side control exclude TLS 1.2 after TLS 1.3 support is released by the specific server side web technology.

Also, I'm not sure that server side support is as important as client side support which I think is the biggest problem in deprecating versions of TLS. I agree that we should be whatever possible mandating the best possible security controls but we also have to be realistic because the more controls we include which are impossible from a business perspective, the weaker the standard gets.

I am willing to add a check box to a changes/Issue Template that I have discussed with @elarlang to disclose if an ASVS change impacts client side support of deprecating web technologies, such as for TLS 1.2, etc.

However, we would also need consensus that ASVS now extends to the client side too?

Perhaps the best option would be a note within 9.1.3 that companies should expect and be ready for deprecations of TLS versions?

These are most recent mandates tracked within #979 (comment)

  • TLS 1.2 from March 31, 2021
  • TLS 1.3 from January 1, 2024

I support inserting a note to document the above as proposed by @tghosth

Also, as a general note (which I am not sure is documented anywhere), we don't like to include links within requirements (the links to the proactive controls are an exception which we are planning to remove in the next major release).

No problem, I recommended this be explored with the OWASP Testing Guide within #992 (comment) I just need to anchor it somewhere before Issue #992 is transferred.

I'll also document this within the amended Issues and Pull Request Template(s) that I am working on.

@elarlang
Copy link
Collaborator

Some offtopic comments (from opened issue point of view).

I am willing to add a check box to a changes/Issue Template that I have discussed with @elarlang to disclose if an ASVS change impacts client side support of deprecating web technologies, such as for TLS 1.2, etc.

I'll also document this within the amended Issues and Pull Request Template(s) that I am working on.

Translation: "I have discussed" means here some comments in this issue (#979 (comment), #979 (comment)).

The smartest way at the moment in my opinion is to wait first draft of "development process" to CONTRIBUTING.md and then make changes and proposals to them. Anyhow, change-impact checkbox seems over.engineering to me and here I smell some trouble - you put a lot of time/effort to create some proposal/PR and then you are not happy when it's not agreed.

On the positive side (from my point of view) - current situation shows to leaders, why clear process description is really "must have". :)

@cmlh
Copy link
Contributor Author

cmlh commented May 15, 2021

Additional examples to insert into #979 (comment)

RFC 8996
"...TLS 1.0..." and "...TLS 1.1 MUST NOT be used..."

SANS
"TLS 1.3 is now supported by about 1 in every 5 HTTPS servers" (as of 31 Dec 2020).

NCSC NL
"... downgrade the security level of TLS 1.2 from Good to Sufficient. TLS 1.3, a considerable revision of TLS based on modern insights, remains Good." (as of 19 January 2021)

Mozillia
"Modern: Modern clients that support TLS 1.3, with no need for backwards compatibility"

@cmlh
Copy link
Contributor Author

cmlh commented May 16, 2021

To quote @tomato42 #979 (comment)

@vanderaj in general I agree, but blank requirement for server-side cipher suite ordering can be detrimental, clients running with pure software crypto stacks will prefer use of Chacha20 ciphers, while ones with hardware acceleration will likely want to use AES (both because of speed and battery usage). So I'd suggest a bit softer language on this requirement.

To quote @markehack #979 (comment)

What is a good proposal is to remove all CBC ciphers. Removing SHA1 HMACs to align with TLS1.3 is also fine. The only downside is performance since AES256-GCM only defined SHA1 and SHA384 ( not clear why SHA256 was never defined) and most hardware only accelerates SHA1 or SHA256.

It wasn't my intention to create an ASVS Requirement[s] for the Server-Side Cipher Suite Order with this Issue #979 but it may be worth discussing in a another [new] Issue?

I'll can extract the Server Side Configuration from those already listed within #979 (comment) and #979 (comment) above and any new references I add in the future below such as:

I am also not sure this is the reason for SHA384 being voted on for AES256-GCM but it may have to do with the increased computational effort was out-weighted by the slight increase to confidentiality but I would need to research this further (just noting this so I don't let it fall through).

Do you also want another separate Issue for "Hardware Acceleration" or is a Markdown Task List reasonable workaround to capture this?

@sanmai-NL
Copy link

sanmai-NL commented May 16, 2021

ASVS 4.0.2:

The ASVS must always look far into the future so that we provide sound advice for our primary audience - developers.

+1 for TLS 1.3. Legacy concerns are not for developers, but for architects and managers.

@cmlh
Copy link
Contributor Author

cmlh commented May 25, 2021

Another backwards compatibility issue explored on the OpenJDK Security-Dev Mailing List i.e. "TLS v1.3 extensions in TLS v1.2 handshake"

@cmlh
Copy link
Contributor Author

cmlh commented Sep 17, 2021

@jmanico
Copy link
Member

jmanico commented Oct 12, 2021

I do not want to keep issues lingering for years. We're not going to change this for 5.0 so I'm closing it for now and we can re-open as we get closer to 2024 and beyond.

@jmanico jmanico closed this as completed Oct 12, 2021
@cmlh
Copy link
Contributor Author

cmlh commented Apr 1, 2022

Just marking a placeholder for the release of PCI-DSS 4.0

@jmanico
Copy link
Member

jmanico commented Oct 5, 2022 via email

@cmlh
Copy link
Contributor Author

cmlh commented Dec 8, 2022

@jmanico wrote:

Alright Christian. You’re starting to convince me that this may be prudent. Can we word this requirement so it’s a more timeless requirement like “use the most recent version of TLS” or similar?

We can make the decision before the publication of the next major release with consideration of https://www.nccoe.nist.gov/addressing-visibility-challenges-tls-13 and the number of implementations observed by https://www.f5.com/labs/articles/threat-intelligence/the-2021-tls-telemetry-report and others.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

10 participants