Login
You're viewing the assemblag.es public feed.
  • Oct 23, 2026, 10:27 AM

    @eloy @aetios @GossiTheDog

    ASLR adds work factor for attackers but there are a bunch of ways of breaking it. The Blind ROP attacks, for example, are easy to automate. In practice, it's often possible to leak a pointer.

    I really hate the naming because there are two different techniques whose names are the wrong way around. Address Space Randomisation (ASR) was first (I think?) shipped in OpenBSD and randomises each mmap call. The layout of the address space is random. Address Space Layout Randomisation came from the Linux PaX project. It gives a deterministic layout but with a random base. This is nice for deployment: ASR suffers from the problem (especially on 32-bit systems) that the random addresses may be sufficiently fragmented that a later memory allocation fails because there isn't a sufficiently large contiguous space, but it works the next program invocation with different layout.

    With ASR, leaking one pointer lets you determine the addresses of all other memory locations in the same region (shared library, malloc bucket, whatever). With ASRL, leaking one pointer is sufficient to determine the location of everything. It turns out it's really easy to leak one pointer. This is even worse for KASLR because your adversary (userspace) has a rich API surface that was never designed on the assumption that kernel addresses were secret (because the MMU means that you can't use a kernel address, even if you know one) and you just need one.

    The thing that's changed here seems to be LLMs. Now, rather then using exploit toolkits the include automatic mitigation bypass steps, script kiddies are just asking Claude to produce an exploit. And Claude is doing what LLMs normally do: produce output that looks correct according to a statistical distribution of text. When used in an 'agentic' model, it keeps trying to do this until it finds one output that actually works in the specific conditions that the agentic loop is set up to test. It turns out it's not just nature that can build a better idiot, Anthropic is competing hard in this domain.

    The other dimension in this spectrum is the cost. ASLR is basically free. The kernel complexity is tiny (I think the FreeBSD patches had under a hundred lines of functionality change, most of the code was the extra controls for turning it on and off - you really want to be able to turn it off in debuggers, for example, so that your program runs are deterministic, and ideally you want to be able to capture the random seed and replay it so that your debugger can see the conditions that your fuzzer triggered). It also doesn't change the programmer's abstract machine significantly, so if you remove it in the future it won't break things.

    If it adds any work factor to attackers, you may as well turn it on because it will at least prevent the least competent ones. And it's embarrassing if your system can be compromised without any effort.

    💬 0🔄 1⭐ 0