问题标签 [aslr]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
401 浏览

stack-overflow - 缓冲区溢出是否被视为“已解决的问题”?(至少对于未来的系统)

我正在研究各种缓冲区/堆/堆栈保护技术,例如 PAX、DEP、NX、CANARIES 等

还有一个新的 SMEP - http://vulnfactory.org/blog/2011/06/05/smep-what-is-it-and-how-to-beat-it-on-linux/

假设我在最新的主流处理器上使用最新的内核假设我使用各种编译器保护重新编译所有应用程序假设我运行良好的 DEP、ASLR NX 位任何保护

可以说大多数缓冲区溢出攻击都会失败吗?这已经为未来的系统解决了吗?

作为推论,是否可以说当前实施的 Win7 系统极易受到 ROT 和其他技术的攻击,尤其是在 32 位应用程序上?

ps 我故意不在这里讨论“托管代码是安全的”参数

[免责声明] 我不提倡草率的编码。我意识到还有许多其他攻击。我知道现有系统的数量远远超过“理想化”的安全配置

0 投票
1 回答
1628 浏览

windows - 如何确定 Windows 是否在不重新启动的情况下应用 ASLR?

据我了解,ASLR 地址空间布局随机化只会在每次系统启动(每次重新启动)时进行随机重定位。

地址空间布局随机化 (ASLR)

当系统启动时,ASLR 将可执行映像移动到随机位置,从而使漏洞利用代码更难以可预测的方式运行。(...)

如果是这种情况,我该如何“测试”,或者更确切地说,检查我的 C++ 模块或系统模块(例如kernel32.dll)是否正在发生 ASLR,而不需要反复重新启动 Windows 并希望随机性出现?

0 投票
1 回答
1442 浏览

android - android上的ASLR的目的是什么?

Android 4.0 新增 ASLR

http://developer.android.com/sdk/android-4.0-highlights.html#DeveloperApis

Afaik,ASLR 主要用于避免在利用缓冲区溢出漏洞时让一些恶意代码泄漏/将有效负载放入另一个库

但是几乎所有将在android上运行的代码都会被管理,所以它不应该受到内存管理错误的影响

它可能对本机代码有用。Otoh,我认为大多数使用 NDK 的程序(例如用 C 制作的 opengl 游戏引擎)仍然有一层 java 代码来处理用户输入等(我认为用户提供的文件/字符串会成为恶意代码的主要载体)

显然我在我的照片中遗漏了一些东西

0 投票
3 回答
2633 浏览

windows - 强制 Windows 在某些地方加载 DLL,以便内存碎片最少

我的应用程序需要大量内存和大数据结构才能执行其工作。应用程序通常需要超过 1 GB 的内存,在某些情况下,我的客户确实需要使用 64 位版本的应用程序,因为他们有几 GB 的内存。

过去,我可以很容易地向用户解释,如果内存达到 1.6 到 1.7 GB 的内存使用量,那就是“内存不足”或非常接近“内存不足”的情况,他们需要减少内存或移至 64 位版本。

去年我注意到应用程序通常只使用大约 1 GB 的内存就已经耗尽内存。经过一番调查,似乎这个问题的原因是内存碎片。我使用 VMMAP(一个 SysInternals 实用程序)来查看我的应用程序的内存使用情况,并看到如下内容: 地址空间碎片

橙色区域是我的应用程序分配的内存。紫色区域是可执行代码。

正如您在图像的下半部分看到的那样,紫色区域(即 DLL)被加载到许多不同的地址,导致我的内存碎片化。如果我的客户没有大量数据,这不是问题,但如果我的客户有超过 1 GB 的数据集,并且应用程序的一部分需要大块内存(例如 50 MB),它可能会导致内存分配失败,从而导致我的应用程序崩溃。

我的大多数数据结构都是基于 STL 的,并且通常不需要大块的连续内存,但在某些情况下(例如非常大的字符串),确实需要有一个连续的内存块。不幸的是,并不总是可以更改代码以使其不需要如此连续的内存块。

问题是:

  • 如何影响 DLL 在内存中的加载位置,而不在客户计算机上的所有 DLL 上显式使用 REBASE,或者没有显式加载所有 DLL。
  • 有没有办法在您自己的应用程序清单文件中指定 DLL 的加载地址?
  • 或者有没有办法告诉Windows(通过清单文件?)不要分散DLL(我认为这种分散称为ASLR)。

当然,最好的解决方案是我可以从我的应用程序清单文件中影响的解决方案,因为我依赖于 Windows 自动/动态加载 DLL。

我的应用程序是混合模式(托管+非托管)应用程序,尽管应用程序的主要部分是非托管的。

有人建议吗?

0 投票
0 回答
103 浏览

security - 安全性:为什么我们仍然听说许多堆栈执行安全漏洞?

安全性: NX bit DEPASLR等机制存在这么多年,为什么我们仍然听到许多堆栈执行安全漏洞?黑客有没有找到规避这些的方法?

在查看 MS 和 Adob​​e 中相对较新的已修复安全漏洞时,您仍然可以找到使攻击者能够控制您的系统的漏洞 - 这是否意味着通过缓冲区溢出在堆栈上运行代码(这不能使用 DEP/NX/ ASLR)?

0 投票
1 回答
7901 浏览

windows - How to know whether a dll uses ASLR or not?

how to check whether a certain dll uses ASLR or not ?

lets take for example kernel32.dll, does it use ASLR or not ? and how to check other dlls ...

thanks ..

0 投票
2 回答
1954 浏览

winapi - ASLR 会导致 DLL 注入地址的摩擦吗?

我正在阅读有关 DLL 注入技术的信息,我想到了这个问题。

假设我们想将一个 DLL 注入到 Windows 7 中的目标进程中,该进程为 kernel32.dll 启用了 ASLR

因此,任何注入代码都不能使用任何 winapi 或任何系统调用,因为假设注入器代码中的 loadLibrary 函数的地址将与目标进程中的地址 loadLibrary 不同,不是吗?

所以这样的调用是CreateRemoteThread行不通的:

如果我在这个推理中错了,请纠正我。

0 投票
2 回答
2754 浏览

c - 地址空间布局随机化 (ALSR) 和 mmap

我希望由于地址空间布局随机化(ALSR),从另一个进程派生的进程在调用mmap. 但我发现,事实并非如此。为此,我制作了以下测试程序。返回的所有地址malloc对于父母和孩子来说都是完全相同的。请注意mallocfor cl1 , cl2 , pl1 , pl2内部使用mmap,因为它们是大块。

所以,我的问题是,为什么mmap即使在 ALSR 存在的情况下也不返回不同的地址。也许是因为这里的随机化种子对于原始和分叉的过程是相同的。还是有其他原因?

0 投票
3 回答
66961 浏览

windows - 如何在 Windows 7 x64 上禁用 ASLR(地址空间布局随机化)?

如何在 Windows 7 x64 上禁用 ASLR,以便我的程序始终在同一地址加载共享 CRT?

0 投票
2 回答
3337 浏览

ios - 苹果自己的 ASLR 实现是如何工作的?

根据ASLR(Address Space Layout Randomization),它在每次进程启动时提供随机堆栈和堆分配以及页面加载,并随机化放置对象在给定进程的虚拟空间中的地址。

但是在我在ios上运行的应用程序中,我创建了一个名为ObjectA的对象,经过几次重新加载进程后,我发现ObjectA的地址都是一样的,没有随机化。

苹果自己的 ASLR 实现是如何工作的?为什么ObjectA的地址都是一样的?