diff --git "a/\345\256\211\345\205\250\347\274\226\347\240\201\350\247\204\350\214\203/openKylin-C&C++\350\257\255\350\250\200\345\256\211\345\205\250\347\274\226\350\257\221\350\247\204\350\214\203.md" "b/\345\256\211\345\205\250\347\274\226\347\240\201\350\247\204\350\214\203/openKylin-C&C++\350\257\255\350\250\200\345\256\211\345\205\250\347\274\226\350\257\221\350\247\204\350\214\203.md" index b6b9129815f95cf0e17c768f9de328b7ddb300cc..7b99a38df6ac47b0edf3e7d8047c357345549da9 100644 --- "a/\345\256\211\345\205\250\347\274\226\347\240\201\350\247\204\350\214\203/openKylin-C&C++\350\257\255\350\250\200\345\256\211\345\205\250\347\274\226\350\257\221\350\247\204\350\214\203.md" +++ "b/\345\256\211\345\205\250\347\274\226\347\240\201\350\247\204\350\214\203/openKylin-C&C++\350\257\255\350\250\200\345\256\211\345\205\250\347\274\226\350\257\221\350\247\204\350\214\203.md" @@ -1,4 +1,165 @@ # C&C++语言安全编译规范 -| 选项 |阶段| 用法 |说明 | -|---|---|---|---| -| | | | | + +## 1. ASLR + +1.1. 作用阶段 + +系统配置 + +1.2. 使用方法 + +echo 2 >/proc/sys/kernel/randomize_va_space + +1.3. 强制性 + +必选 + +1.4 说明 + +ASLR是一种针对缓冲区溢出的安全保护技术,通过对堆、栈、共享库映射等线性区布局的随机化,增加攻击者预测目的地址的难度,防止攻击者直接定位攻击代码位置,达到阻止溢出攻击的目的。randomize_va_space等于1时,栈、数据段、VDSO会随机化,randomize_va_space等于2时堆地址也会随机化。 + + +## 2. 栈保护 + +2.1. 作用阶段 + +编译选项 + +2.2. 使用方法 + +-fstack-protector-all / -fstack-protector-strong + +2.3. 强制性 + +必选 + +2.4 说明 + +避免栈溢出被攻击者利用。在缓冲区和控制信息间插入一个canary word。当缓冲区被溢出时,在返回地址被覆盖之前canary word会首先被覆盖。通过检查canary word的值是否被修改,就可以判断是否发生了溢出攻击。 + +## 3. GOT表保护 + +3.1. 作用阶段 + +3.2. 使用方法 + +3.3. 强制性 + +3.4 说明 + + +## 4. 动态库搜索路径 + +4.1. 作用阶段 + +4.2. 使用方法 + +4.3. 强制性 + +4.4 说明 + + +## 5. 堆栈不可执行 + +5.1. 作用阶段 + +5.2. 使用方法 + +5.3. 强制性 + +5.4 说明 + +## 6. 地址无关 + +6.1. 作用阶段 + +6.2. 使用方法 + +6.3. 强制性 + +6.4 说明 + +## 7. 随机化 + +7.1. 作用阶段 + +7.2. 使用方法 + +7.3. 强制性 + +7.4 说明 + +## 8. FS + +8.1. 作用阶段 + +8.2. 使用方法 + +8.3. 强制性 + +8.4 说明 + +## 9. 立即绑定 + +9.1. 作用阶段 + +9.2. 使用方法 + +9.3. 强制性 + +9.4 说明 + +## 10. 动态库符号隐藏 + +10.1. 作用阶段 + +10.2. 使用方法 + +10.3. 强制性 + +10.4 说明 + +## 11. 整数溢出检查 + +11.1. 作用阶段 + +11.2. 使用方法 + +11.3. 强制性 + +11.4 说明 + +## 12. 栈检查 + +12.1. 作用阶段 + +12.2. 使用方法 + +12.3. 强制性 + +12.4 说明 + +## 13. 删除符号表 + +13.1. 作用阶段 + +13.2. 使用方法 + +13.3. 强制性 + +13.4 说明 + +## 14. 告警选项 + +14.1. 作用阶段 + +14.2. 使用方法 + +14.3. 强制性 + +14.4 说明 + + + + +