一、安全告警
2024年11月18日,PostgreSQL全球开发组发布了针对所有受支持的PostgreSQL版本的重要安全更新。支持的版本包括17.1、16.5、15.9、14.14、13.17和12.21。解决了近几个月报告的4个安全漏洞和超过35个错误。其中“CVE-2024-10979”PL/Perl环境变量漏洞较为严重,该漏洞允许非特权数据库用户修改敏感的进程环境变量,从而可能导致任意代码执行。影响版本12至17。
此外,PostgreSQL开发人员将此更新作为PostgreSQL 12的最终版本发布,这标志着对PostgreSQL 12支持的结束。强烈建议在生产环境中运行PostgreSQL 12的用户升级到更新的受支持版本,以确保持续的安全性和错误修复,以减轻潜在的安全风险。
针对上述漏洞与更新,基于PostgreSQL国产数据库分支是否存在的同样的漏洞,是否已做处理?不得而知,需要查询各家产品公告并验证。同时,针对开发组对于PostgreSQL 12支持的结束,可能导致低于12的版本的PostgreSQL漏洞无法或很难修补,新特性无法实现。那么,国产品的PostgreSQL分支版本都有哪些呢?我们对各官方发布的公开的最新版本做了测试分析:
二、判别分支版本的方法
1. #select version();
2. #SELECT setting FROM pg_settings WHERE name = 'server_version';
3. $./cat path/to/data/PG_VERSION
注意:不限于上述方法,path/to/data为数据存放的目录,“pg_”可能由于分支魔改原因需要修改
三、判别记录
KingbaseES9
test=# select version();
version
\------------------------------------------------------------------------------------------------------------
KingbaseES V009R001C001B0030 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28), 64-bit
(1 row)
test=# SELECT setting FROM pg_settings WHERE name = 'server_version';
setting
\---------
12.1
(1 row)
HighGo6.0
highgo=# select version();
version
\---------------------------------------------------
HighGo Database 6 Release 6.0.4-64-bit Production
(1 row)
highgo=# SELECT setting FROM pg_settings WHERE name = 'server_version';
setting
\---------
12.7
(1 row)
UXDB10.0
uxdb=# select version();
version
\------------------------------------------------------------------------------\
UXsinoDB v10.0 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44), 64-bit
(1 row)
uxdb=# SELECT setting FROM ux_settings WHERE name = 'server_version';
setting
---------
15.1
(1 row)
OpenGauss6
openGauss=# select version();
version
------------------------------------------------------------------------------------------------------------- (openGauss 6.0.0 build aee4abd5) compiled at 2024-09-29 18:38:08 commit 0 last mr on x86_64-unknown-linux-gnu, compiled by g++ (GCC) 10.3.0, 64-bit(1 row)
openGauss=# SELECT setting FROM pg_settings WHERE name = 'server_version';
setting
---------
9.2.4
(1 row)
PolarDB15
postgres=# SELECT VERSION();
version
-------------------------------------------------------------------------------------------------------------
PostgreSQL 15.8 on x86_64-pc-linux-gnu, compiled by gcc (Debian 4.9.2-10) 4.9.2, 64-bit
(1 row)
postgres=# SELECT setting FROM pg_settings WHERE name = 'server_version';
setting
---------
15.8
(1 row)
AntDB v7.2.24
antdb=# select version();
version
-----------------------------------------------------------------------------
PostgreSQL 13.3 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 9.5.0, 64-bit
(1 row)
antdb=# SELECT setting FROM pg_settings WHERE name = 'server_version';
setting
---------
13.3
(1 row)
EDB-AS16
edb=# select version();
version
------------------------------------------------------------------------------------------
PostgreSQL 16.3 (EnterpriseDB Advanced Server 16.3.0) on x86_64-pc-linux-gnu, compiled by
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44), 64-bit
(1 row)
edb=# SELECT setting FROM pg_settings WHERE name = 'server_version';
setting
---------
16.3.0
(1 row)
四、结论分析
KingbaseES9内核版本为pg 12.1
HighGo6.0内核版本为pg 12.7
UXDB10.0内核版本为pg15.1
OpenGauss6内核版本为pg 9.2.4
PolarDB15内核版本为pg 15.8
AntDB v7.2.24内核版本为pg 13.3
EDB-AS16内核版本为pg 16.3
建议低于12版本数据库应将数据库内核升级到postgresql12以上,高于12版本的数据库宜跟踪CVE、CWE及PostgreSQL安全公告,做好漏洞缓解、修复、升级、验证、以及公告等工作(个别已做较大改动的,且已提供了相关漏洞处置方案的分支产品除外),以避免安全事件发生。
五、参考
业内通告:https://cybersecuritynews.com/postgresql-security-update-patch-for-multiple-vulnerabilities/
PostgreSQL公告:https://www.postgresql.org/support/security/
CVE公告:https://www.cvedetails.com/version-list/336/575/1/Postgresql-Postgresql.html




