]> granicus.if.org Git - postgresql/commitdiff
Make wal_compression PGC_SUSET rather than PGC_USERSET.
authorFujii Masao <fujii@postgresql.org>
Thu, 9 Jul 2015 13:30:52 +0000 (22:30 +0900)
committerFujii Masao <fujii@postgresql.org>
Thu, 9 Jul 2015 13:31:39 +0000 (22:31 +0900)
When enabling wal_compression, there is a risk to leak data similarly to
the BREACH and CRIME attacks on SSL where the compression ratio of
a full page image gives a hint of what is the existing data of this page.
This vulnerability is quite cumbersome to exploit in practice, but doable.

So this patch makes wal_compression PGC_SUSET in order to prevent
non-superusers from enabling it and exploiting the vulnerability while
DBA thinks the risk very seriously and disables it in postgresql.conf.

Back-patch to 9.5 where wal_compression was introduced.

doc/src/sgml/config.sgml
src/backend/utils/misc/guc.c

index 4b7bd8a86e6436daf65923be26cf108ec3c32ce1..b91d6c75d276e644583915485264b1787fb0c756 100644 (file)
@@ -2303,6 +2303,7 @@ include_dir 'conf.d'
         <xref linkend="guc-full-page-writes"> is on or during a base backup.
         A compressed page image will be decompressed during WAL replay.
         The default value is <literal>off</>.
+        Only superusers can change this setting.
        </para>
 
        <para>
index 0356ecb48219c05cc8b13a97bee9c46b54d15e52..34c23f9560d3275284fa9b78483f9c8068a3d7b5 100644 (file)
@@ -995,7 +995,7 @@ static struct config_bool ConfigureNamesBool[] =
        },
 
        {
-               {"wal_compression", PGC_USERSET, WAL_SETTINGS,
+               {"wal_compression", PGC_SUSET, WAL_SETTINGS,
                        gettext_noop("Compresses full-page writes written in WAL file."),
                        NULL
                },