我试图找出Windows和Unix中缓冲区溢出之间的安全问题。
据我所知,缓冲区溢出Windows hack不能在Unix中实现,因为每个进程都有自己的内存空间。 这是否意味着Windows中的进程共享内存空间?
x86_64上的缓冲区溢出 – 返回到libc攻击(linux)
缓冲区溢出在64位
缓冲区溢出不运行
系统function和堆栈
共享内存空间不是大多数缓冲区溢出漏洞的原因。 Windows从Win 3.0(或者Win 3.1运行在80286上)以来没有共享内存,所以自从Windows上次发布支持共享内存模型以来,已经有将近20年的时间了。
缓冲区溢出允许攻击者在正在被利用的进程中更改内存。 通过这样做,攻击者可以使用目标进程的权限级别执行系统操作(例如启动进程,加载动态库或者更改某个用户的权限等)。
这在Win *平台,* nix平台和其他许多平台上是可能的。 正在被利用的操作系统和应用程序是如何处理这种尝试的,是什么改变了这一点。 在应用程序方面,仔细检查缓冲区大小是通常需要避免的。 诸如ASLR(地址空间布局随机化,这可以防止攻击者猜测她需要调用的函数的地址造成伤害)和DEP(防止数据执行,防止攻击者将可执行代码注入到数据区)的技术由操作系统,巨大的帮助。 在操作系统方面,不以root /管理员身份运行应用程序也许是最重要的防线。
Windows和Unix进程都有内存隔离。 缓冲区溢出攻击可以在两种环境中发生。
也许你应该澄清你的意思是“缓冲区溢出Windows黑客”。 缓冲区溢出不一定需要修改其他进程的代码。
示例:从cin读取一个固定大小的字节数组可以用来运行自定义代码。 如果程序本身以root身份运行,那么Unix和Windows都不能做任何事情来防止黑客 – 内存隔离不会有任何帮助。
正如Todd指出的那样,Windows和Unix都能够进行内存隔离(与DEP或ASLR相比,这是非常基本的东西)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。