Skip to content

Commit 81de00f

Browse files
authored
Merge pull request #25 from oauth-wg/ys-14b
More substantial edits by Dan Moore
2 parents dc7e59b + 8879902 commit 81de00f

File tree

1 file changed

+26
-22
lines changed

1 file changed

+26
-22
lines changed

draft-ietf-oauth-rfc8725bis.md

Lines changed: 26 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -58,15 +58,13 @@ venue:
5858

5959

6060
normative:
61-
RFC2119:
6261
RFC6979:
6362
RFC7515:
6463
RFC7516:
6564
RFC7518:
6665
RFC7519:
6766
RFC8017:
6867
RFC8037:
69-
RFC8174:
7068
RFC8259:
7169
nist-sp-800-56a-r3: DOI.10.6028/NIST.SP.800-56Ar3
7270
informative:
@@ -91,6 +89,12 @@ informative:
9189
refcontent: National Vulnerability Database
9290
target: https://nvd.nist.gov/vuln/detail/CVE-2023-51774
9391
title: CVE-2023-51774 Detail
92+
JWT-Cracker:
93+
author:
94+
- ins: B. Rius
95+
name: Brendan Rius
96+
title: JWT Cracker
97+
target: https://github.com/brendan-rius/c-jwt-cracker
9498
Kelsey: DOI.10.1007/3-540-45661-9_21
9599
Langkemper:
96100
author:
@@ -131,8 +135,8 @@ informative:
131135
- ins: A. Sanso
132136
name: Antonio Sanso
133137
date: March 2017
134-
target: https://blogs.adobe.com/security/2017/03/critical-vulnerability-uncovered-in-json-encryption.html
135-
title: Critical Vulnerability Uncovered in JSON Encryption
138+
target: https://auth0.com/blog/critical-vulnerability-in-json-web-encryption/
139+
title: Critical Vulnerability in JSON Web Encryption
136140
Valenta:
137141
author:
138142
- ins: L. Valenta
@@ -280,7 +284,7 @@ For mitigations, see {{algorithm-verification}} and {{appropriate-algorithms}}.
280284
"HS256", to sign tokens but supply a weak symmetric key with
281285
insufficient entropy (such as a human-memorable password). Such keys
282286
are vulnerable to offline brute-force or dictionary attacks once an
283-
attacker gets hold of such a token {{Langkemper}}.
287+
attacker gets hold of such a token {{Langkemper}}{{JWT-Cracker}}.
284288

285289
For mitigations, see {{key-entropy}}.
286290

@@ -610,18 +614,13 @@ If the issuer, subject, or the pair are invalid, the application
610614

611615

612616
If the same issuer can issue JWTs that are intended for use by more
613-
than one relying party or application,
617+
than one relying party or application, or may do so in the future,
614618
the JWT MUST contain an "aud" (audience) claim that can be used
615619
to determine whether the JWT
616620
is being used by an intended party or was substituted by an attacker.
617621

618-
In such cases, the relying party or application MUST
619-
validate the audience value,
620-
and if the audience value is not present or not associated with the recipient,
621-
it MUST reject the JWT.
622-
623-
624-
622+
In such cases, the relying party or application MUST validate the audience value, and if no audience
623+
value is present or none of the values are associated with the recipient, it MUST reject the JWT.
625624

626625
## Do Not Trust Received Claims {#do-not-trust-claims}
627626

@@ -652,13 +651,13 @@ For instance, the {{RFC8417}} specification uses
652651
the "application/secevent+jwt" media type
653652
to perform explicit typing of Security Event Tokens (SETs).
654653

655-
Per the definition of "typ" in Section 4.1.9 of {{RFC7515}},
656-
it is RECOMMENDED that the "application/" prefix be omitted from the "typ" value.
654+
Per the definition of "typ" in Section 4.1.9 of [RFC7515], it is RECOMMENDED that the "application/" prefix
655+
be omitted from the "typ" Header Parameter value, compared to the associated media type.
657656
Therefore, for example, the "typ" value used to explicitly include a type for a SET SHOULD be "secevent+jwt".
658-
When explicit typing is employed for a JWT, it is RECOMMENDED
659-
that a media type name of the format
660-
"application/example+jwt" be used, where "example" is replaced by the
661-
identifier for the specific kind of JWT.
657+
658+
When explicit typing is employed for a JWT, it is RECOMMENDED that a media type name of the
659+
format "application/example+jwt" be used, where "example" is replaced by the identifier for the
660+
specific kind of JWT. Therefore, for example, the media type name for a SET SHOULD be "application/secevent+jwt".
662661

663662
When applying explicit typing to a Nested JWT, the "typ" Header
664663
Parameter containing the explicit type value MUST be present in the inner JWT of the Nested JWT (the JWT
@@ -684,6 +683,7 @@ If more than one kind of JWT can be issued by the same issuer,
684683
the validation rules for those JWTs MUST be written such that
685684
they are mutually exclusive,
686685
rejecting JWTs of the wrong kind.
686+
687687
To prevent substitution of JWTs from one context into another,
688688
application developers may employ a number of strategies:
689689

@@ -727,12 +727,16 @@ the number of hash iterations that can be performed
727727
when validating encrypted content using PBES2 encryption algorithms,
728728
so as to prevent attackers from imposing
729729
an unreasonable computational burden on recipients.
730-
{{OWASP-Password-Storage}} states that an iteration count of 600,000 is required when using HMAC-SHA-256 to achieve FIPS-140 compliance.
731-
Thus, rejecting inputs with a `p2c` (PBES2 Count) value over 1,200,000 (double that) is RECOMMENDED.
730+
{{OWASP-Password-Storage}} states a specific iteration count (600,000 at time of publishing)
731+
is required when using HMAC-SHA-256 to achieve FIPS-140 compliance. Rejecting inputs with a `p2c`
732+
(PBES2 Count) value larger than double the recommended OWASP value is RECOMMENDED.
732733

733734
## Check JWT Format Type {#token-format}
734735

735-
Implementations MUST confirm the JWT is in a legal format while parsing it. Legal JWTs contain only the ASCII characters for letters, numbers, dash, underscore, and period. Content with any other characters - especially braces and quotation marks - is not a JWT and MUST be rejected.
736+
Implementations MUST confirm the JWT is in a legal format while parsing it. Legal JWTs,
737+
being dot-concatenated base64url strings, contain only the ASCII characters for letters, numbers, dash,
738+
underscore, and period. Content with any other characters - especially braces and quotation
739+
marks - is not a JWT and MUST be rejected.
736740

737741

738742
## Limit JWE Decompression Size {#limit-decompression}

0 commit comments

Comments
 (0)