在Linux上是否有替代gcc stack-protector / fortify源功能的库?

时间:2014-05-27 13:49:57

标签: c linux security buffer-overflow fortify-source

是否有外部库/方法/要添加的内容

  1. 金丝雀保护(堆叠保护等效物)
  2. 额外缓冲区边界检查(强化源等效)
  3. 到C软件而不使用glibc / gcc(stack-protector / fortify source)内置功能?

1 个答案:

答案 0 :(得分:1)

堆栈保护器与glibc无关;你只需提供符号__stack_chk_fail,它将由GCC生成的金丝雀检查代码调用。 (如果您要生成与位置无关的代码,则还需要__stack_chk_fail_local具有隐藏可见性,因此可以在不初始化GOT指针的情况下调用它。)您还需要确保canary存储可用并初始化;取决于您正在使用的体系结构/ ABI,这可能位于全局名为__stack_chk_guard或位于线程指针的特定固定偏移处(x86上为%gs:0)。

对于_FORTIFY_SOURCE,您可以使用类似于glibc标头的GCC内置来重现等效项。这可以作为独立于libc头的独立层,通过GCC的#include_next特性和包装标准头的辅助包含目录完成,而不依赖于正在使用的特定libc实现。据我所知,目前还没有这样的实现,但我们非常希望有一个用于musl libc。您可以尝试联系我们的开发团队/社区,看看是否有人有兴趣帮助您开展工作或优先开发此类标题。