Bem vindo ao SOS Designers

Faça o seu cadastro gratuito no Portal SOS Designers e tenha um acesso personalizado.

Empresas

Cadastre gratuitamente suas vagas, crie sua propria Lista de Curriculos Favoritos, e tenha um acesso personalizado.

Usuarios

Cadastre gratuitamente seu curriculo, crie sua propria Lista de Noticias Favoritas e tenha um acesso personalizado.

Área de Empresas | Vagas

Área de acesso a empresas cadastradas que desejam postar vagas de empregos no Portal e pesquisar curriculos.

Cadastre-se gratuitamente
Esqueceu a sua senha?

Área de Usuarios | Curriculos

Área do Usuario que deseja cadastrar seu curriculo e pesquisar vagas.



Cadastre-se gratuitamente
Esqueceu a sua senha?


Redes Sociais
Siga o Portal SOS Designers no Twitter Siga o Portal SOS Designers no Facebook

Segurança


Você está aqui: Home » Segurança » Plano de Vulnerabilidades

Plano de Vulnerabilidades


Pesquisar no Portal SOS Designers





Tempo Real



Participe da Comunidade SOS Designers

Siga o SOS Designers








SOS Designers

Uma solução segura é aquela que identifica todas as suas possíveis vulnerabilidades, implementando mecanismos que tenham o objetivo de reduzir qualquer tipo de danos caso ela seja vitima de um ataque. As vulnerabilidades estão espalhadas em todas as camadas da solução – Rede, Servidores e Aplicação:
  • Rede - roteadores, firewall e switch.
  • Servidores - HTTP, Componentes Web, Componentes de Negócio e SGDB.
  • Aplicação - Entrada de dados, autenticação, autorização, configurações, acesso a dados, manipulação de parâmetros, exceções e auditoria.


Qualquer fraqueza em qualquer ponto da solução pode ser explorada por um atacante. Dentro desse assunto, hoje eu gostaria de publicar meu “Plano de Vulnerabilidades” para aplicações web em nível de aplicação. Ou seja, é o levantamento resumido da maioria  das possíveis vulnerabilidades que os arquitetos, projetistas e programadores devem estar cientes no momento de construir suas aplicações. As camadas de rede e servidores são de responsabilidade de infra, ficando assim fora do escopo deste artigo.


Cada vulnerabilidades de aplicação esta classificada de acordo sua aplicabilidade, no qual eu apresento uma breve descrição e as possíveis soluções adotadas. Para um melhor entendimento eu retirei qualquer detalhe de tecnologia/framework, fazendo com que o leitor possa facilmente entender e assim tomar medidas cabíveis dentro do seu próprio projeto. O objetivo desse plano é ser usado como um “pente fino”, no qual qualquer desenvolvedor possa sistematicamente refinar sua solução antes de coloca-la em produção.


ENTRADA DE DADOS:


ATAQUE:
Buffer Overflow
DESCRIÇÃO: Consiste no atacante explorar o sistema de entrada de informações do sistema enviando dados maliciosos.
SOLUÇÃO: Usar uma política de validação sistemática relacionado com: tipo de dados, tamanho, formato e intervalo.


ATAQUE:
XSS Script
DESCRIÇÃO: Consiste no atacante explorar o sistema de entrada de informações do sistema enviando comandos maliciosos em: DHTML e JavaScript para serem executados nos navegadores.
SOLUÇÃO: Usar uma política de validação sistemática relacionado com: tipo de dados, tamanho, formato, intervalo e para informações de natureza texto puras validar e rejeitar códigos maliciosos. Defina sua “White List”.


ATAQUE:
XSS Script
DESCRIÇÃO: Consiste no atacante explorar o sistema de entrada de informações do sistema enviando comandos maliciosos em: DHTML e JavaScript para serem executados nos navegadores .
SOLUÇÃO: Todos os dados de sistema ou do banco de dados devem ser interpretados e renderizados nas páginas como texto e não como tecnologias de apresentação.


ATAQUE:
SQL Injection
DESCRIÇÃO: Consiste no atacante explorar o sistema de entrada de informações do sistema enviando comandos SQL maliciosos.
SOLUÇÃO: Utilizar somente comandos SQL pré-compilados na camada de persistência.


