9
为什么这么难使C不那么容易发生缓冲区溢出?
我正在大学上一门课程,其中一个实验室是对它们提供给我们的代码执行缓冲区溢出攻击。范围从简单的漏洞利用到改变堆栈上某个函数的返回地址以返回到另一个函数,一直到更改程序寄存器/内存状态然后返回到您调用的函数的代码,这意味着您调用的函数完全不会利用该漏洞。 我对此进行了一些研究,并且即使在现在,此类漏洞利用仍在很多地方使用,例如在Wii上运行自制程序以及iOS 4.3.1不受限制的越狱行为。 我的问题是为什么这个问题很难解决?显然,这是用于黑客攻击数百件事情的主要漏洞,但似乎很容易解决,只需截断超出允许长度的任何输入,然后对所有输入进行清理即可。 编辑:我想从另一个角度考虑问题-为什么C的创建者不通过重新实现库来解决这些问题?