什么意思和#34;熵的来源"在堆栈上

时间:2016-10-24 03:06:21

标签: c++ security stack

我正在阅读一份文件,其中显示了名为终结者金丝雀的安全编码方式。 终结符金丝雀表示填充到函数堆栈帧中,防止恶意覆盖堆栈上的返回地址。 终结者金丝雀充当安全波段,难以计算大小或知道攻击者的返回地址在哪里,无论如何,根据我的理解,可能不准确。

在文档之后,有一个测试,其中一个真或假的问题如下: "终结者金丝雀的熵源可能受到攻击" 我的问题是: 我不知道"是什么"熵的来源。"问题意味着。

1 个答案:

答案 0 :(得分:2)

canary通常是放在堆栈返回地址之前的随机值。到达并覆盖返回地址的缓冲区溢出也会覆盖金丝雀。编译器在从函数返回之前插入一个检查,即canary未被修改,它仍包含原始随机值。如果它已经被修改,那么检查通常会终止进程(而不是跳转到受损的返回地址并控制攻击者)。

在信息理论中," enthropy"大概是"随机性的另一个术语"。 enthropy的来源基本上是随机数生成器 - 在此上下文中,用于设置金丝雀。如果攻击者可以预测该生成器产生的随机值,那么它可以安排其缓冲区溢出以保持金丝雀完好无损,从而绕过安全检查。