克里斯托夫·佩图斯:pgcrypto中的二十年

💡 原文英文,约800词,阅读约需3分钟。
📝

内容提要

pgcrypto中的CVE-2026-2005漏洞导致缓冲区溢出,允许攻击者执行任意代码。该漏洞存在近20年,直到2025年才被发现。建议将数据库加密移至应用层,以提高安全性和灵活性。用户应立即升级到最新版本,并计划迁移到应用层加密。

🎯

关键要点

  • CVE-2026-2005是pgcrypto中的一个堆缓冲区溢出漏洞,允许攻击者以数据库运行的操作系统用户身份执行任意代码。
  • 该漏洞存在近20年,直到2025年才被发现,并在Wiz ZeroDay.Cloud事件中被利用。
  • pgcrypto的隐含威胁模型认为应用程序控制传递给pgp_sym_decrypt的内容,但实际使用中,应用程序接受来自不同来源的密文。
  • 漏洞的存在与pgcrypto的OpenPGP代码维护困难、使用率低以及缺乏充分的模糊测试有关。
  • 建议将数据库加密移至应用层,以提高密钥隔离、密钥轮换和算法灵活性,减少攻击面。
  • 用户应立即升级到最新版本,并计划迁移到应用层加密,特别是对于使用pgcrypto进行列级加密的用户。

延伸问答

CVE-2026-2005漏洞是什么?

CVE-2026-2005是pgcrypto中的一个堆缓冲区溢出漏洞,允许攻击者以数据库运行的操作系统用户身份执行任意代码。

这个漏洞存在了多久,何时被发现?

该漏洞存在近20年,直到2025年才被发现。

为什么pgcrypto中的OpenPGP代码难以维护?

pgcrypto中的OpenPGP代码是2002年版本的子集,使用C语言编写,包含大量显式缓冲区算术,且使用率低,导致维护困难。

如何提高数据库的安全性以避免此类漏洞?

建议将数据库加密移至应用层,以提高密钥隔离、密钥轮换和算法灵活性,减少攻击面。

用户应该如何应对CVE-2026-2005漏洞?

用户应立即升级到最新版本,并计划迁移到应用层加密,特别是对于使用pgcrypto进行列级加密的用户。

使用pgcrypto进行列级加密的风险是什么?

使用pgcrypto进行列级加密的风险在于攻击者可以通过SQL注入等方式影响解密过程,从而利用漏洞执行任意代码。

➡️

继续阅读