Eu sei que o ponteiro de pilha pode ser usado para encontrar objetos alocados na pilha, mas como a CPU encontra objetos globais/estáticos? Pelo que pude perceber pela desmontagem, ela usa endereçamento absoluto/imediato, onde a instrução lea recebe um valor codificado, mas isso não quebraria por causa do ASLR?
A CPU não encontra nada. Ela apenas executa as instruções do código de máquina. A CPU não sabe nada sobre os objetos e sua duração de armazenamento.
O vinculador está inserindo os endereços corretos no executável. Executáveis também costumam conter tabelas de realocação e, antes da execução, os bytes na memória que contêm endereços em código de máquina são definidos com os valores corretos pelo sistema operacional.
Essa é a função das tabelas de realocação. Elas contêm todos os endereços que precisam ser alterados.