# 安全强化

Source: [https://docs.qualcomm.com/doc/80-70015-11SC/topic/security-hardening.html](https://docs.qualcomm.com/doc/80-70015-11SC/topic/security-hardening.html)

安全强化是一个过程，它通过增加攻击者利用系统漏洞的难度，来最大限度地降低系统攻击的风险。

内核安全强化与上游内核准则一致。启用了关键内核标志，如 KASLR、强化用户副本、堆栈保护程序、权限 (RWX)。

## 用户空间强化

[security_flags.inc](https://git.yoctoproject.org/poky/tree/meta/conf/distro/include/security_flags.inc) 文件是 [Yocto Project](https://www.thegoodpenguin.co.uk/blog/yocto-security-hardening-security-flags/) 的一部分，用于为编译启用安全编译器和链接器标志。

要将此功能扩展到 Qualcomm 模块，将以下命令添加到 `qcom-security_flags.inc`（文件路径：[layers/meta-qcom-distro/conf/distro/include/qcom-security_flags.inc](https://github.com/quic-yocto/meta-qcom-distro/blob/kirkstone/conf/distro/include/qcom-security_flags.inc)）：

    require conf/distro/include/security_flags.incCopy to clipboard

添加这些标志可能会导致警告或错误，从而中断编译。
                不过，Yocto 提供了一种方法来禁用有问题的包的某些编译器标志。现代编译器（如 GCC 和 Clang）提供了大量的编译器标志，可以使攻击者更难利用某些类型的漏洞。

以下是 GCC 的示例标志：
- `Wformat` 标志添加了编译时检查，以检测与常见库函数（如 `printf`、`scanf` 和 `strftime`）中的字符串参数格式相关的问题。
- `D_FORTIFY_SOURCE` 标志添加了编译和运行时检查，以检测内存和字符串函数中的缓冲区溢出
- `Fstack-protector` 标志添加了运行时检查，以检测缓冲区溢出和堆栈粉碎。
- `Fpie` 标志启用与位置无关的代码，其允许在随机位置加载二进制文件，从而使某些类型的攻击（如返回导向编程）更加困难。
- `Wl,-z,relro,-z,now` 标志使滥用二进制全局偏移表变得更加困难。

如果存在警告和错误，则为某些模块定制这些标志可能会中断编译。如果使用 Checksec 工具应用编译器漏洞利用缓解功能，则可以验证文件系统中的二进制文件。

有关使镜像更安全的更多信息，参见 [Yocto Project 文档](https://docs.yoctoproject.org/dev/dev-manual/securing-images.html)。

**Parent Topic:** [功能](https://docs.qualcomm.com/doc/80-70015-11SC/topic/features.html)

Last Published: Dec 03, 2024

[Previous Topic
Qualcomm WES](https://docs.qualcomm.com/bundle/publicresource/80-70015-11SC/topics/qwes.md) [Next Topic
架构](https://docs.qualcomm.com/bundle/publicresource/80-70015-11SC/topics/architecture.md)