Re: SCRAM with channel binding downgrade attack
Michael Paquier <michael@paquier.xyz>
On Thu, May 17, 2018 at 10:05:25AM -0400, Bruce Momjian wrote: > Agreed. The problem was so glaring that I assumed I was not > understanding it. I have modified this email subject so users will > hopefully read back in this thread to see the details. Okay, let's use this new thread then for the follow-up discussion. For people wondering, this basically refers to the following message from Bruce and Heikki: https://www.postgresql.org/message-id/d01b31f5-0b3e-b69a-1504-a79649d81f46@iki.fi There are actually two problems which have been touched in this discussion: 1) A client using libpq may be forced by a rogue server to not use channel binding even if it is willing to do so. For example, a v11 libpq with a v10 server enters in this category. An idea here would be to provide an extra connection parameter which allows the client to reject an access to a server if channel binding is not supported. One idea is something I mentioned here: https://www.postgresql.org/message-id/20180516115923.GB14835%40paquier.xyz So we could have channel_binding_mode, which has a 'prefer' mode, which is the actual default we have in the tree, as well as a 'require' mode, which allows the client to fail connection if a server does not publish the SCRAM-PLUS mechanism after the initial authentication message exchange. 2) Allow clients to connect to servers only if they use channel binding. This goes with a server-side hba configuration, like scram-sha-256-plus to not allow access to clients in a SCRAM authentication if they don't have channel binding support. From a security point of view, 1) is important for libpq, but I am not much enthusiast about 2) as a whole. The backend has proper support for channel binding, hence other drivers speaking the protocol could have their own restriction mechanisms. I actually touched a bit what's being discussed here as part of the channel binding thread: https://www.postgresql.org/message-id/CAB7nPqTRW9qbPSYpWtKJD9A%2BQBd6dS0ePkgrrjbkkG0C10zsBA%40mail.gmail.com However per what I read this does not cover the need to allow the client to allow that channel binding *has* to be used depending on its requirements. I'd like to mention as well that I touched the topic during the unconference of PGConf Asia last December: https://wiki.postgresql.org/wiki/PGConf.ASIA2017_Developer_Unconference#SCRAM_improvements Any ideas raised there did not get much enthusiam from the participants. Magnus and Bruce have participated in the conference, perhaps you were not at my unconf session.. -- Michael
Commits
-
doc: update PG 11 release notes
- 6eb612fea9d0 12.0 cited
-
Fix misspelled pg_trgm contrib name in PostgreSQL 11 release notes
- 3abc5a67edfd 12.0 landed
-
Doc: clarify release note text about v11's new window function features.
- 510421c45fb4 11.0 landed
- 11a3aeeb5e17 12.0 landed
-
Improve wording of release notes item
- bee6a683a5c3 11.0 landed
-
Fix typos in release notes
- fb6accd27b99 11.0 landed
-
Doc: preliminary list of PG11 major features.
- 4aad161c9a6d 11.0 landed
-
Make numeric power() handle NaNs according to the modern POSIX spec.
- d1fc750b5199 11.0 landed
-
Various improvements of skipping index scan during vacuum technics
- 8e12f4a250d2 11.0 cited
-
Revert back-branch changes in power()'s behavior for NaN inputs.
- f74d83b3034f 10.4 cited
-
Avoid wrong results for power() with NaN input on more platforms.
- 6bdf1303b34b 11.0 cited
-
Avoid wrong results for power() with NaN input on some platforms.
- 61b200e2f582 11.0 cited
-
Skip full index scan during cleanup of B-tree indexes when possible
- 857f9c36cda5 11.0 cited
-
Rewrite the code that applies scan/join targets to paths.
- 11cf92f6e2e1 11.0 cited
-
Postpone generate_gather_paths for topmost scan/join rel.
- 3f90ec8597c3 11.0 cited
-
Add casts from jsonb
- c0cbe00fee6d 11.0 cited
-
Make plpgsql use its DTYPE_REC code paths for composite-type variables.
- 4b93f57999a2 11.0 cited
-
Don't allow VACUUM VERBOSE ANALYZE VERBOSE.
- 921059bd66c7 11.0 cited
-
Pass InitPlan values to workers via Gather (Merge).
- e89a71fb449a 11.0 cited
-
Account for the effect of lossy pages when costing bitmap scans.
- 5edc63bda68a 11.0 cited
-
Allow no-op GiST support functions to be omitted.
- d3a4f89d8a3e 11.0 cited
-
Rearm statement_timeout after each executed query.
- f8e5f156b30e 11.0 cited
-
Push limit through subqueries to underlying sort, where possible.
- 1f6d515a67ec 11.0 cited