Deprecate MD5 passwords.
authorNathan Bossart <nathan@postgresql.org>
Mon, 2 Dec 2024 19:30:07 +0000 (13:30 -0600)
committerNathan Bossart <nathan@postgresql.org>
Mon, 2 Dec 2024 19:30:07 +0000 (13:30 -0600)
commitdb6a4a985bc09d260d5c29848e3c97f080646a53
tree5d57a50559a2a1ae40896a2007a9025a12339f22
parent97173536ed4b1c29dce0dc4119db136e142f60a2
Deprecate MD5 passwords.

MD5 has been considered to be unsuitable for use as a cryptographic
hash algorithm for some time.  Furthermore, MD5 password hashes in
PostgreSQL are vulnerable to pass-the-hash attacks, i.e., knowing
the username and hashed password is sufficient to authenticate.
The SCRAM-SHA-256 method added in v10 is not subject to these
problems and is considered to be superior to MD5.

This commit marks MD5 password support in PostgreSQL as deprecated
and to be removed in a future release.  The documentation now
contains several deprecation notices, and CREATE ROLE and ALTER
ROLE now emit deprecation warnings when setting MD5 passwords.  The
warnings can be disabled by setting the md5_password_warnings
parameter to "off".

Reviewed-by: Greg Sabino Mullane, Jim Nasby
Discussion: https://postgr.es/m/ZwbfpJJol7lDWajL%40nathan
16 files changed:
contrib/passwordcheck/expected/passwordcheck.out
contrib/passwordcheck/expected/passwordcheck_1.out
contrib/passwordcheck/sql/passwordcheck.sql
doc/src/sgml/catalogs.sgml
doc/src/sgml/client-auth.sgml
doc/src/sgml/config.sgml
doc/src/sgml/libpq.sgml
doc/src/sgml/protocol.sgml
doc/src/sgml/ref/create_role.sgml
doc/src/sgml/runtime.sgml
src/backend/libpq/crypt.c
src/backend/utils/misc/guc_tables.c
src/backend/utils/misc/postgresql.conf.sample
src/include/libpq/crypt.h
src/test/regress/expected/password.out
src/test/regress/expected/password_1.out