# 安全强化

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

内核安全强化与上游内核准则一致。启用了关键内核标志，如 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` (文件路径：[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.inc
    Copy to clipboard

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

以下是 GCC 的示例标志：

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

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

有关提高镜像安全性的信息，请参阅 [Yocto 项目文档](https://docs.yoctoproject.org/dev/dev-manual/securing-images.html)。

## 后续步骤

- 要了解下一个安全功能，请参阅 [Qualcomm WES](https://docs.qualcomm.com/doc/80-70018-11SC/topic/qwes.html#qwes)。
- 要了解 TrustZone 和安全框架，请参阅[安全架构](https://docs.qualcomm.com/doc/80-70018-11SC/topic/architecture.html#architecture)。
- 要了解可用于与 Linux 和硬件交互的 API，请参阅[安全 API](https://docs.qualcomm.com/doc/80-70018-11SC/topic/interfaces.html#interfaces)。

Last Published: Apr 29, 2025

[Previous Topic
Qualcomm Hypervisor](https://docs.qualcomm.com/bundle/publicresource/80-70018-11SC/topics/hypervisor.md) [Next Topic
Qualcomm WES](https://docs.qualcomm.com/bundle/publicresource/80-70018-11SC/topics/qwes.md)