ATAQUE:
JavaScript Off
DESCRIÇÃO: Consiste no atacante desviar das validações na camada de visão, desligando JavaScript durante as requisições.
SOLUÇÃO: As validações podem ser feitas na maquina do cliente (navegador), mas devem ser replicadas ou somente centralizadas na camada visão ou de negócio da aplicação. Nunca confie nos dados enviados pelo cliente ou do aqueles dentro do protocolo HTTP.


AUTENTICAÇÃO:


ATAQUE:
Brute Force
DESCRIÇÃO: Consiste no atacante utilizar de recursos automatizados para descobrir senhas de usuários. O atacante usa uma “base de senhas” pré-configuradas.
SOLUÇÃO: 1 – Política de senhas fortes.
2 – Bloquear logicamente o usuário após exceder o numero limite de tentativas.

ATAQUE: Dictionary
DESCRIÇÃO: 1 – Política de senhas fortes.
2 – Consiste no atacante utilizar de recursos automatizados para descobrir senhas de usuários. O atacante usa uma base de informações previamente configuradas de acordo com o perfil do usuário, juntamente com algum algoritmo computacional que gera combinações variáveis de tentativas.
SOLUÇÃO: Bloquear logicamente o usuário após exceder o numero limite de tentativas


ATAQUE:
Session Hijacking
DESCRIÇÃO: Consiste no atacante de posse de determinadas ferramentas seqüestrar o identificador de sessão do usuário durante o trafico HTTP.
SOLUÇÃO: 1 – Usar canal criptografado HTTPS.
2 – Disponibilizar nas aplicações mecanismos para que o usuário autenticado possa terminar a sessão, colocando neles o habito de usar.
3 – Reduzir ao máximo o tempo de duração da sessão.


ATAQUE:
Session Replay
DESCRIÇÃO: Consiste no atacante conseguir de alguma forma (vírus, trojan, horse ou worms) o identificador da sessão do usuário autenticado. O vírus instalado no PC do usuário autenticado envia o identificador para o atacante que esta fora da rede do usuário vitima.
SOLUÇÃO: O sistema deve vincular a sessão do usuário autenticado com o seu IP origem e verificar a cada requisição HTTP.


ATAQUE:
Session Replay
DESCRIÇÃO: Consiste no atacante conseguir de alguma forma (vírus, trojan, horse ou worms) o identificador da sessão do usuário autenticado. O vírus instalado no PC do usuário autenticado envia o identificador para o atacante que esta dentro da rede do usuário vitima.
SOLUÇÃO: O sistema deve requisitar uma senha de identificação (a mesma de senha de login ou outra senha de operação, podendo ser um cartão de senhas ou token randômicos) a cada operação critica de negócio.


ATAQUE:
Key Logger
DESCRIÇÃO: Consiste no atacante conseguir de alguma forma (vírus, trojan, horse ou worms) a senha do usuário autenticado. O vírus instalado no PC do usuário intercepta todas as teclas pressionadas no teclando durante a utilização do sistema.
SOLUÇÃO: O sistema deve requisitar a senha de autenticação de forma que não use o teclado, oferecendo um teclado virtual.


ATAQUE:
Mouse Logger
DESCRIÇÃO: Consiste no atacante conseguir de alguma forma (vírus, trojan, horse ou worms) a senha do usuário autenticado. O vírus instalado no PC do usuário intercepta e copia os pedaços das áreas visuais pressionadas pelo mouse.
SOLUÇÃO: 1 – O teclado virtual oferecido pelo sistema deve ser embaralhado a cada acesso.
2 – As informações do teclado virtual (letras, números ou qualquer caracteres) oferecido pelo sistema devem ser apagadas quando o usuário passar mouse sobre eles.


AUTORIZAÇÃO:


ATAQUE:
Disclouse of Confidential Data e Data Tampering
DESCRIÇÃO: Consiste no atacante sendo um “usuário autenticado ou não” ter acesso a recursos, processos ou informações restritas.
SOLUÇÃO: Fazer a validação de “perfil de acesso” no momento que cada recursos, processos ou informações forem requisitados. Opcionalmente, pode também ser inibido o mecanismo de acesso (links, menus, botões, etc) que faz a ponte de invocação e execução.


