专栏名称: 看雪学苑
致力于移动与安全研究的开发者社区,看雪学院(kanxue.com)官方微信公众帐号。
目录
相关文章推荐
深圳市中级人民法院  ·  到底是谁偷走了话费? ·  22 小时前  
深圳市中级人民法院  ·  到底是谁偷走了话费? ·  22 小时前  
四川省消委会  ·  谨慎下载!这49款APP被通报→ ·  昨天  
四川省消委会  ·  谨慎下载!这49款APP被通报→ ·  昨天  
计算机与网络安全  ·  2024-2025年度卫生信息技术产品及服务 ... ·  昨天  
中科院之声  ·  我国科学家成功合成新核素镤-210 ·  2 天前  
中科院之声  ·  我国科学家成功合成新核素镤-210 ·  2 天前  
51好读  ›  专栏  ›  看雪学苑

加固 C/C++ 程序

看雪学苑  · 公众号  · 互联网安全  · 2018-02-05 18:04

正文

请到「今天看啥」查看全文



$ readelf -l libm.so.6

...

GNU_STACK      0x0000000000000000 0x0000000000000000 0x0000000000000000

0x0000000000000000 0x0000000000000000  RW     10

...


它不应该是这样(注意E(执行)现在出现在这个标志中)


$ readelf -l unprotected.so

...

GNU_STACK      0x0000000000000000 0x0000000000000000 0x0000000000000000

0x0000000000000000 0x0000000000000000  RWE    10

...


2. 在启动你的程序时可以测试一下,然后导入所有的动态链接库。检查在/proc/PID/maps(其中pid由运行程序的数字进程ID替换)路径下,[stack]是否正确映射。就如上面所提到的,此测试将排除某些库在运行时更改堆栈权限。运行的过程应该是这样:

$ cat /proc/11684/maps

...

7ffe3401a000-7ffe3403c000 rw-p 00000000 00:00 0                          [stack]

...


而不是这样(注意:x(执行)现在存在):

$ cat /proc/11687/maps

...

7ffea187d000-7ffea189d000 rwxp 00000000 00:00 0                          [stack]

...


注意:在JIT编码器中存在一个漏洞,需要在运行时生成代码。编程人员通常会注意将代码映射到只写/不可执行得内存空间,然后切换到只执行/写保护的内存空间。但一旦能够成功诱导JIT编译器生成代码时,这种做法也就失效了。



随机地址分配机制


通过预防可执行代码被注入到程序中,可以消除很大部分的攻击媒介。但是假如一些对攻击者十分有用的代码已经保存在程序中了要怎么办?例如,所有的程序都链接到libc中,这样可以通过调用system()来启动SHELL。攻击者只要能覆盖栈指针中的函数返回地址,让指针指向system()的地址。这是内存地址布局随机化的本质:分为许多内存映射尽可能使系统无法预知的。在现代Linux系统中,这些区域受到影响:







请到「今天看啥」查看全文


推荐文章
深圳市中级人民法院  ·  到底是谁偷走了话费?
22 小时前
深圳市中级人民法院  ·  到底是谁偷走了话费?
22 小时前
四川省消委会  ·  谨慎下载!这49款APP被通报→
昨天
四川省消委会  ·  谨慎下载!这49款APP被通报→
昨天
中科院之声  ·  我国科学家成功合成新核素镤-210
2 天前
中科院之声  ·  我国科学家成功合成新核素镤-210
2 天前