弱いパスワードハッシュ

C#での弱いパスワードハッシュ

説明

SHA-256のような高速なハッシュでパスワードを保存したり、パスワードハッシャーの反復回数を低く設定したりすると、漏えいしたハッシュに対して攻撃者が高速にオフラインで推測を試せます。

想定される影響

  • データベースの漏えいからパスワードの復元、アカウントの乗っ取り、権限昇格につながる可能性があります。

対処方法

ASP.NET CoreのPasswordHasher、bcrypt、Argon2、scrypt、または十分な反復回数とパスワードごとのソルトを使うPBKDF2を選んでください。

例

変更前

csharp
return SHA256.HashData(Encoding.UTF8.GetBytes(password));

変更後

csharp
var hasher = new PasswordHasher<User>();
return hasher.HashPassword(user, password);

解説:

  • 変更前: 高速なハッシュや低い計算コストでは、攻撃者が効率よくオフラインで推測できます。
  • 変更後: ASP.NET Core PasswordHasher、bcrypt、Argon2、scrypt、PBKDF2などを、適切な計算コストとパスワードごとのソルトで使用してください。

参考資料