Em vez disso, o primeiro argumento para Fread () está dentro do espaço já alocado, acima dos registros salvos (add x0, sp, 0x10).Na verdade, eles são indiscutivelmente mais suscetíveis porque quase sempre são matrizes, enquanto os locais fixos são frequentemente inteiros, indicadores ou outros tipos para os quais dados de comprimento variável nunca são gravados.A primeira instrução na função, STP x29, x30, [sp, -0x20]!, Diminui o registro do SP por 0x20 (o! Algumas instruções depois, str x3, [x29, 0x18] coloca a guarda de pilha de 8 bytesNa parte superior do espaço da pilha. No endereço mais alto, empurrado diante de qualquer outra coisa) como a maioria dos outros back -ends e compiladores, ele o salva perto da parte inferior do quadro, abaixo das variáveis locais.
Fonte: https://rtx.meta.security/mitigation/2023/09/12/CVE-2023-4039.html