地图卫士
Map Guard是一种概念验证的内存代理,旨在通过拦截,修改和记录基于mmap的页面分配来减轻内存安全漏洞。 它实施了一组可通过环境变量配置的简单分配安全策略。 它在打开和关闭的源程序上透明地工作,而无需在目标中进行任何源代码修改。 如果您的硬件支持,它还附带了一个用于使用Intel MPK扩展的API。 Map Guard仅在64位Linux上进行了测试,但应在32位程序和Mac OS上进行较小的修改即可工作。
执行
Map Guard通过dlsym使用动态链接器接口来挂接libc函数。 拦截到这些函数的调用时,Map Guard将检查其参数,然后咨询其策略以了解是否应允许,拒绝或记录该行为。
该库需要挂钩mmap , munmap , mprotect和mremap 。 启用所有保护可能会引入一些性能和内存开销,尤其是在启用保护页的情况下。
配置
可以通过环境变量启用/禁