首页 > IT基础架构 > 网络安全 > pgAdmin 4 v9.18 已发布
pgAdmin 开发团队很高兴地宣布发布 pgAdmin 4 版本 9.18。此版本的 pgAdmin 4 包含 29 个错误修复和新功能,其中包括对四个安全漏洞(CVE-2026-86861 至 CVE-2026-86864)的修复。有关更多详细信息,请参阅发布说明。
pgAdmin 是 PostgreSQL(开源关系型数据库) 领先的开源图形管理工具。有关更多信息,请参阅网站。
此版本中的显著变化包括:
通过重新单击当前工作区图标来折叠和恢复对象资源管理器,类似于 VS Code 侧边栏的方式,并在刷新之间记住选择。键盘快捷键 Ctrl+Alt+B(默认)执行相同操作,并可通过新的 toggle_object_explorer 首选项进行更改。
加强默认的 Content-Security-Policy,使内联脚本在每次请求的 nonce 下运行,而不是笼统的 'unsafe-inline',并移除 'unsafe-eval'。style-src 保留 'unsafe-inline',因为 MUI 和 React 注入运行时样式和内联样式属性,这些无法携带 nonce,并且当设置 DEBUG 时,开发包会自动重新添加 'unsafe-eval'。
修复 Webserver 身份验证模式中的身份验证绕过问题,其中 get_user() 在 WSGI 环境中缺少配置的 WEBSERVER_REMOTE_USER 名称时,会回退到从入站请求头中读取该名称。由于请求头由发送请求的任何人写入,任何能够访问 pgAdmin 的客户端都可以断言任何身份,包括管理员的身份,而无需提供凭据。现在,通过请求头断言的身份是选择加入的,仅限于配置的受信任代理列表,并带有可选的共享密钥,并且对于身份验证源不是 webserver 的账户予以拒绝(CVE-2026-86863)。
修复备份工具中的参数和连接字符串注入问题,其中客户端提供的数据库名称作为裸位置值附加到 pg_dump 参数向量中。由于 getopt_long 会置换参数,以短横线开头的值会提供进一步的选项,例如 --file,从而覆盖存储受限的输出路径;并且由于 libpq 会将包含等号的数据库名称扩展为完整的连接字符串,同一字段可以将连接以及 PGPASSWORD 中导出的密码重定向到调用者选择的任何主机。现在,数据库名称通过 PGDATABASE 环境变量传递,libpq 永远不会扩展该变量(CVE-2026-86864)。
修复恢复和维护工具中的连接字符串注入问题,其中客户端提供的数据库名称直接传递给 --dbname,同样可以将连接以及导出的密码重定向到调用者选择的服务器(CVE-2026-86862)。
修复文件管理器 save_file 端点中的检查时间到使用时间(TOCTOU)缺陷,该端点支持从查询工具和 ERD 保存:请求的路径通过 check_access_permission() 进行验证,然后使用普通的 open() 打开,因此其间植入的符号链接会被跟随,从而写入用户存储目录之外。这是 CVE-2026-7819 对单独上传路径的加固未覆盖的写入接收器(CVE-2026-86861)。
拒绝 LLM(大语言模型) API(应用程序编程接口) 请求上的 HTTP 重定向,而不是跟随 Location 头到未应用 ALLOWED_LLM_API_URLS 检查的目标。这是加固措施,而不是对可利用缺陷的修复,因为要返回重定向,至少需要控制已在允许列表中的主机。
在导入非共享服务器时,拒绝空或 null 的 Username,此前会干净地导入并留下一个服务器,libpq 会静默地以运行 pgAdmin 的操作系统账户进行身份验证,而不是直接拒绝。
修复针对 Flask-Security-Too 5.8.2 无法登录的问题,该版本纠正了 UserMixin.is_locked() 中长期存在的反转,而 pgAdmin 自己的 is_locked() 正是针对该反转编写的。
修复表对话框中继承列可编辑和可删除的问题,以及展开的 Definition 选项卡上的数据类型下拉菜单提供所有类型,而不是遵循内联应用的允许类型限制。
恢复 Schema Diff 生成的脚本的依赖顺序,该顺序自 React 移植以来因 dependLevel 未设置而丢失。
修复 Schema Diff 对 SERIAL 和 BIGSERIAL 列报告虚假差异、在重新创建外部表时复制任何同时存在差异的列、丢失外部表列的排序规则、向已应用的函数或过程体注入空白、当序列的 MINVALUE 提高到当前值以上时生成 PostgreSQL 拒绝的 SQL,以及将中途失败的比较报告为成功的问题。
在 getNodeAjaxOptions() 后面共享并发的相同 GET 请求,以便宽表的 Columns 选项卡不再为每个列行触发一个重复的 get_types 请求。
修复用户定义函数或过程的 Definition 选项卡上的参数网格在编辑模式下拒绝删除或添加行的问题。
从生成的索引 SQL 中省略多余的 TABLESPACE pg_default 子句,该子句在分区表上无效。
修复当每服务器 Password Exec Command 与仅服务(pg_service.conf)连接一起使用时崩溃的问题,该连接会使 host、port 和 username 未设置。
在从 servers.json 定义导入共享服务器时接受 SharedUsername,而不是坚持为每个服务器使用 Username。
将 Validate binary path 对话框呈现为 HTML,而不是显示原始标记。
从 Windows 安装程序的 ProductVersion 中移除末尾引号,并修复 Helm 部署模板中的 existingSecret 路径。
除非设置 SERVER_MODE,否则跳过导入和初始化 Kerberos、LDAP、MFA、OAuth2 和 Webserver 身份验证提供程序,让桌面模式仅使用内部身份验证。
升级 JavaScript 和 Python 第三方依赖项,并更新消息目录,包括修复自 2025 年 11 月以来未重新编译的韩语目录。
Windows 和 macOS 版本现已可用,同时下载区还提供 Python Wheel、Docker Container、RPM、DEB Package 和源代码 tarball。
转载声明:本文为转载整理,原文版权归原作者及原站点所有。
原文来源:PostgreSQL Blog
原创地址:https://www.postgresql.org/about/news/pgadmin-4-v918-released-3381/
原文作者:pgAdmin Development Team;如有侵权,请联系管理员删除。