Large Bin Attack
Last updated
Last updated
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Para mais informações sobre o que é um large bin, confira esta página:
Bins & Memory AllocationsÉ possível encontrar um ótimo exemplo em how2heap - large bin attack.
Basicamente, aqui você pode ver como, na versão "atual" mais recente do glibc (2.35), não é verificado: P->bk_nextsize
permitindo modificar um endereço arbitrário com o valor de um chunk de large bin se certas condições forem atendidas.
Nesse exemplo, você pode encontrar as seguintes condições:
Um chunk grande é alocado
Um chunk grande menor que o primeiro, mas no mesmo índice, é alocado
Deve ser menor, então no bin deve ir primeiro
(Um chunk para evitar a fusão com o chunk superior é criado)
Então, o primeiro chunk grande é liberado e um novo chunk maior que ele é alocado -> Chunk1 vai para o large bin
Então, o segundo chunk grande é liberado
Agora, a vulnerabilidade: O atacante pode modificar chunk1->bk_nextsize
para [target-0x20]
Então, um chunk maior que o chunk 2 é alocado, assim o chunk2 é inserido no large bin sobrescrevendo o endereço chunk1->bk_nextsize->fd_nextsize
com o endereço do chunk2
Existem outros cenários potenciais, a questão é adicionar ao large bin um chunk que seja menor que um chunk X atual no bin, então ele precisa ser inserido logo antes dele no bin, e precisamos ser capazes de modificar o bk_nextsize
de X, pois é lá que o endereço do chunk menor será escrito.
Este é o código relevante do malloc. Comentários foram adicionados para entender melhor como o endereço foi sobrescrito:
Isso pode ser usado para sobrescrever a variável global global_max_fast
da libc para então explorar um ataque de fast bin com chunks maiores.
Você pode encontrar outra ótima explicação desse ataque em guyinatuxedo.
Ataque de large bin na mesma situação em que aparece em how2heap.
A primitiva de escrita é mais complexa, porque global_max_fast
é inútil aqui.
FSOP é necessário para finalizar a exploração.
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)