Make wal_compression PGC_SUSET rather than PGC_USERSET.
authorFujii Masao
Thu, 9 Jul 2015 13:30:52 +0000 (22:30 +0900)
committerFujii Masao
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'
          is on or during a base backup.
         A compressed page image will be decompressed during WAL replay.
         The default value is off.
+        Only superusers can change this setting.
        
 
        
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
        },