安全与漏洞

安全公告

公告 严重级别 发布日期 影响产品版本 修复版本
SQL注入漏洞 该漏洞与PostgreSQL默认配置中所有用户对公共模式都具有CREATE特权有关,当超级用户身份在数据库上运行pg_upgrade或在pg_dump转储、恢复周期期间,攻击者可以使用专门设计的触发器在超级用户权限下执行任意的SQL语句。 CVE-2018-16850 2020-05-06 - MemFireDB 2.1.0
访问控制错误 PostgreSQL中存在访问控制错误漏洞,该漏洞源于BigSQL Windows安装程序没有锁定PostgreSQL二进制安装路径和数据路径的权限。攻击者可利用该漏洞执行任意代码。 CVE-2019-10127 2020-05-06 - MemFireDB 2.1.0
分区路由中的内存泄露 用户可以通过对分区表执行特定的 INSERT 语句来读取服务器内存的任意字节。 CVE-2019-10129 2020-05-06 - MemFireDB 2.1.0
选择性估计器绕过行安全策略 在给定列上具有读取权限的情况下运行SQL查询的用户可能会创建一个泄漏运算符,该运算符可以读取该列中显示的所有数据。如果这恰好包含行安全策略禁止用户查看的行中的值, 则用户可以有效地绕过该策略。 CVE-2019-10130 2020-05-06 - MemFireDB 2.1.0
通过设置密码实现基于堆栈的缓冲区溢出 经过身份验证的用户可以通过将自己的密码更改为特制的值来创建基于堆栈的缓冲区 溢出。除了能够使 PostgreSQL 服务器崩溃之外,还可以进一步利用该漏洞以 PostgreSQL 操作系统帐户执行任意代码。此外,恶意服务器可能会在 SCRAM 身份验证过程中发送专门设计的消息,并导致启用 libpq 的客户端崩溃或以客户端操作系统帐户的身份执行任意代码。 CVE-2019-10164 2020-05-06 - MemFireDB 2.1.0
在pg_temp中创建的domain,攻击者可以利用 SECURITY DEFINER 类型的函数执行 任意sql语句。 给定一个合适的 SECURITY DEFINER 函数,攻击者可以以函数所有者的身份执行任 意 SQL。攻击需要 EXECUTE 函数的权限,该函数本身必须包含参数类型不精确匹配的函数调 用。例如, length('foo'::varchar) 和 length('foo') 是不精确的,而 length('foo'::text) 是精确 的。 CVE-2019-10208 2020-05-06 - MemFireDB 2.1.0
在hashed subplan中进行跨类型比较时,可能会导致内存数据暴露。 在某些情况下,当执行涉及子查询的查询时,内部处理可能会导致散列子查询 (hashed subplan)中的内存泄漏。具体来说,当进行跨数据类型(cross-type)的比较操作时,可能会泄露一些敏感信息或内存数据。这个漏洞允许攻击者访问敏感信息或数据库中的内存数据。 CVE-2019-10209 2020-05-06 - MemFireDB 2.1.0
ALTER ... DEPENDS ON EXTENSION 缺少授权检查 ALTER ... DEPENDS ON EXTENSION 子命令不执行授权检查,这可能允许未经授权的用户在某些情况下删除任何函数、过程、材化视图、索引或触发器。如果管理员已安装了一个扩展,未经授权的用户可以执行 CREATE 操作,或者扩展所有者可预测地执行 DROP EXTENSION,或者可以说服其执行 DROP EXTENSION,那么这种攻击就有可能发生 CVE-2020-1720 2020-05-06 - MemFireDB 2.1.0
逻辑复制中的不受控制的搜索路径元素 PostgreSQL 的搜索路径(search_path)设置确定了用于查找表、函数、运算符等的模式。CVE-2018-1058 修复程序导致大多数由 PostgreSQL 提供的客户端应用程序对搜索路径进行了清理,但逻辑复制仍然保持搜索路径不变。复制发布者或订阅者数据库的用户(通常是超级用户)可以在公共模式中创建对象,并将它们用于执行在运行复制的身份下执行的任意 SQL 函数。 CVE-2020-14349 2020-05-06 - MemFireDB 2.1.0
CREATE EXTENSION 中的不受控制的搜索路径元素 当超级用户运行特定的 CREATE EXTENSION 语句时,用户可能能够以该超级用户的身份执行任意 SQL 函数。攻击者必须具备在新扩展模式或先决扩展的模式中创建对象的权限。并非所有扩展都存在此漏洞。 CVE-2020-14350 2020-05-06 - MemFireDB 2.1.0
重新连接可能会降级连接安全设置 许多由 PostgreSQL 提供的客户端应用程序具有选项,可以创建额外的数据库连接。 其中一些应用程序仅重用基本的连接参数(例如主机、用户、端口),而删除其他参数。如果这导致删除了一个安全相关的参数(例如通道绑定、sslmode、requirepeer、gssencmode),攻击者就有机会执行中间人攻击或观察明文传输。受影响的应用程序包括 clusterdb、pg_dump、 pg_restore、psql、reindexdb 和 vacuumdb。只有在使用包含安全相关参数的连接字符串调用受影响的客户端应用程序时,才会出现此漏洞。 CVE-2020-25694 2020-05-06 - MemFireDB 2.1.0
多个功能逃逸“安全受限操作” 具有在至少一个模式中创建非临时对象权限的攻击者可以以超级用户的身份执行任意SQL 函数 CVE-2020-25695 2020-05-06 - MemFireDB 2.1.0
psql的 \gset 命令允许覆盖特殊处理的变量 \gset 元命令是psql的一个功能,它根据查询结果设置psql变量,但它无法区分控制psql行为的变量。如果在交互式psql会话中使用 \gset 查询受损的服务器,攻击者可以以运行psql的操作系统帐户的身份执行任意代码。在未修复的psql中,使用\gset并指定一个未被特殊处理的变量前缀,例如任何小写字符串,可以防止此攻击。 CVE-2020-25696 2021-07-14 MemFireDB 2.1.0 、 MemFireDB 2.4.00 MemFireDB 2.8.34
某些查询中存在内存泄露问题 一种特定查询可以读取服务器内存中的任意字节。在默认配置下,任何已认证的数据库用户都可以随意执行此攻击。该攻击不需要创建对象的权限 CVE-2021-3677 2021-07-14 MemFireDB 2.1.0 、 MemFireDB 2.4.00 MemFireDB 2.8.34
服务器处理来自中间人的未加密字节 当服务器配置为使用有要求 trust 的身份验证 clientcert 或使用 cert 身份验证时,尽 管使用了 SSL 证书验证和加密,中间人攻击者仍然可以在首次建立连接时注入任意 SQL 查询。 CVE-2021-23214 2021-07-14 MemFireDB 2.1.0 、 MemFireDB 2.4.00 MemFireDB 2.8.34
libpq处理来自中间人的未加密字节 即使使用了SSL证书验证和加密,中间人攻击者仍然可以在客户端的最初几个查询中注 入虚假的响应。如果满足更多先决条件,攻击者可以窃取客户端在会话初期可能传输的密码或其 他机密数据。攻击者必须有一种方法来欺骗客户端预期的服务器,使得攻击者可访问机密数据。 CVE-2021-23222 2021-07-14 MemFireDB 2.1.0 、 MemFireDB 2.4.00 MemFireDB 2.8.34
数组下标计算中的整数溢出导致缓冲区溢出 在修改特定SQL数组值时,缺少边界检查使得已认证的数据库用户可以向服务器内存的大范围写入任意字节 CVE-2021-32027 2021-07-14 MemFireDB 2.1.0 、 MemFireDB 2.4.00 MemFireDB 2.8.34
在INSERT ... ON CONFLICT ... DO UPDATE中存在内存泄露问题 在一个特制的表上使用INSERT ... ON CONFLICT ... DO UPDATE命令,攻击者可以读取服务器内存中的任意字节。在默认配置下,任何已认证的数据库用户都可以创建先决条件对象,并随意执行此攻击。 CVE-2021-32028 2021-07-14 MemFireDB 2.1.0 、 MemFireDB 2.4.00 MemFireDB 2.8.34
分区表 UPDATE ... RETURNING 中的内存泄露问题 在一个特制的分区表上使用UPDATE ... RETURNING命令,攻击者可以读取服务器内存 中的任意字节。在默认配置下,任何已认证的数据库用户都可以创建先决条件对象,并随意执行此攻击 CVE-2021-32029 2021-07-14 MemFireDB 2.1.0 、 MemFireDB 2.4.00 MemFireDB 2.8.34
Autovacuum、REINDEX等命令忽略了“安全受限操作”沙箱 Autovacuum、REINDEX、CREATE INDEX、REFRESH MATERIALIZED VIEW、CLUSTER 和 pg_amcheck 在特权用户维护另一个用户的对象时,没有完全做到安全操作。这些命令在激活相关保护时要么太晚,要么根本不激活。具有在至少一个模式中创建非临时对象权限的攻击者可以以超级用户的身份执行任意 SQL 函数。 CVE-2022-1552 2021-11-15 MemFireDB 2.8.34 MemFireDB 2.8.40
extension脚本替换不属于该extension的对象 一些extension使用了 CREATE OR REPLACE 或 CREATE IF NOT EXISTS 命令。但有些 扩展extension未遵守文档中规定的仅针对已知为extension成员的对象进行操作的规则。攻击需要具备在至少一个模式中创建非临时对象的权限,诱使或等待管理员在该模式中创建或更新受影响的extension,并诱使或等待受害者使用在 CREATE OR REPLACE 或 CREATE IF NOT EXISTS 中被指定的对象。在具备这三个前提条件的情况下,攻击者可以以受害者角色的身份运行任意代码,该角色可能是超级用户。 CVE-2022-2625 2021-11-15 MemFireDB 2.8.34 MemFireDB 2.8.40
CREATE SCHEMA ... schema_element 绕过了保护性的search_path更改 允许拥有数据库级别CREATE权限的攻击者以引导超级用户的身份执行任意代码。数据库所有者默认具有此权限,并且显式授权可以将其扩展给其他用户。 CVE-2023-2454 2024-2-22 MemFireDB 2.8.40 MemFireDB 2.8.51
行安全策略在内联后没有考虑到用户ID更改 虽然CVE-2016-2193修复了大部分行安全和用户ID更改之间的交互问题,但它忽略了涉及函数内联的一种情况。这会导致在使用特定角色的策略并且某个查询在一个角色下进行规划,然后在其他角色下执行时,可能会应用错误的策略。这种情况可能会在安全定义函数下发生,或者在最初规划了一个通用用户和查询,然后在多个SET ROLEs之间重新使用时发生。应用错误的策略可能允许用户完成本来禁止的读取和修改操作。 CVE-2023-2455 2024-2-22 MemFireDB 2.8.40 MemFireDB 2.8.51
在引用中使用的Extension脚本@substitutions@存在SQL注入漏洞 如果一个扩展脚本在引用结构(如$、''或"")内部使用@extowner@、@extschema@ 或@extschema:...@,那么该脚本就会存在漏洞。没有捆绑的extension存在此漏洞。在文档示例 和非捆绑的扩展中比较容易出现此问题。攻击的前提是管理员安装了一个脆弱的、受信任的、非捆绑的extension的文件。在这种前提下,攻击者可以利用具有数据库级别CREATE权限的漏洞来执行任意代码,身份为引导超级用户。 CVE-2023-39417 2024-2-22 MemFireDB 2.8.40 MemFireDB 2.8.51