我对我管理的几台服务器进行了安全扫描。在结果报告中,在以下文件中发现了一些万事达卡“匹配项”:
/usr/pgsql-10/share/postgres.bki
我想表明我在安全方面采取了积极主动的态度,但是:
- 我认为在这个文件中找到任何真正的万事达卡详细信息的可能性很小,因为我的应用程序没有保存此类信息,甚至没有将其输入到表单中
- 我非常不愿意删除甚至移动/重命名此文件,因为它可能会对 postgresql 的功能造成有害影响
所以我的问题是,我该如何让安全人员满意:
- 万事达卡“匹配”是误报,或;
- 我已采取适当措施来减轻任何潜在的安全漏洞?
谢谢!
答案1
从操作系统软件包存储库下载原始 PostgreSQL 软件包(与您安装的版本相同)。将其解压到 /tmp 并将原始版本与当前版本进行比较。它们应该 100% 相同,如果它们相同,则显然没有存储数字经过您的服务器,而是直接来自操作系统维护者或 PostgreSQL 开发人员。
打开文件并查看内部。这是一个文本文件,中间有几个数字,看起来像xxxx xxxx xxxx xxxx
,其中一些有点看起来像银行卡号。通过上下文判断是否是卡号。
例如,版本 11.4 中的第 2969 行包含文本4110 4111 3446 3447
。脱离上下文来看,它看起来像一个卡号,而懒惰编写的正则表达式可能会将其与真实卡号混淆(尽管它没有通过校验和验证)。
但是如果结合上下文来看,应该很明显,这是具有 PostgreSQL 内部参数的四个独立字段,它们恰好都是 4 位数字并且彼此相邻,从而导致这种潜在的误报:
插入 OID = 869(inet 11 10 -1 fb I tt“,”0 0 1041 910 911 2496 2497 - - - imf 0 -1 0 0 _null_ _null_ _null_) 插入 OID = 650(cidr 11 10 -1 fb I ft "," 0 0 651 1267 1427 2498 2499 - - - imf 0 -1 0 0 _null_ _null_ _null_ ) 插入 OID = 774(macaddr8 11 10 8 fb U ft "," 0 0 775 4110 4111 3446 3447 - - - ipf 0 -1 0 0 _null_ _null_ _null_) 插入 OID = 1000 [...]
答案2
我已采取适当措施来减轻任何潜在的安全漏洞?
根据官方文档,它们只是用于首先创建数据库系统。但是,如果你不知道该脚本的用途,则不应删除它。 它很可能用于创建数据库。
如果您删除用于创建数据库的脚本的唯一副本(以防发生故障),负责数据库的任何人都可能会感到不安。由于该文件只是一个文本文档。您应该输出脚本,并将其提交给“安全人员”。
后端接口 (BKI) 文件是使用特殊语言编写的脚本,在“引导”模式下运行时,PostgreSQL 后端可以理解这种语言。引导模式允许从头开始创建和填充系统目录,而普通 SQL 命令则要求目录已经存在。因此,BKI 文件可以首先用于创建数据库系统。(而且它们可能没有其他用处。)
initdb 在创建新数据库集群时使用 BKI 文件来完成部分工作。initdb 使用的输入文件是在构建和安装 PostgreSQL 的过程中由名为 genbki.sh 的程序创建的,该程序会读取源树的 src/include/catalog/ 目录中的一些特殊格式的 C 头文件。创建的 BKI 文件名为 postgres.bki,通常安装在安装树的 share 子目录中。