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