☰
  • 首页
  • 规则分类
  • 项目介绍
search
•••

启用平台和编译器提供的防御机制

1.21 ID_missingHardening
目录 › next › previous

针对一些常见攻击,平台和编译器会提供防御机制,如:

  • 数据执行保护(NX、DEP)
  • 栈溢出防护(CANARY、GS)
  • 地址空间布局随机化(ASLR、PIE)

程序应利用这种机制加强自身的安全性,进一步可参见“security hardening”。

示例:

// In test.c
#include <stdio.h>

int main(void) {
    printf("%p\n", main);
}

如果在 Linux 等平台上按如下方式编译:

cc test.c -o test

各函数的地址在虚拟内存中是固定的,易被攻击者猜中,进而施展攻击手段。

当平台启用了“ASLR”机制,再按如下方式编译:

cc test.c -o test -fPIE -pie

可使程序各结构的地址随机化,函数的地址在每次运行时均不相同,有效提高了攻击难度。

如无特殊原因,在编译程序时不应屏蔽这种防御机制,如:

cc test.c -o test -z execstack           # Non-compliant, disable NX
cc test.c -o test -z norelro             # Non-compliant, disable RELRO
cc test.c -o test -fno-stack-protector   # Non-compliant, disable CANARY

如果必须屏蔽,应落实相关的评审与测试。

相关

ID_unsafeCompileOption
Copyright©2024 360 Security Technology Inc., Licensed under the Apache-2.0 license.