近期在互联网媒体上流传 PostgreSQL 存在任意代码执行的漏洞:
拥有‘pg_read_server_files’权限的攻击者可利用此漏洞获取超级用户权限,执行任意系统命令。
针对此言论,PostgreSQL 官方在2019年4月4日发表声明如下:
互联网媒体上报导的有关 PostgreSQL 方面的安全漏洞 CVE-2019-9193,PostgreSQL 安全团队强调这不是一个安全漏洞, 我们认为创建这个 CVE-2019-9193 就是个错误,而且已经和 CVE-2019-9193 的报告者联系,调查为什么会创建这个条目。
COPY .. PROGRAM 功能明确规定,只能被授予超级用户权限、或是默认 pg_execute_server_program 角色的数据库用户来执行。根据设计,此功能允许被授予超级用户或 pg_execute_server_program 的用户作为 PostgreSQL 服务器运行的操作系统用户(通常是“postgres”)执行操作。CVE 中提到的默认角色 pg_read_server_files 和 pg_write_server_files 不会授予数据库用户使用 COPY .. PROGRAM 的权限。
根据设计,数据库超级用户与运行数据库服务所在的操作系统的用户之间不存在不同的安全边界,另外 PostgreSQL 服务器不允许作为操作系统超级用户(例如“root”)运行。PostgreSQL 9.3 中添加的 COPY .. PROGRAM 的功能并未改变上述设计原则,只是在现有的安全边界内添加了一个功能。
我们鼓励 PostgreSQL 的所有用户遵循最佳实践方案,即永远不要向远程用户或其他不受信任的用户授予超级用户的访问权限。这是系统管理中应遵循的安全操作标准,对于数据库管理也需要遵循。
如果您对此有更多疑问,我们诚邀您通过社区官网与工作人员取得联系。