faz a memória zero do Linux liberada pelos aplicativos

3

Eu estava pensando em tornar o Linux mais seguro. Posso escrever código que pegue um monte de memória e passe por eles procurando por coisas "interessantes"?

    main()
    {
    char *p = (char *)malloc(10000000);

    scan_for_stuff(p,10000000);
    }

Eu imagino que seria difícil encontrar coisas interessantes desse jeito, mas você nunca sabe ...

    
por Bing Bang 26.03.2015 / 21:33

2 respostas

2

Não, o Linux não zera seu menory após liberá-lo. A maioria das bibliotecas implementa o zeramento da memória durante a alocação, mas isso depende da linguagem de programação e pode ser substituído.

Acessar memória "quente" não parece ser um vetor de ataque para mim. Para explorar isso, você precisará de privilégios que possam ser usados de maneiras muito mais eficazes. Se você decidir reescrever a função malloc, você precisa de acesso para substituir a biblioteca glibc.

Por fim, gostaria de mencionar o vetor de ataque de inicialização a frio . Eu tentei recentemente no meu próprio laptop com resultados impressionantes. Você precisa de acesso físico (o que não é necessário no seu caso), mas na verdade você não precisa fazer nada no computador; Portanto, quase não há chance de deixar uma trilha de auditoria de software.

    
por 27.03.2015 / 22:58
4

Como malloc é apenas uma função da biblioteca, depende da sua implementação de malloc . Mas não há uma chamada de sistema que possa ser usada para acessar páginas que pertençam a outro processo, a menos que esse outro processo tenha feito alguma coisa para fornecer acesso a elas.

As implementações típicas de malloc obtêm suas páginas usando sbrk ou mapeando /dev/zero , sendo que ambas fornecem apenas páginas zeradas. Se você obtiver páginas não zeradas de um típico malloc , será apenas porque o seu processo colocou algo nelas.

Se houvesse alguma maneira de um processo obter acesso às páginas descartadas de outro processo, cada processo teria que zerar suas páginas antes de descartá-las e todos os tipos de ataques seriam possíveis quando você causasse a falha de um processo e tentasse obter suas páginas descartadas. Faz muito mais sentido não fornecer um processo para obter páginas não zeradas que foram modificadas pela última vez por outro processo, a menos que o primeiro processo tenha solicitado especificamente esse comportamento.

    
por 26.03.2015 / 23:21

Tags