Postgresql v12 未授权访问漏洞:默认 JWT 签名密钥导致任意数据库操作 漏洞概述 PostgreSQL v12 在启用 扩展时,若未正确配置 JWT 签名密钥,攻击者可利用默认密钥伪造任意 JWT 令牌,从而绕过身份验证,执行任意 SQL 查询或修改数据库内容。该漏洞源于 扩展在初始化时未强制要求设置自定义签名密钥,导致使用默认值(如 )的系统存在严重安全风险。 影响范围 受影响版本:PostgreSQL 12.x(特别是启用 扩展的实例) 影响组件: 扩展模块 触发条件: - 数据库启用了 扩展 - 未手动设置 参数(使用默认值) - 允许远程连接且未限制访问权限 风险等级:高危(可导致数据泄露、篡改、删除等) 修复方案 1. 立即修改 JWT 签名密钥: > 替换 为高强度随机字符串(建议至少 32 字符) 2. 禁用不必要的扩展: 若无需使用 JWT 功能,可移除 扩展: 3. 加强访问控制: - 限制数据库监听地址(仅允许内网或特定 IP) - 配置防火墙规则阻止未授权访问 - 使用强密码和角色权限最小化原则 4. 升级至修复版本: 检查 PostgreSQL 官方发布的安全公告,升级至已修复此问题的版本(如 v12.14+ 或后续版本)。 POC 代码(利用示例) > ⚠️ 注意:此代码仅为演示用途,实际攻击需结合具体环境配置。请勿用于非法目的。 附加建议 定期审计数据库扩展及配置参数 启用日志监控异常 JWT 请求 对生产环境实施最小权限原则和网络隔离