> For the complete documentation index, see [llms.txt](https://docs.sec1.io/user-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.sec1.io/user-docs/4-sast/3-javascript/usage-of-weak-hashing-library-on-a-password-argon2.md).

# Usage of weak hashing library on a password (Argon2)

## Overview

* **Rule ID**: `javascript_lang_weak_password_hash_argon2`
* **Applicable Languages**: Javascript
* **Weakness ID**: CWE-326

## Description

Selecting a weak hashing algorithm for passwords undermines security. Argon2 offers three variants: Argon2i, Argon2d, and Argon2id. Among these, Argon2id is the most robust and recommended for password hashing due to its balanced resistance to both side-channel and GPU attacks.

## Remediation Guidelines

* **Do not** override the Argon2 type when implementing the Argon2 hashing library. Using Argon2id ensures the highest level of security for password storage.

  ```javascript
  const argon2 = require("argon2");
  const hash = await argon2.hash(req.params.password, { type: argon2.argon2i }) // unsafe

  ```
* **Do rely** on the default Argon2 type - Argon2id as it is the most secure.

  ```javascript
  const argon2 = require("argon2");
  const hash = await argon2.hash(req.params.password);
  ```

## References

* [**Argon2 type options**](https://github.com/ranisalt/node-argon2/wiki/Options#type)
* [**OWASP Password Storage Cheat Sheet**](https://cheatsheetseries.owasp.org/cheatsheets/Password_Storage_Cheat_Sheet.html)
* [**CWE-326: Inadequate Encryption Strength**](https://cwe.mitre.org/data/definitions/326.html)
* [**OWASP Top 10: A02:2021 - Cryptographic Failures**](https://owasp.org/Top10/A02_2021-Cryptographic_Failures/)

## Configuration

To omit this rule during a scan, and to provide you with continuous 24/7 code-level scanning, you can employ our [**SAST TOOL**](https://scopy.sec1.io/login)
