Canonical
12 September 2025

Canonical Livepatch 是一款专为平衡安全与运维便利而架构的安全补丁自动化工具,可为 Linux 内核提供免重启式安全更新。Livepatch 通过内核热补丁即时修复高危及严重安全漏洞(CVE),该修复效果可持续至下次软件包升级与系统重启生效前。系统管理员依托 Livepatch 为 Ubuntu 关键业务服务器提供安全加固,此类场景中安全防护具有至高优先级。
由于 Linux 内核是运行中系统的核心组件,一旦发生故障将导致整机停机。Canonical 通过双重安全架构严密封堵恶意代码注入风险,为内核热修补功能提供协同防护:
- 安全启动机制确保正在运行可信内核
- 模块签名验证确保仅可信代码在运行时加载至内核
安全启动机制通过验证签名确保二进制文件的可信性,其必须由授信源签署。它通过阻止用户空间程序安装不受信的引导程序与二进制文件,实现对 Ubuntu 机器的防护。安全启动验证强制要求模块签名验证,以实现在运行时插入代码。
安全实施 Linux 内核热补丁
Livepatch 通过多重防护层级确保安全运行:
首先,Livepatch 客户端以自更新机制的 Snap 应用形式封装和分发。Snap 软件包具备防篡改、GPG 签名验证、深度压缩和只读文件系统四大核心安全特性。该自更新功能具备智能故障感知能力,若升级失败,将自动回滚至前一可用版本。Snap 应用于严格沙盒隔离环境中,默认启用系统级权限熔断机制。Livepatch Snap 应用处于严格受限状态,仅通过预定义的 Snap 接口,细粒度访问其功能必需的系统区域。
其次,Canonical 实施了基于证书的信任模型,确保 Livepatch 更新由可信来源发布,而非持有恶意企图的第三方发布。
用于运行时代码插入的基于证书的信任模型
Livepatch 实施基于证书的信任链机制,所有补丁均须经 Canonical 密码签名认证。所有由 Canonical 构建的 Linux 内核均预置数字证书,Livepatch 更新在运行时应用前必须通过这些嵌入证书的验证。此外,CA 证书存储在引导加载程序包中,用于在安全启动过程中验证内核签名,但这套验证体系与 Livepatch 模块验证相互独立。
该系统长期稳定运行需依赖两项证书的定期更新。客户端身份验证证书必须更新才能成功访问 Canonical 服务器上的内容,且 Livepatch 客户端中的证书必须与内核嵌入的模块签名证书完全匹配。Launchpad 在 Ubuntu 的开发、封装和维护过程中发挥着关键作用。Launchpad 的构建农场将源代码编译为 .deb 软件包,并托管维护 Livepatch 有效证书的 CI/CD 流程。
Livepatch 工程团队与内核工程团队相互协作,确保内核和 Livepatch 客户端使用正确的证书,并与 Launchpad 团队协同保障构建产物获得合规签名。Canonical 的内核工程师负责为 Livepatch 客户端分发的更新制作软件包。用于测试和验证官方内核构建的同一套工具链,被复用于测试和验证每一个 Livepatch 更新。每个 Livepatch 更新均以带签名的内核模块形式分发,内核在应用补丁前会通过内置证书验证模块签名的有效性。
公钥与私钥证书对必须严格匹配,才能确保内核可持续接收 Livepatch 更新。Canonical 使用私钥证书对每个内核进行签名,而对应的公钥证书在构建时就被嵌入内核中。所有内核模块(包括 Livepatch 分发的补丁)必须使用对应的私钥证书进行签名。当 Livepatch 应用更新时,Livepatch 客户端与内核会通过嵌入的公钥证书共同完成签名验证。嵌入在内核中用于模块签名验证的公私证书若不匹配,将导致 Livepatch 模块无法应用。无效的 Livepatch 更新会在运行时签名验证期间被内核拒绝。
结论
通过安全启动机制建立的信任链最终要求内核模块必须经过签名,这确保了恶意行为者无法将 Livepatch 用作攻击向量。证书过期机制维护着信任链的完整性,并确保系统持续获得补丁的授权访问。针对关键和高危内核漏洞,在漏洞披露后,各类规模机构与个人用户纷纷采用 Livepatch 技术,以压缩其 Ubuntu 实例的漏洞利用窗口期。