relatório 2 estouro de buffer

2
Relatório 2: Evitando Estouro de Buffer Inicialmente o Buffer é uma região da memória física utilizada para armazenar temporariamente os dados enquanto eles estão sendo movidos de um lugar ao outro. Os aplicativos reservam áreas da memória, ou buffers, para o uso como armazenamento, reservando frequentemente uma quantidade finita de memória para um buffer. Um estouro de buffer existe quando um aplicativo tenta armazenar mais dados do que um buffer de tamanho fixo pode acomodar. Os ataques de estouro de buffer ocorrem quando um invasor consegue enviar dados além da capacidade do buffer de tamanho fixo do aplicativo e esse aplicativo não faz uma verificação para garantir que isso não aconteça. Ao estourar um buffer com um código executável, um invasor pode fazer com que um aplicativo execute ações inesperadas e, muitas vezes, maliciosas, usando os mesmos privilégios concedidos ao aplicativo. Visualizando a estrutura do buffer como uma pilha, ao exceder sua capacidade de armazenamento de dados, ocorre o “estouro”. E este é o principal problema da pilha, uma vez que o atacante consegue se privilegiar do programa alvo alterando seu endereço de retorno para um código malicioso. O sucesso num ataque desse tipo permite ao atacante desde danos como o travamento de uma máquina à vantagens de um superusuário. Para evitar o estouro de Buffer, é necessário se atentar ao tamanho reservado para receber strings. Pois se for colocado um valor maior de string do que o programa possa aguentar, certamente será explorada essa vulnerabilidade , e o ataque obterá êxito. É necessário reforçar a linha de código responsável pela alocação da memoria, deixando uma função clara e objetiva na qual determina o tamanho do buffer, caso aja uma tentativa de estouro, como o programa reagira com o transbordo de dados? Irá direcionar para outro mecanismo para delegar esses dados? O programa só irá absorver a quantidade de bits declarados e nada além? Certamente este é um dos pontos mais importantes para se manter a integridade dos dados e serviços sistêmicos acordado, analisar

Upload: larissa

Post on 15-Jan-2016

216 views

Category:

Documents


0 download

DESCRIPTION

Estouro de buffer, segurança informação e banco de dados

TRANSCRIPT

Page 1: Relatório 2 Estouro de Buffer

Relatório 2: Evitando Estouro de Buffer

Inicialmente o Buffer é uma região da memória física utilizada para armazenar temporariamente os dados enquanto eles estão sendo movidos de um lugar ao outro.

Os aplicativos reservam áreas da memória, ou buffers, para o uso como armazenamento, reservando frequentemente uma quantidade finita de memória para um buffer. Um estouro de buffer existe quando um aplicativo tenta armazenar mais dados do que um buffer de tamanho fixo pode acomodar. Os ataques de estouro de buffer ocorrem quando um invasor consegue enviar dados além da capacidade do buffer de tamanho fixo do aplicativo e esse aplicativo não faz uma verificação para garantir que isso não aconteça. Ao estourar um buffer com um código executável, um invasor pode fazer com que um aplicativo execute ações inesperadas e, muitas vezes, maliciosas, usando os mesmos privilégios concedidos ao aplicativo.

Visualizando a estrutura do buffer como uma pilha, ao exceder sua capacidade de armazenamento de dados, ocorre o “estouro”. E este é o principal problema da pilha, uma vez que o atacante consegue se privilegiar do programa alvo alterando seu endereço de retorno para um código malicioso. O sucesso num ataque desse tipo permite ao atacante desde danos como o travamento de uma máquina à vantagens de um superusuário.

Para evitar o estouro de Buffer, é necessário se atentar ao tamanho reservado para receber strings. Pois se for colocado um valor maior de string do que o programa possa aguentar, certamente será explorada essa vulnerabilidade , e o ataque obterá êxito.

É necessário reforçar a linha de código responsável pela alocação da memoria, deixando uma função clara e objetiva na qual determina o tamanho do buffer, caso aja uma tentativa de estouro, como o programa reagira com o transbordo de dados? Irá direcionar para outro mecanismo para delegar esses dados? O programa só irá absorver a quantidade de bits declarados e nada além?

Certamente este é um dos pontos mais importantes para se manter a integridade dos dados e serviços sistêmicos acordado, analisar a linguagem escolhida para desenvolvimento, minuciar seus recursos e traçar possíveis falhas de segurança.

Para se evitar esse tipo de ataque, vamos destacar 5 erros comuns no desenvolvimento da aplicação.

-Não entender a tecnologia;

Se o desenvolvedor não dominar a ferramenta utilizada para desenvolvimento do sistema, obviamente que seu trabalho não será bom e satisfatório. É de extrema importância conhecer a linguagem escolhida e caso aja ferramentas adicionas, para que se possa prever e prevenir possíveis falhas e vulnerabilidades do mesmo.

-Não entender o negócio;

Page 2: Relatório 2 Estouro de Buffer

Se você não conhecer o ramo de atuação de seu cliente, como moldar um projeto para ele? Como colocar esse cliente para disputar no mercado virtual, sem informações necessárias, sem analisar o tipo de mercado que ele quer ingressar, e o que a concorrência utiliza de atrativos para obter clientes e reconhecimento. É inviável não se fazer um levantamento adequado de mercado, necessidades e foco do sistema/aplicação.

-Inconsistência na validação de entrada;

-Subestimar a ameaça;

-Subestimar o usuário;

.