Buffer overflows são falhas de segurança comuns para os sistemas de computador que exigem entrada do usuário , como informações de login. Um buffer overflow ocorre quando uma variável no código destina-se a manter as informações enviadas pelo usuário ( como um nome de login) não é grande o suficiente. Neste caso , os dados adicionais inseridos pelo utilizador " transborda " a memória disponível atribuído . Este evento , chamado de "Buffer Overflow ", pode resultar em dados extra substituindo ou modificar dados em outros programas na memória . Este exemplo mostra como um buffer overflow trabalha no nível de código. Coisas que você precisa
editor de texto
/compilador C + C + ou IDE , como o Microsoft Visual Studio
Show Mais instruções
1
Crie o buffer. Siga este exemplo:
# include
int main () {
caractere login_name [20] ;
printf (" Digite o login: ");
scanf ( "% s " , login_name );
printf (" buffer Overflow "); }
este código básico cria uma matriz de caracteres ( uma palavra, essencialmente ) chamou de " login_name " que irá realizar a entrada do usuário . Observe que " login_name " é de apenas 20 caracteres. O programa , em seguida, pede a entrada do usuário e armazena as informações em " login_name . "
2
Porque o estouro de buffer. Compilar o programa e executá-lo. Quando o solicitado, digite um nome de login que excede 20 caracteres. Por exemplo :
Digite login: Esta é uma frase muito tempo que irá invadir o espaço disponível na variável LOGIN
Hit . " Enter". A mensagem de saída será impresso eo programa será finalizado. A variável ultrapassou o espaço de buffer disponível na variável " login_name " . A questão então é: o que aconteceu?
3
Entenda como funciona a memória do computador . Como a entrada do usuário foi armazenado em " login_name , " a informação excesso ( qualquer caractere além de 20 caracteres ) foi escrito em memória além dos limites da variável. Esses dados devem ser armazenados em algum lugar. Neste caso , ela é armazenada na memória imediatamente adjacente ao local onde a variável " login_name " está localizado . Ao passar sobre os limites da variável de login, os dados extras ( intencionalmente ou não) reescreve os dados imediatamente ao lado da variável. Isto significa que o hacker poderia basicamente reescrever o código , e mudar a forma como o código funciona , essencialmente, possuir o sistema .
4
Perceba vulnerabilidades do Linux. Linux é codificado em C /C + + , e muitas das suas principais funcionalidades requer a manipulação de cadeias de caracteres. No entanto, muitas distribuições Linux modernas de proteção contra casos de buffer overflow em pontos onde é necessária a entrada do usuário , seja através de proteção de pilha ou redimensionar dinamicamente arrays de caracteres . Ainda existem vulnerabilidades : o estouro de buffer USB exploit descoberto em 2011, é um exemplo. No caso do USB, uma identificação extra longo USB pode transbordar uma variável do sistema em Linux.