缓冲区溢出-Windows与Unix

缓冲区溢出-Windows与Unix,windows,unix,buffer-overflow,Windows,Unix,Buffer Overflow,我试图找出Windows和Unix中缓冲区溢出之间的安全问题 据我所知,缓冲区溢出Windows攻击无法在Unix中实现,因为每个进程都有自己的内存空间。这是否意味着Windows中的进程共享内存空间?Windows和Unix进程都具有内存隔离。两种环境中都可能发生缓冲区溢出攻击。Windows和Unix进程都具有内存隔离。两种环境中都可能发生缓冲区溢出攻击。共享内存空间不是大多数缓冲区溢出攻击的原因。自从Win 3.0(或运行在80286上的Win 3.1)以来,Windows就没有共享内存,

我试图找出Windows和Unix中缓冲区溢出之间的安全问题


据我所知,缓冲区溢出Windows攻击无法在Unix中实现,因为每个进程都有自己的内存空间。这是否意味着Windows中的进程共享内存空间?

Windows和Unix进程都具有内存隔离。两种环境中都可能发生缓冲区溢出攻击。

Windows和Unix进程都具有内存隔离。两种环境中都可能发生缓冲区溢出攻击。

共享内存空间不是大多数缓冲区溢出攻击的原因。自从Win 3.0(或运行在80286上的Win 3.1)以来,Windows就没有共享内存,所以Windows上次支持共享内存模式已经有很长时间了,将近20年了

缓冲区溢出允许攻击者更改正在被利用的进程中的内存。通过这样做,攻击者旨在使用目标进程的权限级别执行系统操作(例如启动进程、加载动态库或更改特定用户的权限等)


这在Win*平台、*nix平台和许多其他平台上都是可能的。操作系统和被利用的应用程序如何应对这种尝试,才是区别所在。在应用程序方面,通常需要仔细检查缓冲区大小来避免这种情况。操作系统提供的ASLR(地址空间布局随机化,可防止攻击者猜测她需要调用的函数的地址以造成伤害)和DEP(数据执行预防,可防止攻击者将可执行代码注入到数据区域)等技术提供了极大的帮助。在操作系统方面,不以root/administrator身份运行应用程序可能是最重要的防线。

共享内存空间不是大多数缓冲区溢出攻击的原因。自从Win 3.0(或运行在80286上的Win 3.1)以来,Windows就没有共享内存,所以Windows上次支持共享内存模式已经有很长时间了,将近20年了

缓冲区溢出允许攻击者更改正在被利用的进程中的内存。通过这样做,攻击者旨在使用目标进程的权限级别执行系统操作(例如启动进程、加载动态库或更改特定用户的权限等)


这在Win*平台、*nix平台和许多其他平台上都是可能的。操作系统和被利用的应用程序如何应对这种尝试,才是区别所在。在应用程序方面,通常需要仔细检查缓冲区大小来避免这种情况。操作系统提供的ASLR(地址空间布局随机化,可防止攻击者猜测她需要调用的函数的地址以造成伤害)和DEP(数据执行预防,可防止攻击者将可执行代码注入到数据区域)等技术提供了极大的帮助。在操作系统方面,不以root/administrator身份运行应用程序可能是最重要的防线。

也许你应该澄清“缓冲区溢出Windows hack”的含义。缓冲区溢出不一定需要修改其他进程的代码

示例:从
cin
读取到固定大小的字节数组可用于运行自定义代码。如果程序本身以root用户身份运行,那么Unix和Windows都无法采取任何措施来防止黑客攻击—内存隔离将毫无帮助


正如托德所指出的,Windows和Unix都能够实现内存隔离(这是与or相比非常基本的功能)。

也许你应该澄清一下“缓冲区溢出Windows黑客”的含义。缓冲区溢出不一定需要修改其他进程的代码

示例:从
cin
读取到固定大小的字节数组可用于运行自定义代码。如果程序本身以root用户身份运行,那么Unix和Windows都无法采取任何措施来防止黑客攻击—内存隔离将毫无帮助


正如托德所指出的,Windows和Unix都能够实现内存隔离(与or相比,这是非常基本的功能)。

Windows和Unix都在单独的内存空间中运行进程。您指的是哪种缓冲区溢出攻击?Windows和Unix都在不同的内存空间中运行进程。你指的是哪种缓冲区溢出攻击?啊,我不知道。谢谢啊,我没意识到。谢谢公平地说,除非底层机器支持,否则操作系统无法执行进程隔离和DEP。IBM个人电脑也做不到这一点,DEP直到最近才成为可能。完整的ASLR在性能方面付出了代价,这就是为什么许多操作系统都懒散地这么做的原因。IIRC Mac在ASLR方面远远落后于Snow Leopard。公平地说,除非底层机器支持,否则操作系统无法执行进程隔离和DEP。IBM个人电脑也做不到这一点,DEP直到最近才成为可能。完整的ASLR在性能方面付出了代价,这就是为什么许多操作系统都懒散地这么做的原因。IIRC Mac在ASLR方面远远落后,直到雪豹。