Seguranca de memoria
O que é Seguranca de memoria?
Seguranca de memoriaA 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.
A seguranca de memoria abrange a seguranca espacial (sem acessos fora dos limites), temporal (sem use-after-free nem double-free), de tipos e de inicializacao. C e C++ nao sao memory safe por omissao e estao na origem da maioria dos CVE criticos via estouros, UAF e confusao de tipos. Dados recentes da Microsoft, do Google Project Zero e do relatorio ONCD 2024 dos EUA atribuem 60-70 por cento das vulnerabilidades graves em grandes bases C/C++ a bugs de memoria. Mitigacoes (ASLR, DEP, CFI, sanitizers) aumentam o custo da exploracao, mas so eliminar os bugs na origem, com linguagens memory safe ou subconjuntos formalmente verificados, e solucao definitiva.
● Exemplos
- 01
Uma escrita fora dos limites converte um chunk de heap num objeto controlado pelo atacante.
- 02
Um use-after-free liberta um objeto JavaScript cujo ponteiro fica retido na cache do JIT.
● Perguntas frequentes
O que é 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. Pertence à categoria Segurança de aplicações da cibersegurança.
O que significa 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.
Como funciona Seguranca de memoria?
A seguranca de memoria abrange a seguranca espacial (sem acessos fora dos limites), temporal (sem use-after-free nem double-free), de tipos e de inicializacao. C e C++ nao sao memory safe por omissao e estao na origem da maioria dos CVE criticos via estouros, UAF e confusao de tipos. Dados recentes da Microsoft, do Google Project Zero e do relatorio ONCD 2024 dos EUA atribuem 60-70 por cento das vulnerabilidades graves em grandes bases C/C++ a bugs de memoria. Mitigacoes (ASLR, DEP, CFI, sanitizers) aumentam o custo da exploracao, mas so eliminar os bugs na origem, com linguagens memory safe ou subconjuntos formalmente verificados, e solucao definitiva.
Como se defender contra Seguranca de memoria?
As defesas contra Seguranca de memoria costumam combinar controles técnicos e práticas operacionais, conforme detalhado na definição acima.
Quais são outros nomes para Seguranca de memoria?
Nomes alternativos comuns: Bugs de seguranca de memoria.
● Termos relacionados
- appsec№ 671
Linguagens com seguranca de memoria
Linguagens com seguranca de memoria como Rust, Go, Swift, Java e C# impedem os erros espaciais e temporais de memoria que originam a maioria das vulnerabilidades exploraveis em C e C++.
- appsec№ 953
Propriedades de seguranca do Rust
O Rust impoe seguranca de memoria e de threads em tempo de compilacao via ownership, borrowing e lifetimes, eliminando UAF e data races sem garbage collector.
- appsec№ 217
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.
- 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№ 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.
● Veja também
- № 1095Canario de pilha
- № 1028Shadow stack
- № 581KASLR
- № 1058SMEP / SMAP