首页/安全/安全加固速查/ASLR 地址随机化(randomize_va_space=2)
主机加固基线90 条

ASLR 地址随机化(randomize_va_space=2)

全量地址空间随机化让缓冲区溢出等内存破坏漏洞难以稳定利用;CIS 要求 kernel.randomize_va_space 为 2,现代发行版默认已开启。

安全加固速查安全更新于 2026-10-13

ASLR 在防什么

ASLR(地址空间布局随机化)让进程每次启动时栈、堆、共享库的加载地址都不一样。缓冲区溢出类漏洞在利用时需要知道关键地址,地址随机化把这一步变成猜测:猜错的进程会直接崩溃,很难形成稳定可用的利用链。Linux 上由 kernel.randomize_va_space 控制,值为 2 表示完全随机化,现代发行版默认就是这个值。

基本信息

加固项内核地址随机化
适用平台Linux(RHEL/CentOS/Debian/Ubuntu)
风险等级高
基线kernel.randomize_va_space = 2
查看位置sysctl 与 /proc/sys/kernel/randomize_va_space

典型使用场景

  • 基线核查:确认内核缓解措施处于开启状态,作为主机加固的一部分
  • 事故排查:某程序在开启 ASLR 后异常,需要判断是否为兼容性问题
  • 加固整改:发现被历史操作关闭过 ASLR 时恢复为完全随机化
  • 容器环境核查:确认容器内看到的值来自宿主内核而非独立配置
  • 漏洞响应:修复通告中建议启用或确认缓解措施时逐项核对

核查与加固

核查与加固
sysctl kernel.randomize_va_space              # 期望输出值为 2
cat /proc/sys/kernel/randomize_va_space       # 直接读内核值,绕过配置文件
echo 'kernel.randomize_va_space = 2' >> /etc/sysctl.d/99-hardening.conf
sysctl --system                               # 加载全部配置文件
sysctl kernel.randomize_va_space              # 复核生效值

取值含义

取值含义说明
0关闭随机化漏洞利用门槛大幅下降,不应使用
1部分随机化共享库等随机,整体缓解力度有限
2完全随机化基线要求值,栈、堆与库全部随机
容器内读数与宿主内核一致容器不能独立设置该参数,报错属预期
不要相信「关闭 ASLR 提升兼容性」的旧建议:那会让提权漏洞的利用难度显著下降。遇到程序异常应修复或升级程序,而不是削弱内核缓解措施;临时关闭只适合在隔离环境中做单次变量验证,验证后立即恢复。
该参数通过内核命令行动态生效,但重启后以配置文件为准,所以必须写入 /etc/sysctl.d 下的文件才能持久。容器共享宿主内核,容器内修改会被拒绝,真正的设置点是在宿主机上。

与其他缓解措施一起看

ASLR 不是独立防线:栈保护、不可执行栈、可执行文件的位置无关编译等机制配合使用时,才构成完整的缓冲区溢出缓解链。核查报告里把这几项写成一组,比只写一个参数取值更能反映真实防护水平;发现某程序明确带禁用随机化的标记,也应单独记录原因。

易错点

  • 只在运行时用 sysctl -w 修改:重启后回到旧值,必须写入配置文件才算固化
  • 把容器内的报错当成加固失败:容器不能改内核参数,报错属预期,设置点应在宿主机或编排层
  • 为兼容老程序下调该参数:属于用降低安全性换取便利,应改为升级或替换该程序
  • 只看配置文件不读内核值:配置文件存在但未加载的情况很常见,以 /proc/sys 下的实际读数为准
  • 把 ASLR 当成万能缓解:单靠地址随机化不能防住信息泄露配合的利用链,需要与其他缓解措施共同评估

数据来源与参考

  • CIS Linux Benchmark:Enable randomized virtual memory region placement
  • Linux 内核文档:/proc/sys/kernel/randomize_va_space

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