首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在启用的ASLR EXE中使用非ASLR DLL是否安全?

在启用的ASLR EXE中使用非ASLR DLL是否安全?
EN

Security用户
提问于 2020-09-09 18:04:31
回答 3查看 788关注 0票数 1

在启用的ASLR EXE中使用非ASLR DLL安全吗?DLL是被加载到并使用随机寻址,还是所有依赖项都应该启用ASLR?

此外,其他安全机制如DEP和SHE怎么办?

EN

回答 3

Security用户

回答已采纳

发布于 2020-09-09 22:01:07

在Windows上,能够识别/DYNAMICBASE的可执行文件(用编译)可以加载与ASLR不兼容的库。

在这种情况下,DLL通常不会使用ASLR,尽管较新版本的Windows正在变得更加严格,即使是在一些不选择加入的映像上,也会强制执行ASLR,除非重新定位已经被删除(例如,通过与/FIXED链接)。

这样做会削弱随机存储器所提供的保护,因为现在将有一个位于可预测地址的图像。但是,程序中首先必须存在某种形式的漏洞。简单地加载DLL并不仅仅是一个漏洞。

例如:恶意RTF文档在Microsoft中绕过ASLR的一种常见方法是创建一个文档,以确保otkloadr.dll加载到内存在这里读更多中。

还有一个关于搬迁与ASLR的区别和来自FireEye的关于ASLR的一些事实的有用博客来自雷蒙德·陈。

关于DEP,或NX,有一个有用的引用来自不同的Raymond博客关于使能NX和ASLR

NX设置是进程范围的,进程从可执行文件的/NX­ENABLED状态获取其NX状态,而不是从任何DLL。这是另一个对DLL毫无意义的模块标志。所以把它混合到DLL中吧。没有人会在意,因为不管怎么说,DLL的标志都会被忽略。

票数 3
EN

Security用户

发布于 2020-09-09 22:02:44

你只有和你最弱的一环一样安全。如果您的程序中存在内存损坏漏洞,攻击者将寻找任何可能实现代码执行的方法。如果任何导入缺少漏洞缓解,攻击者的工作可能会容易得多,因为它们可能很容易找到已知的内存地址或找到可执行代码的位置。

因此,虽然在某些组件上缺少漏洞缓解并不一定是一个即时安全问题(也就是说,它不会创建漏洞,而是会使现有的漏洞更糟),但它确实可以是一种全然不知的保护。

票数 1
EN

Security用户

发布于 2020-09-10 05:33:57

直截了当地说,如果您将非/DYNAMICBASE二进制文件(DLL或类似的)加载到任何进程中,并且您还没有配置操作系统强制ASLR (这是可能的,但在默认情况下对第三方应用程序不启用,就像最近的Windows内部构建一样),那么您也可以完全不使用ASLR。这是因为任何非玩具库都包含足够多的ROP小工具来执行任意有效负载,攻击者将知道在哪里找到它们。

现在,ASLR是一种漏洞缓解,而不是漏洞预防;如果您没有任何内存损坏秃鹫,那么ASLR是否存在就无关紧要了。但是,我肯定不会说加载非/DYNAMICBASE库是安全的(您在哪里找到了该遗物?)除非您拥有整个操作系统--或者至少是相关的进程--配置为强制ASLR。为此,您可以在前置can 10系统上使用EMET,也可以使用内置于Win10中的“利用漏洞保护”功能(您可以开始搜索它,也可以转到Windows ->应用程序和浏览器控制->漏洞保护设置)。

票数 1
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/238127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档