-
-
Notifications
You must be signed in to change notification settings - Fork 678
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
Discussion: rules for password format and content #683
Comments
Well, I dig to it more deeply. Password change functionalityCurrent:
Recommendations:
Password format (min length, max length, allowed characters)Current:
Recommendations:
Note: from NIST point of view, requirements for "max length 64", "allow all ascii chars", "allow unicode" and "no composition rules" are with keyword SHOULD. Password contentCurrent:
Problems:
NIST 5.1.1.2:
Recommendations:
Note: from NIST point of view, requirements for "no periodic change" and "allow unicode" are with keyword SHOULD. Userinterface requirementsCurrent:
Recommendations:
Discussion: V2.1.11 "browser password helpers" - does it mean "autocomplete"? Personally I don't think it's best idea, because it's possible to read autofilled credentials from authentication form with XSS on background without any user-interaction at all or with one keypress or click on site needed (depends on browser). If I compare risks or likelyhoods - I guess XSS is widespread enough compared to "with autocomplete users may use stronger password". In NIST, all mentioned "requirements" are with keyword SHOULD. From "Legend" in OWASP ASVS (example https://github.com/OWASP/ASVS/blob/master/4.0/en/0x11-V2-Authentication.md), those requirements must have "mark" o "Recommended, but not required" instead of ✓ "Required". |
Just a few thoughts. First off, wether to split certain requirements is probably a matter of taste, so I'm not weighing in on this. Recommendation 2: Seems already there. 2.1.4 requires unicode characters to be allowed, and unicode is a superset of all ASCII characters. Recommendation 3 and onwards: Together, they seem to add a lot of complexity for a moderate benefit. A breach list (The HIBP one is around 9GB...) will already contain all "popular" passwords, including dictionary words of most languages, their "leet" forms as well as human names, their leet forms and more. The only thing not likely to be in there are context-specific words, but then there is a question on how much complexity you add for this in comparison on to how often they are used. Also, while I think there'll be some pushback against 12 characters minimum, this has probably the greatest benefit of all recommendations. In the end it will happen if standards mandate it - heck, people even got used to the old NIST rules with arbitrary requirements for special characters (and those were worse, UX-wise, than an 12-char password). |
Regardless of the above, I haven't found any rationale for the 12-character password recommendation. Why not the 8-char NIST, or 23? The only thing I found was a "we had to" in a presentation, which didn't actually shed light. Also, some of the concerns above could be addressed by changing the phrasing from "breached" to "vulnerable passwords" in the standard. |
Related issue/question-answer: #730 |
That’s fair, I defer to Andrew van der Stock on this one.
…--
Jim Manico
@manicode
On Apr 12, 2020, at 4:18 PM, Elar Lang ***@***.***> wrote:
Regardless of the above, I haven't found any rationale for the 12-character password recommendation. Why not the 8-char NIST, or 23? The only thing I found was a "we had to" in a presentation, which didn't actually shed light.
Related issue/question-answer: #730
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or unsubscribe.
|
Just reading back over this. There seems to be a lot going on here. I think we should have one issue per suggested change unless you want to create a large PR to help illustrate each change. What do you think @elarlang? |
My clear idea here is to put entire set of password rules to discussion and get some feedback - we can not solve them separately because they are all related. |
Ok so let's revisit in the runup to 4.1 |
I disagree with the idea that recommentation no. 1 is just a matter of style. I do understand that the two halves of 2.1.10 are not independent. Password history requirements arise when system administrators believe it is important to mitigate CWE-262/CWE-263, and notice or anticipate that users will learn to update their password twice when the password history only consists of a single entry. However, in most cases, these are two separate moves. When system administrators stop requiring periodic changes, they may forget to also repeal password history requirements. As #840 suggests, verifying 2.1.10 as a whole requires two different strategies for each half. The first half essentially requires a design review, while the second half could be easily falsified through use of the system. What I've also noticed, is that the cited CWE definition and NIST section only explicitly mention the first half of the requirement:
The cited NIST section contains a similar requirement ("Verifiers SHOULD NOT require memorized secrets to be changed arbitrarily (e.g., periodically)."), and the cited CWE clearly opposes this requirement (more about that in #871). Because the second half is included, at first glance, the references appear to also lend credence/support to the second half:
However, this requirement is not present in the cited NIST section. In fact, I can't find anything about password history requirements anywhere in that NIST publication. This requirement is of course again opposed by the cited CWE definition ("... a user is required to update with a new and different password."), but only vaguely. I can't find any CWE that goes into detail on how to ensure that "new and different" bit. I think splitting the requirement would be a good idea, while only retaining the references for |
V2.1.10b: Verify that there are no password history requirements.
As a side note, I sent a letter to the NIST 800-63 leadership about this
and will get back to you.
- Jim
On 11/8/20 6:04 AM, stiiin wrote:
I disagree with the idea that @elarlang
<https://github.com/elarlang>'s recommentation no. 1 is just a matter
of style.
I do understand that the two halves of 2.1.10 are not independent.
Password history requirements arise when system administrators believe
it is important to mitigate CWE-262/CWE-263, and notice or anticipate
that users will learn to update their password twice when the password
history only consists of a single entry. However, in most cases, these
are two separate moves. When system administrators stop requiring
periodic changes, they may forget to also repeal password history
requirements.
As #840 <#840> suggests, verifying
2.1.10 as a whole requires two different strategies for each half. The
first half essentially requires a design review, while the second half
could be easily falsified through use of the system.
What I've also noticed, is that the cited CWE definition and NIST
section only explicitly mention the first half of the requirement:
V2.1.10a: Verify that there are no periodic credential rotation
requirements.
The cited NIST section
<https://pages.nist.gov/800-63-3/sp800-63b.html#memsecretver> contains
a similar requirement ("Verifiers SHOULD NOT require memorized secrets
to be changed arbitrarily (e.g., periodically)."), and the cited CWE
<https://cwe.mitre.org/data/definitions/263.html> clearly opposes this
requirement (more about that in #871
<#871>).
Because the second half is included, at first glance, the references
appear to also lend credence/support to the second half:
V2.1.10b: Verify that there are no password history requirements.
However, this requirement is not present in the cited NIST section. In
fact, I can't find anything about password history requirements
anywhere in that NIST publication. This requirement is of course again
opposed by the cited CWE definition ("... a user is required to update
with a new and different password."), but only vaguely. I can't find
any CWE that goes into detail on how to ensure that "new and
different" bit.
I think splitting the requirement would be a good idea, while only
retaining the references for the second half.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<#683 (comment)>, or
unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAEBYCP7WZFOVFS7V4I63SDSO26QNANCNFSM4I4OLNWQ>.
--
Jim Manico
Manicode Security
https://www.manicode.com
|
Comment from Jim Fenton, the author of NIST 800-63
"There are two different password history issues. Usually password
history refers to keeping a user from reusing a password they have used
previously. That’s mostly an issue if you’re requiring subscribers to
periodically change their passwords, which 800-63B advises against.
Accordingly, 800-63B doesn’t contain any requirements to maintain a
history of past passwords used by subscribers. However, there is no
prohibition on doing so; this would be considered to be an additional
risk mitigation measure beyond the requirements of the specification.
The other issue you allude to has to do with the contents of blocklists.
Breach data may be used to create a blocklist, but you’re correct there
isn’t any specific guidance on doing so. I would personally advise
against using a very large breach corpus like Have I Been Pwned as the
blocklist, because it is so large that users may be frustrated trying to
come up with something that isn’t in that huge list. The focus is on
trying to avoid the use of very common passwords that might be guessed
in online guessing attacks." - Jim Fenton
On 11/8/20 6:04 AM, stiiin wrote:
I disagree with the idea that @elarlang
<https://github.com/elarlang>'s recommentation no. 1 is just a matter
of style.
I do understand that the two halves of 2.1.10 are not independent.
Password history requirements arise when system administrators believe
it is important to mitigate CWE-262/CWE-263, and notice or anticipate
that users will learn to update their password twice when the password
history only consists of a single entry. However, in most cases, these
are two separate moves. When system administrators stop requiring
periodic changes, they may forget to also repeal password history
requirements.
As #840 <#840> suggests, verifying
2.1.10 as a whole requires two different strategies for each half. The
first half essentially requires a design review, while the second half
could be easily falsified through use of the system.
What I've also noticed, is that the cited CWE definition and NIST
section only explicitly mention the first half of the requirement:
V2.1.10a: Verify that there are no periodic credential rotation
requirements.
The cited NIST section
<https://pages.nist.gov/800-63-3/sp800-63b.html#memsecretver> contains
a similar requirement ("Verifiers SHOULD NOT require memorized secrets
to be changed arbitrarily (e.g., periodically)."), and the cited CWE
<https://cwe.mitre.org/data/definitions/263.html> clearly opposes this
requirement (more about that in #871
<#871>).
Because the second half is included, at first glance, the references
appear to also lend credence/support to the second half:
V2.1.10b: Verify that there are no password history requirements.
However, this requirement is not present in the cited NIST section. In
fact, I can't find anything about password history requirements
anywhere in that NIST publication. This requirement is of course again
opposed by the cited CWE definition ("... a user is required to update
with a new and different password."), but only vaguely. I can't find
any CWE that goes into detail on how to ensure that "new and
different" bit.
I think splitting the requirement would be a good idea, while only
retaining the references for the second half.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<#683 (comment)>, or
unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAEBYCP7WZFOVFS7V4I63SDSO26QNANCNFSM4I4OLNWQ>.
--
Jim Manico
Manicode Security
https://www.manicode.com
|
By rules, how weak can be password
And if someone says weak, then... weak against what?
Weak against brute force
and
By current rules, ASVS v4 accepts password with only numbers and 12 symbols long.
It's about the same strong as capital-letter + lower-case letters + numbers and 7 symbols long.
1028071702528
[A-Za-z0-9]
7
1111111111110
[0-9]
12
2821109907456
[a-z0-9]
8
5429503678976
[a-z]
9
53459728531456
[A-Za-z0-9]
8
I think requirement V2.1.9 needs some modification. Only numbers are not ok. Can not really write this kind of recommendation to pen-test report.
Weak against dictionary attacks
In theory, it should keep passwords okeish against dictionary attacks.
I personally miss one more requirement, with meaning (but not given wording):
User must avoid simple-stupid-predictable-passwords, like:
Using personal data or site name as password is widespread behavior and this kind of weak passwords give more realistic attack vector (online dictionary attacks) compared to offline (how you got hashes!?) brute force or using massive breach data sets.
The text was updated successfully, but these errors were encountered: