fix(NODE-7107): Use of password hash with insufficient computational effort #4619
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
fix the problem, we should replace the use of MD5 in the
passwordDigest
function with a more secure password hashing scheme, such as PBKDF2. PBKDF2 is available in Node'scrypto
module and is suitable for password hashing due to its configurable computational cost. The fix involves updating thepasswordDigest
function to usecrypto.pbkdf2Sync
with a reasonable number of iterations (e.g., 100,000), a salt (which can be derived from the username or generated randomly), and a secure hash algorithm (e.g.,sha256
). The output should be encoded in hexadecimal to match the previous format. We will need to add the necessary logic to generate or use a salt, and update the function accordingly. All changes are confined to thesrc/cmap/auth/scram.ts
file, specifically thepasswordDigest
function.Double check the following
npm run check:lint
scripttype(NODE-xxxx)[!]: description
feat(NODE-1234)!: rewriting everything in coffeescript