GLEP 14:基于 GLSA 的安全更新
作者 | Marius Mauch <genone@genone.de> |
---|---|
类型 | 标准跟踪 |
状态 | 延迟 |
版本 | 1 |
创建日期 | 2003-08-18 |
上次修改日期 | 2019-12-05 |
发布历史 | 2003-08-22, 2003-08-24, 2003-11-10, 2004-10-25 |
需求 | 21 |
GLEP 源码 | glep-0014.rst |
状态
初步实现glsa-check在 gentoolkit 中,现在移动到 sys-apps/portage。
已实现的流程与本 GLEP 中描述的不同。因此,此 GLEP(在其当前版本中)已被标记为延迟。
摘要
目前没有自动的方法来检查 Gentoo 系统是否存在已识别的安全漏洞或自动应用安全修复程序。此 GLEP 提出了一种解决此问题的方法。
动机
自动检查安全更新是 Gentoo 中经常被请求的功能。实现它将使用户能够修复安全漏洞,而无需阅读每个安全公告。它也是企业环境中经常需要的功能。
提议的更改
更新工具
此 GLEP 的编码部分是一个更新工具,它读取 GLSA,验证其 GPG 签名,检查系统是否受其影响,并根据用户偏好执行以下操作之一
- 运行修复安全漏洞所需的所有步骤,包括软件包更新和守护进程重启。
- 指示用户如何修复安全漏洞。
- 打印 GLSA,以便用户可以根据需要获取更多信息。
一旦此工具实现并经过充分测试,就可以将其集成到 portage 中。此工具的原型实现已经存在。
GLSA 格式
需要指定 GLSA 格式,我建议使用 XML 来简化解析和以后的扩展。请参阅实现以获取示例 DTD。当然,格式必须与更新工具兼容。如有必要,可以为不熟悉 XML 的用户编写转换工具或编辑器(更新:plasmaroo 编写的基于 QT 的 GLSA 格式编辑器存在于 gentoo-projects 存储库中)。每个 GLSA 必须由负责的开发者使用 GPG 签名,该开发者必须是安全团队的成员。
GLSA 发布流程
除了将 GLSA 发送到 gentoo-announce 邮件列表外,还必须将其存储在 HTTP/FTP 服务器上以及 portage 树中。我建议使用脚本来发布 GLSA,该脚本将
- 检查 GLSA 的正确性
- 使用开发者的 GPG 密钥对 GLSA 进行签名
- 向 gentoo-announce 发送电子邮件,其中包含 XML GLSA 和附件的纯文本版本
- 将其上传到 www.gentoo.org/security/en/glsa(通过 cvs 提交)
- 将其放在 rsync 服务器上(通过 cvs 提交)
- 通知论坛版主发布公告
Portage 更改
在更新工具集成到 portage 之前,portage 将不会有任何代码更改。更新工具可能需要一些新的配置选项,这些选项可以放在 make.conf 或 /etc/portage 中的另一个配置文件中。
基本原理
Gentoo 缺少自动安全更新是 portage 最常被请求的功能之一,因为它是其他发行版的标准功能之一。由于 Gentoo 已经为重要的安全漏洞提供了 GLSA,因此使用它们来实现此功能是很自然的。
为了在程序中解析 GLSA,需要指定格式并编写解析器。我建议对未来的 GLSA 使用 XML,原因如下
- 可以使用现有的库进行解析和验证
- 易于扩展,同时保持向后兼容性
- 工具可以将 XML GLSA 转换为其他格式,反之则更难
- 网站可以使用 XSLT 来标记 GLSA
将 GLSA 放入 portage 树中允许所有用户检查其系统是否存在安全更新,而无需执行更多操作,并简化以后将更新工具集成到 portage 中。对于注重安全的用户,GLSA 可在 HTTP 服务器上获得,以减轻 rsync 服务器的负载。
为了验证 GLSA 的签名,开发者的公钥应在 portage 树和 HTTP 服务器上可用。验证对于防止伪造 GLSA 的攻击是必要的。
实现
原型实现(包括更新工具、DTD 和 XML 化的 GLSA 示例)位于http://gentoo.devel-net.org/glsa/和 gentoo-projects/gentoo-security/GLSA 存储库中。此 GLEP 基于该实现,但如有必要可以更改或重写。
版权
此作品根据知识共享署名-相同方式共享 3.0 未移植许可进行许可。要查看此许可证的副本,请访问https://creativecommons.org/licenses/by-sa/3.0/。