发现安全漏洞后,尽快通知port用户社区是非常重要和紧急的步骤。这样的通知有两个目的。首先,如果危险确实很严重,立即采取应急措施是明智的。例如,停止受影响的网络服务,甚至完全卸载port,直到漏洞得到修复。其次,许多用户只偶尔升级安装的软件包。他们会从通知中得知,一旦修正版本可用,必须立即更新软件包。
鉴于树中ports的数量庞大,每次事件都发布安全通告会造成信息泛滥,当涉及真正严重的事项时,会失去受众的注意。因此,在 FreeBSD VuXML 数据库中记录ports中发现的安全漏洞。安全官员团队成员也监视这些需要他们干预的问题。
提交者可以自行更新 VuXML 数据库,协助安全官员团队,并更快地向社区传递关键信息。那些不是提交者或发现了异常严重漏洞的人不应该犹豫,应该直接联系安全官员团队,如 FreeBSD 安全信息页面所述。
VuXML 数据库是一个 XML 文档。其源文件 vuln.xml 位于port security/vuxml 中。因此,文件的完整路径名将是 PORTSDIR/security/vuxml/vuln.xml。每当在port中发现安全漏洞时,请在该文件中添加一个条目。在熟悉 VuXML 之前,最好的做法是找到一个适合当前情况的现有条目,然后复制并将其用作模板。
完整的 XML 格式很复杂,远远超出了本书的范围。然而,为了对 VuXML 条目的结构有基本了解,只需要了解标签的概念。XML 标签名被尖括号括起来。每个开放标签必须有一个匹配的闭合标签。标签可以嵌套。如果嵌套,内部标签必须在外部标签之前关闭。标签有一个层次结构,即更复杂的嵌套规则。这类似于 HTML。主要区别在于 XML 是可扩展的,即基于定义自定义标签。由于其固有结构,XML 将其他无定形的数据整理成形。VuXML 特别适用于标记安全漏洞描述。
现在考虑一个现实的 VuXML 条目:
标记名称应该是不言自明的,因此我们只会更仔细地查看需要填写的字段:
这是发现的问题的一行描述。
受影响的软件包名称列在那里。可以给出多个名称,因为几个软件包可能基于单个主 port 或软件产品。这可能包括稳定和开发分支,本地化版本和包含不同重要构建时间配置选项选择的从属 ports。
软件包的受影响版本在那里指定为使用 , , , 和 元素的一个或多个范围的组合。检查给定的版本范围是否不重叠。 在范围规范中, * (星号)表示最小版本号。特别地, 2.* 小于 2.a 。因此,星号可用于匹配所有可能的 alpha 、 beta 和 RC 版本。例如, 2.3. 将选择性地匹配每个 2.x 版本,而 2.03.0 不会,因为后者缺少 2.r3 并匹配 3.b 。 上述示例指定受影响的版本为 1.6 及 1.9 之前的版本, 2.x 在 2.4_1 之前的版本,以及版本 3.0b1 。
几个相关的软件包组(基本上,ports)可以在 部分中列出。如果几个软件产品(比如 FooBar、FreeBar 和 OpenBar)是从同一代码库发展而来,并且仍然共享其错误和漏洞,则可以使用此功能。请注意,这与在单个 部分中列出多个名称的区别。
版本范围必须允许 PORTEPOCH 和 PORTREVISION (如果适用)。请记住,根据排序规则,具有非零 PORTEPOCH 的版本大于任何不含 PORTEPOCH 的版本,例如, 3.0,1 大于 3.1 ,甚至大于 8.9 。
这是问题摘要。XHTML 用于此字段。至少必须出现
和
。可以使用更复杂的标记,但仅用于准确性和清晰度:请勿添加花哨的内容。
此部分包含对相关文档的引用。鼓励提供尽可能多的参考文献。
这是一个 FreeBSD 安全公告。
这是一个 FreeBSD 问题报告。
这是一个 MITRE CVE 标识符。
这是一个 US-CERT 漏洞通告。
这是一个 US-CERT 技术网络安全警报。
这是一个存档在邮件列表中的帖子的网址。属性 msgid 是可选的,可以指定帖子的消息 ID。
这是一个通用的网址。只有当其他参考类别都不适用时才使用。
这是问题披露的日期(YYYY-MM-DD)。
这是条目添加的日期(YYYY-MM-DD)。
这是条目中的任何信息上次修改的日期(YYYY-MM-DD)。新条目不得包括此字段。在编辑现有条目时添加它。
此示例描述了软件包 dropbear 中的一个漏洞的新条目,该漏洞已在版本 dropbear-2013.59 中修复。
作为先决条件,安装一个新版本的安全/vuxml port。
首先,检查是否已经有关于这个漏洞的条目。如果有这样的条目,它将匹配先前版本的软件包, 2013.58 :
如果找不到任何条目,请为这个漏洞添加一个新条目。
如果漏洞具有 MITRE CVE 标识符,则可以改用以下命令:
其中 CVE-YYYYY-XXXX 是有效的 CVE 标识符。
如果漏洞是 FreeBSD 安全公告,则可以改用以下命令:
其中 FreeBSD-SA-YY-XXXXXX.asc 是一个已发布的 FreeBSD 安全公告。
验证其语法和格式:
前一个命令会生成 vuln-flat.xml 文件。也可以使用以下命令生成:
验证该条目的 部分是否匹配正确的软件包:
确保该条目在输出中不产生错误匹配。
现在检查是否匹配正确的软件包版本:
前者版本匹配,而后者版本不匹配。