又一个季度过去了,PostgreSQL 全球开发组向社区发布了最新更新,粉碎了之前披露的 40 个 bug。已宣布严重安全漏洞CVE-2022-2625 ,并在本季度的版本中包含相关的补救措施。受影响的 PostgreSQL 版本 10-14 的管理员应该知道 CVE-2022-2625 的通用漏洞评分系统 (CVSS) 评级为 7.1,并且应该在接下来的几分钟内引起您的注意。以下帖子将提供有关该漏洞的必要背景以及一些减轻威胁的方法,这些方法应有助于团队规划前进的道路。
了解漏洞
官方安全公告概述了受影响的 PostgreSQL 版本包括 10 到 14。
扩展是扩展 PostgreSQL 功能的手段,也是数据库成功的主要因素,它允许在可靠的数据存储性能和可扩展性之上提供类似本机的功能。今天有超过一千个扩展可用,这表明 Postgres 架构具有令人难以置信的灵活性以及它可以满足的各种用例。在环境中使用扩展几乎是必然的,这就是威胁发挥作用的地方。
在扩展未标记为受信任的情况下或具有 CREATE 权限的用户的情况下,安装 PostgreSQL 扩展需要超级用户。安装后,执行 CREATE EXTENSION 命令会加载扩展并创建许多数据对象,包括函数。权限模型应用于由扩展创建和管理的对象。报告该漏洞的 Sven Klem 发现,使用 CREATE 或 REPLACE 并且恰好针对已经存在的对象的扩展被盲目采用并继承了新扩展的权限。这意味着不属于已开发扩展的现有对象将获得新扩展及其对象的特权。
这种特权升级对于已经绑定到扩展的对象来说没有问题——实际上禁止替换这些对象的权限。但是,在其他情况下,这种特权升级的影响可能会更加麻烦。
在非常常见的情况下,用户可以访问数据库并能够创建对象。该用户可以创建一个由当前未安装的扩展程序使用的对象,以在未来提升他们的权限。然后,所述用户可以请求安装扩展程序,在执行 CREATE EXTENSION 时,该扩展程序将由用户识别种植的对象并应用扩展程序的权限,就好像它是它自己的对象一样,升级权限。
另一个不太可能但可能的情况涉及恶意扩展。今天使用的绝大多数扩展都是开源的,并且可供使用。通过扩展流行度,参与者可以合理地预测对象以定位和植入恶意功能或数据对象。在被扩展采用后,它将获得扩展及其对象的全部权限。
随着 CVE-2022-2625 的披露,组织需要专注于缓解工作,以确定是否已错误地授予对象特权,并防止将来发生这种情况的可能性。
可用的缓解措施
对于此特定漏洞,需要考虑许多缓解措施。消除该漏洞的第一步是更新到今天发布的最新版本的 PostgreSQL,其中包含补丁。许多组织可能有更长的升级路径,需要潜在的开发变更和回归测试。这意味着使用易受攻击的 PostgreSQL 版本。组织和个人应花时间审查以下步骤,以确保现有扩展已按预期运行,并提供以下附加建议。
了解漏洞是否已被利用应该是当务之急。让我们回顾一下这个示例脚本,作为探索的起点。
SELECT
e.extname as "Extension Name",
e.extowner::pg_catalog.regrole as "Extension Owner",
pg_catalog.pg_describe_object(d.classid, d.objid, 0) AS "Object",
s.refobjid::pg_catalog.regrole as "Object Owner"
FROM
pg_catalog.pg_depend d
JOIN pg_catalog.pg_shdepend s
ON s.dbid = (select datid from pg_stat_activity
where pid = pg_backend_pid())
AND d.classid = s.classid AND d.objid = s.objid
AND d.objsubid = s.objsubid
JOIN pg_catalog.pg_extension e
ON d.refobjid = e.oid
WHERE
d.refclassid = 'pg_catalog.pg_extension'::pg_catalog.regclass
AND d.deptype = 'e' AND s.deptype = 'o'
AND e.extowner != s.refobjid
ORDER BY 1;- 此脚本查找由扩展所有者或引导超级用户以外的用户拥有的扩展对象。
- 如果发现,应进行进一步调查以了解它们是如何被引入的。
- 任何发现都可能是偶然的,也可能来自恶意活动。
管理员还需要密切关注正在使用的扩展,以及任何引入环境的扩展。软件供应链管理应该已经成为一项至关重要的实践,确保扩展在范围内同样重要。在今年的 Verizon DBIR 报告中,2021 年 62% 的入侵与供应链攻击有关。这种增长趋势已成为不良行为者的流行媒介,需要专注于管理引入到您的环境中的工具、代码和解决方案。虽然今天以恶意意图开发的扩展的可能性可能很低,但随着公开漏洞的披露,随着时间的推移可能会增加。
在 CVE-2022-2625 的背景下,希望管理其软件供应链的组织应该:
- 在引入之前查看扩展、其目的和代码(如果可用)
- 任何更新也应该以类似的方式进行审查
- 了解扩展是否被积极维护
- 使用静态应用程序安全工具可能会在研究人员识别漏洞利用时识别未来的问题,但这些工具在今天可能无法有效解决这些问题
- 安装任何新扩展时,请检查它们将创建哪些对象并验证您的系统上是否已存在这些对象
- 如果发现任何现有对象,则它们可能是恶意本地用户在预期安装扩展程序时创建的。
除了审查软件供应链之外,值得花时间在 PostgreSQL 周围的分层控制上。主要关注的是较低权限的用户帐户,跨组织实施潜在的安全控制可能会有所不同。以下是一些审查注意事项:
- 审核数据库中的用户帐户
- 确定在开发管道中管理哪些凭证并确保这些凭证得到适当保护
- 确保每个管理员都使用唯一的凭据,并且他们的角色绝对需要这些凭据
- 应避免共享帐户,这使追溯变得困难
- 网络访问控制应限制来自可信来源的入口流量,出口流量也应应用最低权限的流量
- 轮换未正确保护的凭据
组织需要专注于确保在他们的初始响应中没有任何现有的漏洞利用,这意味着审查数据库中是否有权限升级的对象。如果发现任何问题,则应采用标准事件响应流程来调查发现的来源和影响。随后应评估安全控制和软件供应链风险。
结论
对于大多数组织而言,CVSS 评级为 7.1 意味着这应该引起注意,但可能没有上季度披露的CVE-2022-1552的即时性。对于组织和个人来说,了解是否发生了漏洞利用是优先级数,并且规划升级应确保对组织没有影响或影响很小。对于那些尚未关注软件依赖关系或在其环境中应用额外控制的人来说,这应该作为开始这些实践的驱动力。
一如既往,感谢社区贡献者和 EDB 工作人员为本季度发布所做的工作。作为 Postgres 项目的主要贡献者,我们将继续与 PostgreSQL 社区的其他成员合作,以识别和解决报告的安全问题。
作者:Dan Garcia
https://www.enterprisedb.com/blog/postgresql-extensions-impacted-cve-2022-2625-privilege-escalation




