Digite para filtrar os verbetes do Glossário.

    Redes e segurança · Formação DevOps

    O que é Use-after-free?

    Use-after-free ocorre quando o programa usa memória já liberada. Entenda a falha, o que o AddressSanitizer mostra e por que não equivale a execução remota.

    Também chamado de: UAF, uso após liberação

    O que é use-after-free

    Use-after-free é o acesso a uma região de memória depois que o programa a liberou. O código continua com o endereço e o utiliza como se o conteúdo ainda estivesse válido. O efeito depende do que ocupa aquela região no momento do acesso.

    A falha aparece em código que gerencia a memória manualmente. Um objeto é liberado, e outra parte do programa mantém uma referência a ele. Quando essa referência é usada, o resultado pode ser desde um valor incorreto até o encerramento do processo.

    Como a falha aparece

    O caminho comum envolve uma condição de erro. O programa libera um recurso e segue adiante sem limpar a referência. Outra função, mais tarde, tenta ler ou gravar no mesmo endereço.

    Em um servidor, a região liberada pode ser reutilizada por outra requisição. Se o programa volta a acessá-la, o conteúdo pode pertencer a outra operação. Essa reutilização explica por que o defeito é difícil de reproduzir em um teste simples.

    O que um relatório mostra

    O AddressSanitizer interrompe o programa ao detectar o acesso inválido e apresenta duas pilhas: a da liberação e a do uso. O relatório permite localizar a função que liberou a memória e o caminho que voltou a utilizá-la.

    Um relatório de acesso inválido não demonstra execução remota. Ele demonstra que o programa leu ou gravou em uma região que já não pertencia a ele. A demonstração de execução exige comprovar também o controle do fluxo.

    Por que não equivale a execução remota

    A execução remota exige que o atacante controle o que o programa executa. O use-after-free cria uma condição que pode levar a esse controle, mas o caminho depende do conteúdo da memória reutilizada e das proteções do ambiente.

    Relatórios de laboratório precisam indicar o resultado observado. Um encerramento de processo é diferente de um acesso indevido e de uma execução de código. Tratar os três como o mesmo resultado distorce a avaliação.

    Como reduzir a ocorrência

    Defina a propriedade de cada região de memória e limpe a referência depois da liberação. Use abstrações que acompanhem o ciclo de vida do objeto. Execute os testes com sanitizadores e inclua os caminhos de erro, que costumam concentrar esse tipo de falha.

    A memória do processo e o bug original precisam ser examinados juntos. Para investigar uma falha nativa com relatório de memória, o Desenvolvimento Colaborativo da Dev Side Studio permite revisar o código e a execução durante a sessão.

    Dúvidas frequentes

    Perguntas frequentes sobre Use-after-free

    Todo use-after-free permite execução remota?
    Não. O acesso à memória liberada pode causar falha, leitura indevida ou comportamento imprevisível. A execução de código depende do conteúdo da memória e do controle sobre o fluxo do programa.
    O que o AddressSanitizer mostra?
    Mostra o acesso inválido, a pilha da liberação e a pilha do uso. O relatório permite localizar a região e o caminho que levou ao acesso.
    Como evitar a falha?
    Defina o dono de cada região de memória, use referências que acompanhem o ciclo de vida e execute testes com sanitizadores. A revisão do código também precisa conferir os caminhos de erro.
    A falha é exclusiva de C e C++?
    Aparece com mais frequência em código com gerenciamento manual de memória, como C e C++. Linguagens com coleta automática podem apresentar falhas equivalentes em bibliotecas nativas.

    Para continuar

    Recursos relacionados

    Aplicação na formação

    Formação DevOps

    A falha aparece em componentes nativos e exige leitura do relatório antes de concluir o alcance.

    Conhecer a formação
    Capa da Formação DevOps

    Fontes consultadas

    Referências deste verbete

    Este verbete ajudou você?

    Planos Promovaweb

    Tire seus projetos do papel

    O Plano Martech cobre automação e atendimento. O Plano IA Makers acrescenta desenvolvimento com IA, enquanto o Plano Founders trata de gestão de negócios. Todos são anuais.

    Plano Martech

    Para conectar automação, marketing e atendimento com infraestrutura própria.

    R$ 897

    R$ 597/ano

    • Grade de automação, atendimento, marketing e análise de indicadores
    • Instalador Exclusivo Promovaweb
    • n8n, Evolution API, Chatwoot e Mautic
    • Trilha DevOps incluída
    • Encontros ao vivo (terça e quinta)
    • Comunidade e acompanhamento
    Conhecer o plano

    Plano Founders

    Plano anual para fazer um projeto de tecnologia avançar, com 90 dias de mentoria intensiva. R$ 1.997 à vista ou até 10x de R$ 219 no cartão.

    R$ 1.997/ano

    • 12 meses de acesso ao Founders
    • 90 dias de mentoria intensiva, um encontro por dia útil
    • Dia de conteúdo (terça e quinta) e War Room (segunda, quarta e sexta)
    • Encontro semanal em grupo após a fase intensiva
    • Formação Vibe Coding incluída no plano anual
    • Consultoria individual de até duas horas (bônus)
    Conhecer o plano