安全
有关以往页面,请参阅以前的安全页面.
此页面列出了 OpenWrt 用于确保 OpenWrt 安全的流程、工具和机制。 这包括了 OpenWrt 发行版以及托管在 https://github.com/openwrt/ 的官方软件包源以及托管在 https://git.openwrt.org/ 的 OpenWrt 特定工具,如 procd, ubus 和 libubox
漏洞报告
安全漏洞应保密报告至 contact@openwrt.org,详见报告安全漏洞。
安全建议
这里只列出了由 OpenWrt 团队直接维护的组件的安全建议。并没有列出 OpenWrt 使用的第三方组件的所有的安全问题,但这些问题也会影响 OpenWrt 的安全。我们不会列出 Linux 内核、openssl 和其他第三方组件中的已知安全问题,即使它们影响到与OpenWrt相关的使用情况。OpenWrt团队监控上游项目,并将 OpenWrt 核心库中使用的组件的安全补丁回传到仍然支持的 OpenWrt 版本。例如仅在2021年就有 159 个 CVE 在 Linux 内核中被发现,OpenWrt 定期更新 Linux 内核小版本以获得最新的修复。
支持状态
这列出了当前支持或不支持的 OpenWrt 版本。
版本 | 当前状态 | 预计停止时间 |
---|---|---|
23.05 | 完全支持 | 2025年3月 |
22.03 | 安全维护 | 2024年4月 |
21.02 | 终止维护 | 2023年5月 |
19.07 | 终止维护 | 2022年4月 |
18.06 | 终止维护 | 2020年12月 |
17.01 | 终止维护 | 2018年9月 |
15.05 | 终止维护 | 2016年3月 |
预计的停止可以在以后延长, 具体取决于未来的情况, 例如下一个版本的发布日期。
版本引用了此发布分支中的最新稳定版本。
- 完全支持意味着 OpenWrt 团队为修复安全性和我们知道的其他问题的核心包提供更新。
- 安全维护意味着 OpenWrt 团队仅修复此版本中的安全问题,不再修复任何错误。
- 终止维护意味着我们将 *不再* 为严重的安全问题提供任何更新. 请更新到最新版本。
OpenWrt 主要版本在最初发布后将进入完全支持状态。当下一个 OpenWrt 主要版本发布时. 旧版本将进入安全维护模式。OpenWrt 主要版本将在初始版本发布后 1 年或下一个主要版本发布后 6 个月终止(将使用较晚的日期)。我们计划在支持周期结束时进行最终的次要版本。
这仅包含核心 OpenWrt 包而不涵盖 GitHub 上托管的外部软件包源。一些 feed 包维护者并不关心仍然支持核心组件的所有 OpenWrt 版本。 为了获得最佳的安全支持,我们建议大家升级到最新的稳定版本。
发现问题
OpenWrt 项目使用多种工具来识别潜在的安全问题。 这些信息通常可供所有人使用, 我们感谢这些工具对每个人报告的问题的修复。
uscan
uscan 报告显示来自基础和软件包存储库的所有软件包的版本号,并将其与最近的上游发布版本进行比较。 此外,生成此页面的工具还会根据许多包的 PKG_CPE_ID 变量中列出的通用平台枚举 (CPE) 检查分配给包的现有 CVEs。 该页面每周为 master 和活跃分支更新.
覆盖扫描
OpenWrt 使用商业 Coverity Scan 工具(该工具免费提供给开源项目)对 OpenWrt 组件进行静态代码分析。 这每周扫描一个 OpenWrt 构建, 并报告在 OpenWrt 项目中开发的组件(如 procd 和 ubus)中发现的问题,但不报告(已修补的)第三方组件上发现的问题。
可重现的构建
可复制的构建项目检查 OpenWrt master 仍然是可重现的。 这证明生成的版本确实与交付的源代码匹配并且在构建过程中没有引入后门。
交付给用户
OpenWrt 运行多个构建机器人实例,这些实例正在构建 master 和支持的发布分支的快照。
当对包的更改被提交到 OpenWrt 软件包源的基础存储库时,构建机器人会自动检测此更改并将重建此包。然后,OpenWrt 用户可以使用 opkg 安装新构建的包,或者将其与映像生成器集成。这使我们能够在大约 2 天内向最终用户发送更新。
内核通常位于其自己的分区中,并且升级不太容易。因此,此机制目前不适用于内核本身和内核模块,需要新的次要版本来向最终用户提供修复。
强化构建选项
OpenWrt 在编译时为所有包激活build 配置中的一些构建强化选项。 请注意个别插件包和/或 targets 可能会忽略或不遵守这些设置。
.config line | 默认启用 | 备注 |
---|---|---|
CONFIG_PKG_CHECK_FORMAT_SECURITY=y | Yes | -Wformat -Werror=format-security |
CONFIG_PKG_CC_STACKPROTECTOR_REGULAR=y | Yes | -fstack-protector |
CONFIG_PKG_CC_STACKPROTECTOR_STRONG=y | No | -fstack-protector-strong |
CONFIG_KERNEL_CC_STACKPROTECTOR_REGULAR=y | Yes | Kernel config CONFIG_STACKPROTECTOR |
CONFIG_KERNEL_CC_STACKPROTECTOR_STRONG=y | No | Kernel config CONFIG_STACKPROTECTOR_STRONG |
CONFIG_PKG_FORTIFY_SOURCE_1=y | Yes | -D_FORTIFY_SOURCE=1 (Using fortify-headers for musl libc) |
CONFIG_PKG_FORTIFY_SOURCE_2=y | No | -D_FORTIFY_SOURCE=2 (Using fortify-headers for musl libc) |
CONFIG_PKG_RELRO_FULL=y | Yes | -Wl,-z,now -Wl,-z,relro |
CONFIG_PKG_ASLR_PIE_REGULAR=y | Yes | -fPIC CFLAGS and -specs=hardened-build-ld LDFLAGSPIE is activated for some binaries, mostly network exposed applications |
CONFIG_PKG_ASLR_PIE_ALL=y | No | PIE is activated for all applications |
CONFIG_KERNEL_SECCOMP | Yes | Kernel config CONFIG_SECCOMP |
CONFIG_SELINUX | No | Kernel config SECURITY_SELINUX |