one_gadget RCE
O que é one_gadget RCE?
one_gadget RCEAtalho de exploracao usado em CTFs e na pratica: um unico endereco da libc lanca uma shell, desde que as restricoes de registos e pilha sejam cumpridas.
Um one_gadget e uma sequencia de instrucoes dentro da glibc que acaba por chamar execve("/bin/sh", NULL, NULL) quando atingida com determinadas precondicoes de registos e pilha. A ferramenta one_gadget de david942j varre a libc e lista esses enderecos com as suas restricoes (rax == 0, rsp+0x40 == NULL, etc.). Um atacante que consiga raptar um unico ponteiro de funcao ou endereco de retorno (GOT overwrite, ataques a FILE streams, unsorted bin) obtem assim uma shell sem construir uma cadeia ROP completa. As restricoes devem ser satisfeitas com cuidado, muitas vezes com gadgets auxiliares ou stack pivots. Mitigacoes: constant blinding, CFI, sandboxes seccomp e libcs strippadas/modificadas que removam os gadgets canonicos.
● Exemplos
- 01
Lancar /bin/sh com one_gadget apos um unico GOT overwrite num binario libc-2.31.
- 02
Exploit FILE-stream que corrompe a vtable de _IO_2_1_stdout_ para saltar para um one_gadget viavel.
● Perguntas frequentes
O que é one_gadget RCE?
Atalho de exploracao usado em CTFs e na pratica: um unico endereco da libc lanca uma shell, desde que as restricoes de registos e pilha sejam cumpridas. Pertence à categoria Ataques e ameaças da cibersegurança.
O que significa one_gadget RCE?
Atalho de exploracao usado em CTFs e na pratica: um unico endereco da libc lanca uma shell, desde que as restricoes de registos e pilha sejam cumpridas.
Como funciona one_gadget RCE?
Um one_gadget e uma sequencia de instrucoes dentro da glibc que acaba por chamar execve("/bin/sh", NULL, NULL) quando atingida com determinadas precondicoes de registos e pilha. A ferramenta one_gadget de david942j varre a libc e lista esses enderecos com as suas restricoes (rax == 0, rsp+0x40 == NULL, etc.). Um atacante que consiga raptar um unico ponteiro de funcao ou endereco de retorno (GOT overwrite, ataques a FILE streams, unsorted bin) obtem assim uma shell sem construir uma cadeia ROP completa. As restricoes devem ser satisfeitas com cuidado, muitas vezes com gadgets auxiliares ou stack pivots. Mitigacoes: constant blinding, CFI, sandboxes seccomp e libcs strippadas/modificadas que removam os gadgets canonicos.
Como se defender contra one_gadget RCE?
As defesas contra one_gadget RCE costumam combinar controles técnicos e práticas operacionais, conforme detalhado na definição acima.
Quais são outros nomes para one_gadget RCE?
Nomes alternativos comuns: one_gadget.
● Termos relacionados
- attacks№ 569
Programacao orientada a saltos (JOP)
Tecnica de reutilizacao de codigo (Bletsch et al., 2011) que encadeia gadgets terminados em saltos indiretos atraves de um dispatcher, alternativa ao ROP sem usar ret.
- vulnerabilities№ 667
Corrupção de memória
Termo abrangente para vulnerabilidades em que um programa escreve fora dos limites previstos, comprometendo segurança de tipos, fluxo de controlo ou integridade de dados.
- vulnerabilities№ 131
Buffer overflow
Falha de segurança de memória em que um programa escreve para além do fim de um buffer alocado, corrompendo memória adjacente e permitindo frequentemente execução de código.