Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hHvd8-0002oL-U0 for pgsql-bugs@arkaria.postgresql.org; Sat, 20 Apr 2019 19:26:31 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1hHvd5-0002q6-CK for pgsql-bugs@arkaria.postgresql.org; Sat, 20 Apr 2019 19:26:27 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hHvd4-0002oy-QX for pgsql-bugs@lists.postgresql.org; Sat, 20 Apr 2019 19:26:27 +0000 Received: from meldrar.postgresql.org ([2a02:c0:301:0:ffff::31]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hHvd1-00058U-6l for pgsql-bugs@lists.postgresql.org; Sat, 20 Apr 2019 19:26:25 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=postgresql.org; s=20171124; h=Content-Type:MIME-Version:Date:Message-ID:Cc: Subject:From:To:Sender:Reply-To:Content-Transfer-Encoding:Content-ID: Content-Description:In-Reply-To:References; bh=6Fx+r/wfuo2kCXrLTrSIjmkjdwGpyn1E8FjK1uovktE=; b=bpnazxLOBtmFkEjyt9+YO3Fj4C ETudngQ54LDTrpOH9w1PvmWLoFrmXz/hDhdVYWAqstW5xLp4NGpRWLC3QFTI3h23gT/GARfAwwPwA 9jrYvgwveg9j4gop/Zc1UtbIL/I0aV4mIXHBIrjZqZE+2D2YDydDtulMrNEYXI0Tye9ALw/idhw2g owNffpmfRSlkrML99d+t5KcedFpJAHYKLfYbZsPkE+H2vCel5kVt2gRYcCOJ1lI0+P/Ko05pgpMRX BkFImkF9Lx2KiGf3J2BJApnJ5pLsEP7DVhyZUzxKJqxWcJMzyxL99nkkl3BbCr6VrNhDCRzO+DH4w v1opD3Lg==; Received: from pool-96-250-83-19.nycmny.fios.verizon.net ([96.250.83.19] helo=Ph33r-Retina.home) by meldrar.postgresql.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hHvcw-00026B-Mj; Sat, 20 Apr 2019 19:26:21 +0000 To: pgsql-bugs@lists.postgresql.org From: "Jonathan S. Katz" Subject: Possible to store invalid SCRAM-SHA-256 Passwords Openpgp: preference=signencrypt Autocrypt: addr=jkatz@postgresql.org; keydata= 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 FmEC Cc: Stephen Frost Message-ID: <016deb6b-1f0a-8e9f-1833-a8675b170aa9@postgresql.org> Date: Sat, 20 Apr 2019 15:26:15 -0400 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:60.0) Gecko/20100101 Thunderbird/60.6.1 MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="8Ies3QLo1RupTnGeQEGj0mkl289eGzhd9" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --8Ies3QLo1RupTnGeQEGj0mkl289eGzhd9 Content-Type: multipart/mixed; boundary="QRw6omEvVU1Dk65bX87ZVU2GiX7Smjj5k"; protected-headers="v1" From: "Jonathan S. Katz" To: pgsql-bugs@lists.postgresql.org Cc: Stephen Frost Message-ID: <016deb6b-1f0a-8e9f-1833-a8675b170aa9@postgresql.org> Subject: Possible to store invalid SCRAM-SHA-256 Passwords --QRw6omEvVU1Dk65bX87ZVU2GiX7Smjj5k Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: quoted-printable Hi, With some guidance from Stephen, I've discovered some scenarios where one can store invalid SCRAM-SHA-256 passwords. Scenario #1: Directly from CREATE/ALTER ROLE for example on PostgreSQL 11: CREATE ROLE test1 PASSWORD 'SCRAM-SHA-256$1234' LOGIN; In the logs, one sees: 2019-04-20 18:36:07.883 UTC [22251] postgres@postgres LOG: invalid SCRAM verifier for user "test1" 2019-04-20 18:36:07.883 UTC [22251] postgres@postgres STATEMENT: CREATE USER test1 PASSWORD 'SCRAM-SHA-256$1234' LOGIN; pg_authid contains: -[ RECORD 1 ]--+------------------- rolname | test1 rolcanlogin | t rolpassword | SCRAM-SHA-256$1234 and when I try to login with the password "SCRAM-SHA-256$1234" e.g. psql -U test1 postgres psql: FATAL: password authentication failed for user "test1" FATAL: password authentication failed for user "test1" Scenario #2: On an upgrade from PG < 10 =3D> PG >=3D 10 On a PostgreSQL 9.6.12, I created a user as the following: CREATE ROLE test2 WITH UNENCRYPTED PASSWORD 'SCRAM-SHA-256$1234' LOGIN; with pg_authid contents: -[ RECORD 1 ]--+------------------- rolname | test2 rolcanlogin | t rolpassword | SCRAM-SHA-256$1234 And was able to **successfully login.** I installed PostgreSQL 11 and upgrading from 9.6.12 =3D> 11.2 When I attempt to login as test2, I get the following error: psql: FATAL: password authentication failed for user "tester" FATAL: password authentication failed for user "tester" While my hunch is that Scenario #2 is less likely to happen in the wild, Scenario #1 is a real possibility. Examples, a non-libpq passed driver wants to send a hashed password directly to a server and has a mistake in the algorithm, or a program calls "ALTER ROLE" and modifies a password with an invalid SCRAM-SHA-256 hash in it, etc. Jonathan --QRw6omEvVU1Dk65bX87ZVU2GiX7Smjj5k-- --8Ies3QLo1RupTnGeQEGj0mkl289eGzhd9 Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEE+oS2la8r95ogZD/x8QSccp8cZScFAly7clcACgkQ8QSccp8c ZSfLJRAAgqjHM6jV0LNRLomPEKvKzK0A04rQ8ChbSNmsK4WDoM3gKJaUOwxi8aaz wIkWimqyUgo4dOKlUyx/0B6PRPEKgjpXzz0K5BLmUpIX0cVHNzEFfONDxgRZeF55 BjZLKjOJRIS0wszXXtPelxodslU6v2ltKCgXq2+V4538xRRdZOEZE2i35/v/DMGC qc6QPLecnKaVH9FYmfO9OzyOTwIYMrDLJ6Lw/MMe/NkxyQAkkYCiQPscxsl9Wj20 XIAo7nSYQgdom//TUPg4ubwgohhJ1MLxB33mF9RYZH8MhQ/J5No32nD7cJXD1FM+ lDgckZeoOgdpYZFyc8fXEQL+XUA6GqwWQ81W+S2FLcIp0AhgU1oi2+3Oe/0mpndr CHszDNu00Ygwu3Ft8dzNs7cr8eUPE5uFrJhNKtO+WND3aTMhs1BqHg3CAhfux8i/ KfrbFSuUNA/uYswN8yjBoR420phsZYDESdI5msaTnWk0aEeSykrgsGmBawRunnfU u2ii0sCtfzoUk0UrPLj+PqJiQjS0wDJfbGysxhVtkAq+Ouskj/x4qEbTizpj6e0y eo7SCNvxWUHUcxeOm8lTdqJo4DsBu/xjpiGQ+uZcps7rbYjVZd7x1q/aIlOzt/eq Okdo6FD2hboyLt8otILV/fv3OPAhj+jtl+3PI4SNJhVYrcl218w= =8bN4 -----END PGP SIGNATURE----- --8Ies3QLo1RupTnGeQEGj0mkl289eGzhd9--