我试图找出 Windows 与 Unix 中缓冲区溢出之间的安全问题。
据我了解,缓冲区溢出 Windows hack 无法在 Unix 中实现,因为每个进程都有自己的内存空间。这是否意味着 Windows 中的进程共享内存空间?
我试图找出 Windows 与 Unix 中缓冲区溢出之间的安全问题。
据我了解,缓冲区溢出 Windows hack 无法在 Unix 中实现,因为每个进程都有自己的内存空间。这是否意味着 Windows 中的进程共享内存空间?
Windows 和 Unix 进程都有内存隔离。两种环境都可能发生缓冲区溢出攻击。
共享内存空间并不是大多数缓冲区溢出攻击的原因。自 Win 3.0(或运行在 80286 上的 Win 3.1)以来,Windows 就没有共享内存,因此距离上次发布支持共享内存模型的 Windows 已经过去了很长时间,将近 20 年。
缓冲区溢出允许攻击者更改正在被利用的进程中的内存。通过这样做,攻击者旨在使用目标进程的特权级别执行系统操作(例如启动进程,或加载动态库,或更改某个用户的权限等)。
这在 Win* 平台、*nix 平台和许多其他平台上都是可能的。操作系统和被利用的应用程序是如何处理这种尝试的,这就是区别所在。在应用程序方面,通常需要仔细检查缓冲区大小来避免这种情况。ASLR(地址空间布局随机化,防止攻击者猜测她需要调用的函数的地址来造成伤害)和 DEP(数据执行预防,防止攻击者将可执行代码注入您的数据区域)等技术,提供由操作系统,帮助极大。在操作系统方面,不以 root/管理员身份运行应用程序可能是最重要的防线。