ATAQUE:
Worflow Undue
DESCRIÇÃO: Consiste no usuário furar uma seqüência de páginas pertencente a um “workflow de negócio” através de bookmark.
SOLUÇÃO: Usar o padrão “Syncronized Token” para controlar todos os workflows existentes na aplicação.


ATAQUE:
Overlapping Transaction
DESCRIÇÃO: Consiste no usuário sobrepor informações de outro usuário indevidamento.
SOLUÇÃO: Identificar e aplicação a abordagem de “Optimistic lock” nestas transações.


ACESSO A DADOS:


ATAQUE:
Data Tampering
DESCRIÇÃO: Consiste no atacante de posse de determinadas ferramentas alterar as informações dentro dos pacotes durante o trafegado HTTP.
SOLUÇÃO: Usar canal criptografado HTTPS.


MANIPULAÇÃO DE PARÂMETROS:


ATAQUE:
Query String Manipulation
DESCRIÇÃO: Consiste no atacante enviar informações maliciosas dentro da URL do HTTP GET.
SOLUÇÃO: 1 – Criptografe os dados do GET.
2 – Faça validações em todos os dados vindouros do GET.
3 – Ou nunca use esta abordagem, armazenando as informações na sessão do usuário.


ATAQUE:
Form Field Manipulation
DESCRIÇÃO: Consiste no atacante enviar informações maliciosas dentro de campos HTML hidden e read-only, não esperado pela aplicação.
SOLUÇÃO: 1 – Repita sempre que necessário as validações de campos deste tipo cada interação HTTP.
2 – Ou nunca use esta abordagem, armazenando as informações na sessão do usuário.


ATAQUE:
Cookie Manipulation
DESCRIÇÃO: Consiste no atacante enviar informações maliciosas dentro dos cookies usados pela aplicação.
SOLUÇÃO: 1 – Use criptografia HMAC cookie para guardar valores importantes para aplicação.
2 – Use cookies para guardar informações que não tenham impacto na aplicação.
3 – Ou nunca use esta abordagem, armazenando as informações na sessão do usuário.


ATAQUE:
Header Manipulation
DESCRIÇÃO: Consiste no atacante enviar ou manipular informações dentro do HTTP Header.
SOLUÇÃO: Nunca baseie decisões de sistema nos headers HTTP por que eles podem ser facilmente falsificados.


GERENCIAMETO DE EXCEÇÕES


ATAQUE:
Implementation Details
DESCRIÇÃO: Consiste na aplicação expor detalhes infra-estruturais – fornecedores, versão de plataformas, nomes de servidores, comandos SQL, configurações de banco de dados etc… que podem ser usados de diversas formas por qualquer atacante.
SOLUÇÃO: A aplicação deve apresentar uma mensagem genérica de exceção quando qualquer problema de runtime vier acontecer, usando a abordagem de “Logger” para registrar os determinados de erros técnicos e infra-estruturais.


AUDITORIA E LOGGING


ATAQUE:
Falta de mecanismo para auditoria
DESCRIÇÃO: Consiste no usuários malicioso ou não operar na aplicação na qual esta desprovida qualquer tipo de auditoria.
SOLUÇÃO: A aplicação deve usar algum mecanismo de auditoria que registre as operações criticas, gerando no mínimo os dados de usuário, processo, data/hora.


Para aqueles interessados em maiores informações sobre segurança em aplicações web, eu sugiro a leitura do PDF Improving Web Application Security – Threats and Countermeasures da Microsoft. O artigo fica aberto para outras sugestões de vulnerabilidades e contra-medidas.

“Quem teme ao homem arma ciladas, mas o que confia no SENHOR está seguro.” Provérbios 29:25

Sobre o Colunista:

Fernando Franzini


Profissão: Projetista de Software e Consultor Java

Descrição: Fernando Franzini
Projetista de Software e Consultor Java
Cambridge PET, SCJA, SCJP, SCJD, SCWCD, SCBCD, SCMAD.
W3School XML, DOM, XSLT, HTML, XHTML, CSS, JavaScript, HTML DOM Developer.
Java Blog - http://fernandofranzini.wordpress.com

Deixe seu comentário:





© Copyright 2002-2014
Portal SOS Designers
Webmaster: Luiz Antonio Bovi