O que é estouro de buffer de raiz?

1

Eu entendo o que é estouro de buffer. Como a literatura diz, "Um buffer overflow ocorre quando um buffer de tamanho fixo atinge sua capacidade e um processo tenta armazenar dados acima e além desse limite máximo". Então, estou acessando áreas da memória que está além da área de dados, talvez esteja acessando a área do sistema. Corrija-me se estiver errado, por favor, veja a minha pergunta 1 no final.

Além disso, eu acho essa definição, "Um estouro de buffer de raiz é um estouro de buffer destinado a obter privilégios de root para um sistema."

Agora, minhas perguntas são

  1. Como é que um processo de usuário grava na área de memória do sistema? O SO não é capaz de se proteger ou de sua área de memória? Ou pode ser que eu esteja enganado.
  2. Como um estouro de buffer de raiz faz com que um processo atinja privilégios de root para um sistema ? Porque, como o meu conhecimento vai, você precisa executar comandos como su ou sudo ou algo assim e, em seguida, fornecer uma senha sagrada para obter isso.

Sim, eu já dei uma olhada neste pergunta e a excelente resposta .

    
por Masroor 08.03.2013 / 07:12

1 resposta

2
  1. Não escreve na "área do sistema" da memória. Ainda está no espaço de memória do processo do usuário. O que o invasor geralmente tenta gravar na memória do usuário é "shellcode" que basicamente lhe fornece um prompt de comando no sistema. Para um processo não-raiz, isso seria um shell não-raiz. No entanto, essa shell ainda é útil como base para novos ataques. Por exemplo, às vezes há bugs no kernel que permitem que um usuário local atinja privilégios de root. Nesse caso, um shell normal é um ponto de partida direto para um shell raiz.
  2. O termo "estouro de buffer de raiz" provavelmente significa apenas um ataque de estouro de buffer em um programa executado como root. Nesse caso, um ataque bem-sucedido não levaria apenas um shell, mas um shell de root.
por 08.03.2013 / 07:43