Skip to content
STIMSMITH

Address Space Conflict

Concept WIKI v1 · 6/13/2026

An address space conflict is a condition in which multiple instruction sequences, program regions, or analysis artifacts compete for the same memory addresses, preventing them from coexisting or executing as intended within a shared address space. The term has been documented in two distinct domains: (1) processor fuzzing for transient execution vulnerabilities, where training and transient instruction sequences cannot be linearly placed at desired addresses, and (2) binary program analysis, where in-process instrumentation tools disrupt the native memory layout of the target program. In both cases, the conflict undermines the controlling or observing tool's ability to faithfully produce or measure execution behavior.

Overview

An address space conflict arises when different instruction sequences—or different artifacts produced by an analysis tool—must occupy the same memory addresses, but their contents, semantics, or side effects are incompatible. The conflict prevents the affected sequences from being linearly arranged in memory and from being executed without mutual interference. The concept has been articulated in two independent research contexts:

  1. Processor fuzzing for transient execution bugs (DejaVuzz, ASPLOS '25), where a fuzzer must place both microarchitectural-training instructions and transient-window instructions in a single shared memory image.
  2. Dynamic binary analysis / taint tracking (HALF, arXiv 2512.22043), where in-process instrumentation pollutes the target's native memory layout.

Manifestation in Processor Fuzzing

In processor fuzzers that generate transient execution gadgets, the fuzzer must arrange two kinds of instruction sequences in the same flat address space:

  • Training sequences that steer branch predictors, predictors of other microarchitectural structures, or other predictors into a desired state.
  • Transient-window sequences that, once mispredicted, speculatively access secret data and encode it into microarchitectural state.

Because the fuzzer cannot predict in advance which training instructions will be effective or precisely where transient windows must be located, it is difficult to lay the two kinds of sequences out linearly without collision. As described in the DejaVuzz paper:

"The root cause of the above challenges is the address space conflict. Since the fuzzer cannot predict training effectiveness or transient window locations, instructions are hardly placed at the desired address. For example, training instructions may occupy addresses needed for transient windows, and different training instructions cannot be tested at the same address."

Three Concrete Conflict Patterns

DejaVuzz enumerates three categories of conflicts observed when generating training and transient sequences for an out-of-order core such as BOOM:

Conflict Description Effect
W1 Branch-training instruction overlaps the address needed to trigger the transient window Replacing branch training prevents the predictor from reaching the desired prediction state, invalidating the transient window
W2 Training instructions conflict with the register-assignment prologue of the transient sequence (e.g., the assignment to the branch-condition comparison register) Changing register contents alters the branch outcome and prevents speculation from reaching the secret-encoding gadget
W3 Transient-window instructions and training instructions are intermixed in the same linear block (e.g., Reorder-Buffer squashed instructions combined with training) Random replacement of RoB-squashed instructions to encode a secret can invalidate prior training

These conflicts make it impractical for existing fuzzers to arrange the instructions linearly. As a consequence, prior template-based fuzzers (e.g., IntroSpectre, TEESec) only cover a small set of window templates, while random-based fuzzers (e.g., SpecDoctor) must discard transient windows containing backward jumps because such windows cannot survive the necessary substitutions.

Manifestation in Dynamic Binary Analysis

In the HALF framework paper, "address-space conflict" is used to describe a different but structurally analogous problem in binary program analysis. Traditional in-process dynamic taint analysis tools insert instrumentation directly into the target process. The instrumentation code, shadow memory, and other analysis artifacts compete for the same virtual address ranges as the program's native code and data, altering the memory layout that an exploit or evasive malware sample was originally compiled or packed against.

"Traditional in-process analysis tools trigger severe address-space conflicts that inevitably disrupt the native memory layout of the target. These conflicts frequently cause layout-sensitive exploits and evasive malware to deviate from their intended execution paths or fail entirely."

The practical consequence is a loss of analysis fidelity: layout-sensitive exploits—whose success depends on hard-coded gadget addresses, ROP chain offsets, or precise memory distances—no longer reproduce under the instrumented binary. HALF addresses this by using kernel-assisted process hollowing to give the analysis tool an address-space-transparent observation point, eliminating the layout-disruption artifact.

Resolution via Dynamic Swappable Memory

In the processor-fuzzing context, address space conflicts are resolved by the Dynamic Swappable Memory (swapMem) operating primitive introduced by DejaVuzz. Instead of placing all sequences in a single static linear layout, swapMem defines a swappable region of the address space whose contents can be replaced at runtime. The fuzzer stages different instruction sequences (e.g., predictor-training sequence (1) or (2), followed by transient sequence (3)) and swaps them in and out as needed. After swapping a new sequence into the swappable region, the design-under-test jumps to its entry and continues execution. This time-multiplexes the address space among different semantics and:

  • Frees the full address space for training sequences, allowing training branches to be placed at the exact addresses the transient sequence will later jump to (avoiding W1-type conflicts).
  • Removes training instructions from the transient sequence's view entirely (avoiding W1- and W3-type conflicts).
  • Allows conflicted register assignments to be relocated to other available addresses, such as 0x0, to resolve W2-type conflicts.
  • Enables exploration of multiple training effects by trying different combinations (e.g., (1)(3) vs. (2)(3)) to identify which training sequence actually contributes to triggering the transient window.

The primitive is described as acting as an isolation primitive that enhances microarchitectural controllability, with the explicit claim that "the swapMem enhances microarchitectural controllability as the isolation primitive, resolving address space conflicts."

Significance

Address space conflict is therefore a unifying structural problem that arises whenever a tool must simultaneously (a) produce or preserve specific memory contents at specific addresses and (b) observe or influence execution from inside the same address space. In fuzzing, it constrains the diversity of transient windows a fuzzer can generate; in binary analysis, it limits which exploits and evasive samples can be reproduced under instrumentation. The two domains have proposed analogous mitigations—time-sharing the address space (DejaVuzz's swapMem) or relocating the analyzer out of the target's address space (HALF's kernel-assisted hollowing)—both of which decouple the analyzer's memory footprint from the target's layout.

CITATIONS

7 sources
7 citations
[1] In processor fuzzing, the root cause of the difficulty in arranging training and transient instruction sequences linearly is the address space conflict: training instructions may occupy addresses needed for transient windows, and different training instructions cannot be tested at the same address. DejaVuzz: Disclosing Transient Execution Bugs with Dynamic Swappable Memory and Differential Information Flow Tracking Assisted Processor Fuzzing
[2] Three categories of conflicts arise when training and transient sequences share a linear address space: W1 (branch-training overlapping the transient trigger address), W2 (training conflicting with register-setup assignments), and W3 (transient and training intermixed so that substitution invalidates the window). DejaVuzz: Disclosing Transient Execution Bugs with Dynamic Swappable Memory and Differential Information Flow Tracking Assisted Processor Fuzzing
[3] Existing fuzzers are limited by address space conflicts: template-based fuzzers (IntroSpectre, TEESec) cover only specific templates, while random-based fuzzers such as SpecDoctor must discard transient windows containing backward jumps. DejaVuzz: Disclosing Transient Execution Bugs with Dynamic Swappable Memory and Differential Information Flow Tracking Assisted Processor Fuzzing
[4] Dynamic Swappable Memory (swapMem) resolves address space conflicts by defining a swappable region whose contents are replaced at runtime, allowing the full address space to be reused across training and transient sequences and enabling exploration of different training effects. DejaVuzz: Disclosing Transient Execution Bugs with Dynamic Swappable Memory and Differential Information Flow Tracking Assisted Processor Fuzzing
[5] swapMem enhances microarchitectural controllability as the isolation primitive that resolves address space conflicts; switching instruction sequences on demand at different stages allows the fuzzer to control the microarchitecture to trigger desired transient execution behaviors. DejaVuzz: Disclosing Transient Execution Bugs with Dynamic Swappable Memory and Differential Information Flow Tracking Assisted Processor Fuzzing
[6] In dynamic binary analysis, traditional in-process analysis tools trigger severe address-space conflicts that disrupt the native memory layout of the target, causing layout-sensitive exploits and evasive malware to deviate from their intended execution paths or fail entirely. HALF: Hollowing Analysis Framework for Binary Programs with Kernel Module Assistance
[7] DejaVuzz introduces swapMem as a dynamic swappable memory model and differential information flow tracking as its two novel operating primitives, with the former addressing microarchitectural controllability by resolving conflicts between instruction sequences through time-sharing the address space. DejaVuzz: Disclosing Transient Execution Bugs with Dynamic Swappable Memory and Differential Information Flow Tracking Assisted Processor Fuzzing