Integridade do fluxo de controlo
O que é Integridade do fluxo de controlo?
Integridade do fluxo de controloA integridade do fluxo de controlo (CFI) restringe chamadas indiretas e retornos a um conjunto pre-calculado de destinos legitimos, bloqueando ROP e JOP.
CFI foi formalizada por Abadi, Budiu, Erlingsson e Ligatti em 2005. O compilador constroi o grafo de fluxo de controlo, atribui a cada chamada indireta um conjunto de destinos validos e instrumenta os locais de chamada e retorno com verificacoes em tempo de execucao. Implementacoes praticas incluem LLVM CFI (arestas diretas via IDs por tipo), Microsoft Control Flow Guard, kCFI no kernel Linux e variantes assistidas por hardware como Intel CET-IBT e Arm BTI para saltos indiretos mais shadow stacks para retornos. CFI derrota ROP/JOP porque a cadeia de gadgets viola os conjuntos de arestas legitimas. As maiores limitacoes sao classes de equivalencia largas em C/C++ e interfaces incompativeis.
● Exemplos
- 01
Microsoft Control Flow Guard bloqueia chamada indireta via vtable corrompida no Edge.
- 02
O kernel Linux 6.x com kCFI impede uma cadeia ROP num driver vulneravel.
● Perguntas frequentes
O que é Integridade do fluxo de controlo?
A integridade do fluxo de controlo (CFI) restringe chamadas indiretas e retornos a um conjunto pre-calculado de destinos legitimos, bloqueando ROP e JOP. Pertence à categoria Segurança de aplicações da cibersegurança.
O que significa Integridade do fluxo de controlo?
A integridade do fluxo de controlo (CFI) restringe chamadas indiretas e retornos a um conjunto pre-calculado de destinos legitimos, bloqueando ROP e JOP.
Como funciona Integridade do fluxo de controlo?
CFI foi formalizada por Abadi, Budiu, Erlingsson e Ligatti em 2005. O compilador constroi o grafo de fluxo de controlo, atribui a cada chamada indireta um conjunto de destinos validos e instrumenta os locais de chamada e retorno com verificacoes em tempo de execucao. Implementacoes praticas incluem LLVM CFI (arestas diretas via IDs por tipo), Microsoft Control Flow Guard, kCFI no kernel Linux e variantes assistidas por hardware como Intel CET-IBT e Arm BTI para saltos indiretos mais shadow stacks para retornos. CFI derrota ROP/JOP porque a cadeia de gadgets viola os conjuntos de arestas legitimas. As maiores limitacoes sao classes de equivalencia largas em C/C++ e interfaces incompativeis.
Como se defender contra Integridade do fluxo de controlo?
As defesas contra Integridade do fluxo de controlo costumam combinar controles técnicos e práticas operacionais, conforme detalhado na definição acima.
Quais são outros nomes para Integridade do fluxo de controlo?
Nomes alternativos comuns: CFI, Control Flow Guard, kCFI.
● Termos relacionados
- appsec№ 1028
Shadow stack
Uma shadow stack e uma pilha separada e protegida que guarda copias dos enderecos de retorno para o processador detetar manipulacoes na pilha normal e bloquear ROP.
- appsec№ 545
Intel CET
Intel CET (Control-flow Enforcement Technology) e uma funcionalidade da CPU que combina shadow stack por hardware e Indirect Branch Tracking (IBT) para bloquear ROP, JOP e COP.
- appsec№ 925
Return-Oriented Programming
ROP e uma tecnica de exploracao por reuso de codigo que encadeia pequenas sequencias de instrucoes terminadas em RET para executar computacao arbitraria sem injetar codigo.
- appsec№ 064
ASLR
A aleatorizacao do espaco de enderecos coloca codigo, pilhas, heaps e bibliotecas em posicoes aleatorias da memoria para impedir que um atacante preveja enderecos.
- appsec№ 303
DEP
A prevencao de execucao de dados (DEP / NX / W^X) marca paginas de memoria como nao executaveis para impedir que um atacante execute shellcode injetado em pilha ou heap.
- appsec№ 670
Seguranca de memoria
A seguranca de memoria e a propriedade de um programa nunca ler, escrever ou executar memoria que nao tenha alocado legitimamente, eliminando classes inteiras de vulnerabilidades.