73
Desenvolvimento de Software Seguro

Soft Seguro

Embed Size (px)

DESCRIPTION

Desenvolvimento de software seguro

Citation preview

Desenvolvimento de Software Seguro

InformaçãoInformação compreende qualquer conteúdo que possa ser armazenado ou transferido de algum modo, servindo a determinado propósito e sendo de utilidade ao ser humano.

Trata-se de tudo aquilo que permite a aquisição de conhecimento. Nesse sentido, a informação digital é um dos principais, senão o mais importante, produto da era atual.

Assim, à medida que a informação digital circula pelos mais variados ambientes, percorrendo diversos fluxos de trabalho, ela pode ser armazenada para os mais variados fins, possibilitando ela ser lida, modificada ou até mesmo apagada.

Considerando o cenário apresentado acima, há uma necessidade de oferecer suporte à colaboração de múltiplas organizações e comunidades que muitas vezes têm interesses sobrepostos. Em tal situação, o controle de acesso às informações é um requisito fundamental nos sistemas atuais.

Segurança da Informação

Milhões de corporações, empresas, instituições e usuários domésticos estão usando a Internet para fazer transações bancárias, comércio eletrônico, etc.

Portanto, segurança hoje, é um problema potencialmente crítico.

É extremamente importante discutir segurança de redes de vários ângulos diferentes, ameaças, vulenerabilidade, contramedidas, ferramentas, algoritmos, protocolos e gerência de segurança, a fim de tornar os sistemas e a redes mais seguros.

Jargão de SegurançaAtaque:

Evento que pode comprometer a segurança de um sistema ou uma rede. Um ataque

pode ter ou não sucesso. Um ataque com sucesso caracteriza uma invasão. Um

ataque também pode ser caracterizado por uma ação que tenha um efeito negativo,

Ex: DoS.

Autenticação:

É o processo de se confirmar a identidade de um usuário ou um host, esta pode ser

feita na camada de aplicação (através de uma senha), ou mais complexa, no esquema

desafio-resposta (utilizando algoritmos específicos

Back door:

É um programa escondido, deixado por um intruso, o qual permite futuro acesso à

máquina alvo. Este termo é um sinônimo para um termo mais antigo: trap door.

Jargão de SegurançaBug

Uma falha, ou fraqueza num programa de computador. Veja vulnerabilidade.

Cavalo de Tróia

Uma aplicação ou código que, sem o conhecimento do usuário realiza alguma tarefa que compromete a segurança de um sistema, em geral, esta aplicação se apresenta ao usuário de forma rotineira e legítima, Ex.: um simples jogo que contém código malicioso que envia os dados do usuário para um e-mail específico.

CERT

The Computer Emergency Response Team – Uma organização dedicada a segurança. Seu propósito é dar assistência à redes que foram invadidas ou estão sob ataque. Eles podem ser encontrados em http://www.cert.org

Jargão de Segurança

Certificação

Existem duas definições para este termo. Primeira, certificação pode se referir para o resultado de uma avaliação com sucesso.

Crack

Programa utilizado para quebrar licenças de outros programas. Também pode se

referir a programas utilizados para quebrar senhas.

Cracker

Indivíduo com conhecimentos elevados de computação e segurança, que os utiliza

para fins criminosos, destruição de dados ou interrupção de sistemas. Também pode se referir a programas utilizados para quebrar senhas (Ex. Password Cracker).

Jargão de SegurançaEngenharia Social

Técnica utilizada por hackers e crackers para obter informações interagindo

diretamente com as pessoas.

Exploit

Programas utilizados por hackers e crackers para explorar vulnerabilidades em

determinados sistemas, conseguindo assim, acessos com maior privilégio.

Firewall

Equipamento e/ou software utilizado para controlar as conexões (que entram ou

saem) de uma rede. Eles podem simplesmente filtrar os pacotes baseados em regras

simples, como também fornecer outras funções tais como: NAT, proxy, etc.

Flood

Sobrecarga (em geral, de pacotes) causada por eventos não esperados que causam

lentidão da rede.

Jargão de SegurançaHacker

Indivíduo com conhecimentos elevados de computação e segurança, que os utiliza

para fins de diversão, interesse, emoção. Em geral, hackers não destroem dados,

possuem um código de ética e não buscam ganhos financeiros. O termo hacker é

atualmente adotado pela mídia de forma indiscriminada, se referindo a crackers por

exemplo.

Hacking

É o ato de hackear sistemas, não no sentido único de invadir, mas principalmente de

descobrir como funcionam, e se possuem falhas.

Hijacking

É o assalto de uma sessão, geralmente TCP/IP. O assalto de sessão é uma forma de

obter o controle de uma conexão iniciada por um usuário legítimo. Ao interceptar esta

conexão o “hacker” pode impedir o usuário legítimo de usar o sistema e tomar o seu

lugar.

Jargão de Segurança

Intrusion Detection System -IDS

É um Sistema de Detecção de Intrusão, um software responsável por monitorar uma

rede ou sistema e alertar sobre possíveis invasões.

Invasão

Caracteriza um ataque bem sucedido.

Lammer

É uma palavra que os hackers utilizam para identificar os indivíduos que se acham

hackers, mas estão ainda no estágio inicial de aprendizado.

Scanner

Ferramenta utilizada por hackers ou especialistas em segurança que serve para

“varrer” uma máquina ou uma rede, em busca de portas abertas, informações ou

serviços vulneráveis.

Jargão de SegurançaPhreaking

São os hackers de telefonia, convencional ou celular.

Script Kiddie

É o indivíduo que saiu do estágio de lammer mas que só sabe usar as “receitas de

bolo”, programas prontos e ainda não entende muito bem o que está fazendo.

Sniffer

Ferramenta utilizada por hackers e especialistas em segurança e de rede que serve

para monitorar e gravar pacotes que trafegam pela rede, dependendo do sniffer, é

possível analisar vários dados dos pacotes, analisar protocolos, ver dados específicos

da camada de aplicação, senhas, etc.

Spoofing

É uma forma de manter uma conexão com uma máquina se fazendo passar por outra

na qual ela confie. Um termo muito utilizado é o IP Spoofing, que significa o uso de

vulnerabilidades do Protocolo TCP/IP que permitem a ação descrita acima.

Jargão de SegurançaVírus

O vírus é um programa malicioso que se anexa a outro programa para se espalhar. Ele se reproduz automaticamente, alterando a forma como o computador funciona sem o conhecimento do usuário, além de infectar os computadores pelos quais se desloca. O vírus é transmitido de computador para computador, através de downloads ou através de cópias de CDs, DVDs, pen-drives ou disquetes.

Worm

Enquanto um vírus infecta um programa e necessita deste programa hospedeiro para se alastrar, o worm é um programa completo e não precisa de outro para se propagar. Eles são programas que aproveitam falhas do sistema para se propagar, e se replicar.

O worm, assim como o vírus, é capaz de se auto-reproduzir. Porém, o worm se espalha automaticamente, controlando e obtendo informações de transmissão de dados da máquina infectada. O worm não depende da ação humana para se espalhar, ele é capaz de enviar cópias de si mesmo a todos os contatos da agenda de emails da vítima, por exemplo. O perigo do worm está na capacidade de se replicar em grande volume, infectando centenas de máquinas em poucos minutos.

Jargão de Segurança

Trojan, Trojan Horse

Os Cavalos de Tróia, assim como na história, envia-se um falso presente para a vítima (geralmente por e-mail), que ingenuamente aceita e o executa.

São os cavalos de tróia, programas que são entregues para o usuário de forma

legítima (muitas vezes podem ser coisas interessantes como joguinhos, cartões

virtuais, etc.), mas que internamente realizam ações maliciosas, tais como: gravar

senhas, gravar toques de tecla, e posteriormente armazenar estas informações ou

enviar para outra pessoa.

Diferente do vírus e do worm, ele não se reproduz nem se espalha automaticamente. É necessário que o arquivo seja executado para que o programa seja instalado. Geralmente os cavalos de tróia são anexos de emails ou links de páginas falsas, que quando são abertos instalam o programa mal intencionado.

Jargão de Segurança

VÍRUS DE MACRO

Macro é uma VBA - Visual Basic Application (linguagem script desenvolvida pela

Microsoft), que é interpretada pelo MS OFFICE (Word, Excel, Access, Power

Point), ou seja, podemos fazer pequenos programas que nos ajudem a

trabalhar no Office.

Como por exemplo, criar um botão na barra de ferramentas do Word que permita abrir diretamente a calculadora do Windows. No entanto, nas mãos erradas, se torna uma arma poderosa capaz de causar muitos prejuízos. Agora é muito fácil entender que um Vírus de

Macro nada mais é que um programa escrito em VBA. No momento que abrimos um documento do Word contaminado, esta macro é ativada, podendo apagar documentos

importantes, por exemplo.

Infraestrutura de Segurança

As vulnerabilidades existem, os ataques também existem e crescem a cada dia, tanto

em quantidade quanto em qualidade. Uma infraestrutura de segurança não é só

necessária como obrigatória, devendo existir, além de um investimento específico, um planejamento, uma gerência e uma metodologia bem definida.

É importante lembrar que os seres humanos são o elo mais fraco dessa corrente. Você pode ter os mais perfeitos produtos de segurança, mas eles não serão nada se você não tiver consciência que eles serão gerenciados e utilizados por pessoas, isto nos faz refletir sobre a necessidade de uma infraestrutura de segurança e forma de como montá-la.

Mecanismos de proteção à Informação

• Forte uso de criptografia;

• Incentivo a educação em questões de segurança;

• Disponibilidade de tecnologia da informação com suporte a segurança;

• Infra-estrutura de gestão de segurança;

• Disponibilidade de mecanismos de monitoramento de ataques, capacidade de alerta e ações coordenadas.

Cinco Pilares da Segurança da InformaçãoSegurança da informação compreende um conjunto de medidas que visam proteger e preservar informações e sistemas de informações, assegurando-lhes integridade, disponibilidade, não repúdio, autenticidade e confidencialidade.

Esses elementos constituem os cinco pilares da segurança da informação e, portanto, são essenciais para assegurar a integridade e confiabilidade em sistemas de informações.

Nesse sentido, é fundamental que esses pilares, juntamente com mecanismos de proteção possam prover suporte a restauração de sistemas informações, adicionando-lhes capacidades detecção, reação e proteção.

Cinco Pilares da Segurança da Informação• Confidencialidade oferece suporte a prevenção de revelação não autorizada de

informações, além de manter dados e recursos ocultos a usuários sem privilégio de acesso. Por exemplo o uso da criptografia em dados que necessitam da confidencialidade.

• Integridade previne a modificação não autorizada de informações. Por exemplo, a alteração indevida das notas de alunos, ou saldo de clientes , ou dados de pacientes de um hospital.

• Disponibilidade prover suporte a um acesso confiável e prontamente disponível a informações. Isto implica em dados e sistemas prontamente disponíveis e confiáveis. Por exemplo , alguém modificar o acesso a sistemas , de maneira que um usuário não possa entrar num sistema ou numa função do mesmo (inclui, alterar, excluir , consultar, emitir relatórios)

• Não repúdio e autenticidade compreendem o que poderia ser denominado de responsabilidade final e, dessa forma, busca-se fazer a verificação da identidade e autenticidade de uma pessoa ou agente externo de um sistema. É aqui que devem ser previstos mecanismos de segurança como senhas fortemente criptografadas, biometria , chips e cartões magnetizados, log´s de acessos , etc..

Não repúdioEm termos gerais, repudiar algo é negar sua existência e, para tanto, os serviços de Não-Repúdio usam os métodos de criptografia que impedem que um indivíduo ou uma entidade neguem a execução de uma ação particular relacionada aos dados (tais como mecanismos para a não-rejeição de autoridade, fornecendo prova da origem; para a prova da obrigação, da intenção, ou do compromisso; ou para a prova da posse).

O primeiro objetivo de um sistema de Não-Repúdio é provar QUEM fez O QUE e ONDE e manter as necessárias evidências de tal informação para resolver eventuais disputas ou auditorias.

O Não-Repúdio deve ser visto sob a ótica legal e técnica. Sob uma perspectiva legal, o Não-Repúdio é definido pela American Bar Association PKI Assessment Guidelines como sendo "... suficiente evidência para persuadir a autoridade legal (juiz, jurado ou árbitro) a respeito de sua origem, submissão, entrega e integridade, apesar da tentativa de negação pelo suposto responsável pelo envio".

Carimbo do Tempo/ Log´s

Os serviços de Carimbo de Tempo (Time Stamping) adicionam um aspecto que os serviços de Não-Repúdio não fornecem: "... uma indicação criptográfica forte e verificável de que uma informação digital específica existiu em um momento específico do tempo.

Registrar o momento em que uma informação digital foi gerada fornece às partes interessadas uma indicação verificável de quando a informação digital passou a existir (QUANDO).

O Carimbo de Tempo de uma informação assinada digitalmente pode fornecer às partes interessadas informações verificáveis de que a informação digital foi assinada (Arquivos de Log´s).

Autenticidade

Entende-se por autenticidade a certeza de que um objeto (em análise) provém das fontes anunciadas e que não foi alvo de mutações ao longo de um processo.

Na informática, uma mensagem será autêntica se for, de fato, recebida na íntegra, diretamente do emissor.

Autenticidade é a garantia de que você é quem diz ser. Em segurança da informação um dos meios de comprovar a autenticidade é através da biometria que esta ligado diretamente com o controle de acesso que reforça a confidencialidade e é garantida pela integridade.

Tipos de Problemas na Segurança das Informações

Os pilares da segurança da informação visam prover os sistemas de informações contra os mais variados tipos de ameaças como, por exemplo:

- Revelação de informações;- Destruição de informações ou de outros recursos;- Interrupção de serviços de rede;- Modificação ou deturpação da informação;- Roubo, remoção ou perda de informação ou de outro recurso;- A senhas poderão ser roubadas e sua conta modificada;- As linhas de comunicação podem ser grampeadas e informações secretas de- sua empresa poderão ser comprometidas;- A rede poderá ser inundada de informações e entrar em colapso;- Funcionários poderão ser pegos transportando pornografia;- Alguém poderá se passar por outra pessoa e efetuar transações financeiras

Tipos de Suporte às Ameaças na Segurança da Informação

Para lidar com ameaças, torna-se necessário a definição de políticas e mecanismos de segurança, visando dar suporte a:

• Prevenção – evitar que invasores violem os mecanismos de segurança;

• Detecção – habilidade de detectar invasão aos mecanismos de segurança;

• Recuperação – mecanismo para interromper a ameaça, avaliar e reparar danos, além de manter a operacionalidade do sistema caso ocorra invasão ao sistema.

Questões de Natureza Operacional a Segurança da Informação

Algumas questões de natureza operacional surgem em decorrência da necessidade de prover suporte a segurança de sistemas de informações, tais como:

• É menos dispendioso prevenir ou corrigir danos?

• Qual o grau de segurança a ser imposto aos sistemas de informações?

• Qual o nível de legalidade das medidas de segurança desejadas?

Ameaças

Ameaças são fatores/ocorrências que podem violar sistemas e causar incidentes de segurança e, dessa forma, danos aos negócios da empresa.

No entanto, você não consegue tomar boas decisões sobre segurança, sem antes determinar quais são as suas metas de segurança.

O número de ameaças cresce exponencialmente a cada dia;

Não só em forma como também em sofisticação;

Um dos fatores que contribuem para este crescimento são novas tecnologias (plug and play ), e a internet;

Ameaças x VulnerabilidadesAmeaças

As ameaças aproveitam das falhas de segurança da organização, provocando possíveis danos, perdas e prejuízos aos negócios da empresa.

Existem as ameaças naturais, tais como, fogo, enchentes e terremotos, que podem provocar danos aos ativos ; as ameaças intencionais são provocadas por invasões, fraudes e roubo de informações e as ameaças involuntárias são causadas por erros de desconhecimento no uso do ativo, onde aparecem erros inconscientes de funcionários que não foram devidamente treinados, infecções por vírus ou até mesmo os acessos indevidos. As ameaças exploram os pontos fracos afetando assim a segurança da informação.

VulnerabilidadesCorrigir pontos vulneráveis ou pontos fracos que circulam em um setor que trabalha com a informação, não acabará, mas reduzirá em muito os riscos em que ela estará envolvida. Logo estará evitando como também prevenindo a concretização de possíveis ameaças.

Exemplos : Sistemas sem senhas, anti-vírus sem atualizações , uso da mesma senha por diversos usuários

Tipos de Ameaças- Ameaças Intencionais;

- Ameaças acidentais;

- Ameaças Passivas;

- Ameaças Ativas;

- Catástrofes;

- Panes;

- Comportamento anti-social;

- Engenharia Social;

Ameaças Intencionais

As ameaças intencionais são as que variam desde o uso de técnicas e ferramentas simples até os ataques mais sofisticados.

Como todos sabem, a concretização ou a realização de uma exploração de uma vulnerabilidade intencional resulta em um ataque ou invasão.

Exemplos:

- Ataques DOS em servidores;- Forçar a descoberta de senhas;

Ameaças Acidentais

As ameaças acidentais são as que não estão associadas à intenção premeditada, ou seja, ocorrem por mero desconhecimento, falta de treinamento, falta de atenção e outras formas nesta mesma linha.

Exemplos:

- Desligar o firewall ;- Aceitar um e-mail com vírus;- Disponibilização de senhas de acesso em arquivos em

pastas compartilhadas;

Ameaças Passivas

As ameaças passivas são as que, quando realizadas, não resultam em qualquer modificação nas informações contidas em um sistema, em sua operação ou em seu estado.

Exemplo:

- Leitura de informação sem autorização de acesso;

- Sniffers

Ameaças AtivasAs ameaças ativas são as que envolvem a alteração da informação ou modificações em seu estado ou operação; Exemplos:

- Vírus eletrônico;

- Funcionário insatisfeito;

- Software pirata na empresa;

- Divulgação de senhas;

- Espionagem industrial;

- Sabotagem;

31

CatástrofesCatástrofes são ameaças imprevisíveis que tem a sua origem em ações da natureza ou por motivos que fogem do controle da empresa;

- Incêndio acidental ou intencional;- Alagamento por inundação de porões ou salas com risco de

vazamento; - Explosão intencional ou provocada por vazamento de gás;- Desabamento parcial ou total do prédio;- Impacto de escombros do teto (teto de gesso, forração ou telhado); - Grande sobrecarga na rede elétrica ou relâmpagos que causam

queima de equipamentos (placas de rede, hub, switch, estabilizador de voltagem, etc.);

- Guerras, com conseqüências drásticas e imprevisíveis.

Panes

Panes podem ocorrer em equipamentos prejudicando a disponibilidade de serviços.Exemplos:

- Pane elétrica;

- Pane nos equipamentos de comunicação;

- Pane nos sistemas de informações;

- Pane na rede;

- Problemas em sistemas operacionais.

Comportamento Anti-Social

Atividades de cunho social que podem comprometer a execução das atividades.Exemplos:

- Paralisações e Greves;- Piquetes- Invasões;- Alcoolismo e Drogas;- Falta de Espírito de Equipe;- Inveja Pessoa / Profissional;- Rixas entre funcionários, setores, gerências, etc.- Ações criminosas (furtos, fraudes, sabotagem,

espionagem industrial);

Engenharia Social

É uma espécie de espionagem.

Senhas com datas de nascimento, sobrenome ou nome dos filhos são muito comuns.

Se o hacker tiver acesso a essas informações do usuário, vai tentá-las, como primeira opção, para descobrir sua senha. Alguns chegam a arrumar emprego temporário na empresa que pretendem invadir.

Lá dentro, prestam atenção nos computadores. Ninguém cobre o teclado na hora de digitar a senha. Mesmo que tenha alguém por perto. Esse alguém pode ser um hacker.

Ameaças – Dados Interessantes

Pesquisa revela que 35% dos orçamentos dos entrevistados são destinados a ameaças internas;

As ameaças internas e o reconhecimento generalizado do despreparo diante de ataques na WEB são as maiores preocupações dos diretores de TI. A constatação é da Secure Computing, que entrevistou cerca de 103 diretores, dos quais 80% temem essas ameaças, em relação a perigos externos.

Diante desse número, os maiores orçamentos são gastos no reforço de segurança interna, com 35% dos diretores de TI identificando este fator como investimento prioritário.

Ameaças – Dados Interessantes

Também segundo a pesquisa, 17% dos entrevistados acreditam que as ameaças externas enviadas por hackers são mais perigosas. O resultado pode estar relacionado ao fato de que 37% dos diretores já vivenciaram algum vazamento de informação sensível.

O e-mail, conforme a apuração, é identificado pelos diretores como o maior risco para a segurança (34%), seguido de voz sobre IP, com 25% e ameaças relativas ao navegador, com 21%.

Ameaças – Dados Interessantes

Cerca de 79% dos entrevistados acreditam que poderiam estar mais bem preparados para as ameaças da web. Os vírus lideram a lista de ameaças externas, com 31% dos diretores afirmando que este é o maior perigo, seguido do spam, com 18%, e o vazamento de dados em terceiro, com 14%.

Os hackers estão na área de menor preocupação quanto à segurança externa. Apenas 22% dos participantes temem esses programadores mal intencionados.

http://www.resellerweb.com.br/noticias/index.asp?cod=48574

Apoio da TIOs mecanismos de segurança se baseiam em controles físicos , que são barreiras que limitam o acesso a informação ou a infra-estrutura (como portas e trancas) e controles lógicos , que são barreiras eletrônicas que impedem ou limitam o acesso a informação , para evitar a alteração de programas e copias de dados por um atacante.

A implementação de segurança é apenas parte da solução. Outra parte importante é a vigilância. Mesmo se o seu sistema tiver muitas proteções de segurança, você precisa vigiá-lo de perto dessas formas:

• Monitore logs de eventos do sistema. Atente para repetidas tentativas de efetuar logon no seu sistema ou para excessiva solicitações sendo feitas no seu servidor Web.

• Mantenha continuamente o servidor de aplicativos atualizado com as atualizações

de segurança mais recentes do Microsoft Windows e dos Serviços de Informações da Internet (IIS), assim como com quaisquer atualizações para o Microsoft SQL Server ou outras fontes de dados que o seu aplicativo possa utilizar.

A Vantagem do Invasor e o Dilema do Defensor

 • O defensor deve defender todos os pontos, o invasor pode

escolher o mais fraco• O defensor pode se defender somente de ataques

conhecidos, o invasor pode investigar vulnerabilidades desconhecidas

• O defensor deve estar constantemente vigilante, o invasor pode atacar a qualquer momento

• O defensor deve jogar de acordo com as regras, o invasor pode jogar sujo

Modelagem de Ameaças

Sem um bom levantamento das sua ameaças as empresas estão destinadas a investir de modo equivocado e continuar vulnerável a ameaças que pode comprometer seus ativos.

A modelagem de ameaça é a primeira etapa em qualquer solução de segurança. Quais são as ameaças reais contra o sistema? Se você não souber disso, como saberá quais tipos de contramedidas irá empregar ?

A modelagem de ameaça é algo difícil de ser feito, ela envolve pensar sobre um

sistema e imaginar o vasto panorama de vulnerabilidade.

Exemplos de AmeaçasFalsificação

Realizar a falsificação é representar um usuário ou processo de uma forma não autorizado. Na sua forma mais simples, falsificação pode significar digitar as credenciais de um usuário diferente. Um uso mal-intencionado também pode alterar o conteúdo de um cookie para fingir que ele ou ela é um usuário diferente ou que o cookie venha de um servidor diferente.

Em geral, você pode ajudar a impedir falsificação usando uma autenticação rigorosa. A qualquer momento em que alguém solicitar acesso às informações não-públicas certifique-se de que eles sejam que eles dizem que são. Você também pode ajudar a defender contra falsificação mantendo informações de credenciais em segurança.Por exemplo, não mantenha uma senha ou outra informações confidencial em um cookie, pois um usuário mal-intencionado pode facilmente encontrá-lo ou modificá-lo.

Exemplos de AmeaçasBackdoor

É um programa que foi, propositalmente concebido ou alterado para realizar ações sem que o atacante possa ser comprometido.

Por exemplo, um terminal dispensador de dinheiro de uma agencia bancaria, onde um programador põe um código que ao pressionar um conjunto de teclas ele saca um dinheiro sem que fique qualquer identificação do autor do saque.

Exemplos de AmeaçasViolação

Violação significa alterar ou excluir um recurso sem autorização.Um exemplo é desfiguração de uma página da Web, onde o usuário mal-intencionado entra em seu site e altera arquivos.Uma maneira indireta de violar é usar um script malicioso.Um usuário mal-intencionado tenta fazer com que o código (Script) seja executado mascarando-o como entrada do usuário de uma página ou como um link.

Uma defesa primária contra violação é usar a segurança do Windows para bloquear arquivos, pastas, e outros recursos do Windows.O aplicativo também deve executar com privilégios mínimos.Uma forma de ajudar a proteger contra scripts maliciosos é não confiar em qualquer informação que vem de um usuário ou mesmo de um banco de dados.Sempre que você obtiver informações de uma fonte não confiável, siga etapas para certificar-se de que elas não contêm qualquer código executável.

Exemplos de AmeaçasRepúdio

Uma ameaça de repúdio envolve a realização de uma transação de tal forma que não existirão provas dos principais envolvidos na transação.Em um aplicativo da Web, isso pode significar representação das credenciais de um usuário inocente.Você pode ajudar a proteger contra repúdio usando autenticação rigorosa.Além disso, use os recursos de log do Windows para manter uma faixa de auditoria de quaisquer atividades no servidor.

Divulgação de Informações

A Divulgação de Informações significa, simplesmente, roubar ou revelar informações que deveriam ser particulares.Um exemplo típico é roubo de senhas, mas a divulgação de informações pode envolver acesso a qualquer arquivo ou recurso no servidor.

Exemplos de AmeaçasNegação de Serviço

Os ataques DoS (Denial of Service), também denominados Ataques de Negação de Serviços, consistem em tentativas de impedir usuários legítimos de utilizarem um determinado serviço de um computador.

Diferentemente da maioria dos ataques da Internet, um ataque de negação de serviço não visa invadir um computador para extrair informações confidenciais, como números de cartões de crédito e senhas bancárias, e nem para modificar o conteúdo armazenado neste computador. Tais ataques têm como objetivo tornar inacessíveis os serviços providos pela vítima a usuários legítimos. enquanto tenta lidar com o tráfego gerado pelo ataque.

Um ataque de negação de serviço tem por objetivos fazer com que, deliberadamente, diminuir a disponibilidade de um aplicativo. Um exemplo típico é sobrecarregar um aplicativo da Web para que ele não possa servir usuários comuns. Como alternativa, usuários mal-intencionados podem tentar travar o seu servidor.

O IIS lhe possibilita priorizar aplicativos, o que significa limitar o número de solicitações que ele servirá. Você poderá negar o acesso a usuários ou endereços IP conhecidos por serem mal-intencionados.

Exemplos de AmeaçasElevação de Privilégio

Um ataque de elevação de privilégio consiste em usar meios mal-intencionados para obter mais permissões do que aquelas normalmente atribuídas. Por exemplo, em um ataque de elevação de privilégio bem-sucedido, um usuário mal-intencionado tenta obter privilégios administrativos no seu servidor Web, dando a si mesmo acesso a todos os dados do servidor, bem como o controle sobre os recursos do servidor.

Para ajudar a proteger contra elevação de privilégio, execute o aplicativo, se possível, em um contexto com menos privilégios. Por exemplo, é recomendável que você não execute aplicativos do ASP.NET como o usuário administrador do Sistema.

Talvez você precise usar uma identificação de usuário e senha para se conectar a um banco de dados ou você pode estar armazenando identificações dos usuários e senhas que clientes usam para acessar seu aplicativo. Embora seja possível usar camada de soquete seguro (SSL) para criptografar informações como ele é passado através da rede, essas informações também devem ser protegidas quando ela é armazenada tanto no servidor e quanto no cliente

Exemplos de Ameaças

Invasão pelo SQL INJECTION

• É uma vulnerabilidade existente nos dias de hoje, que usa de uma manipulação em  códigos sql.

• Esta vulnerabilidade permite ao atacante executar consultas ao banco de dados inserindo querys (comandos Sql) na url do site ou ate mesmo em campos de text obtendo, assim, informações confidenciais como logins e senhas, dentre outros.

Exemplos de AmeaçasInvasão pelo SQL INJECTION

Código na URL :

http://www.alvo.com/news.php?id=5

Toda vez que você ver no link de um site o sinal de interrogação seguido de alguma palavra,letra,silaba recebendo algum valor, isso quer dizer que existe um dado sendo enviado de uma pagina para outra. Exemplo: ?id=5.

Isso significa que neste caso, a pagina news.php estará recebendo o código $id   =$_post[‘id’]

E obviamente terá um código sql, parecido com : select *  from noticias where código=5

Isso significa que a pagina news.php esta selecionando a noticia em que o codigo da noticia seja igual ao codigo da URL, que seria a variavel $id.

Agora, vamos a parte para identificarmos se o site é vulnerável, colocaremos ao final da url uma aspa simples ( ‘ ). Abaixo é mostrado a forma como a url ficará.

Código:

http://www.alvo.com/news.php?id=5′

Caso o site retorne um erro igualmente ou semelhante ao apresentado a seguir , o site é vulnerável a Sql Injection

Erro:

“You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the…

Exemplos de AmeaçasOutros \exemplos de Invasão pelo SQL INJECTION

Código na URL:

http://www.alvo.com/news.php?id=5 order by 1/* <– Sem erro

http://www.alvo.com/news.php?id=5 order by 1,2/* <– Sem erro

http://www.alvo.com/news.php?id=5 order by 1,2,3/* <– Sem erro

http://www.site.com/news.php?id=5 order by 1,2,3,4 <– Com erro

Se não aparecer nenhum erro é por que esta Coluna número 1 existe. Para localizar a quantidade de colunas basta ir tentando ordenar todas as colunas de 1 a infinito.

Código:

http://www.alvo.com/news.php?id=5 union all select 1,2,3

Observe acima que o comando Sql pede para visualizar as três Colunas/Tabelas

Código:

http://www.alvo.com/news.php?id=5 union all select 1,2,3 from adminObserve que acima a query diz: “Mostre-me os valores das Colunas/Tabelas 1, 2 e 3 do usuário admin”.

Código:

http://www.alvo.com/news.php?id=5 union all select 1,username, password from admin

Caso a consulta der certo, na tela aparecerá o nome do usuário e a senha.

Exemplos de AmeaçasEntrada Mal Intencionada

Na informática a regra é a mesma , ou seja : “ Toda entrada é mal intencionada até que se prove o contrário “. Todos os dados devem ser validados a medida que cruzam os limites entre ambientes confiáveis e não confiáveis , embora isto possa causar problemas no desempenho.

Uma vulnerabilidade comum na WEB são os erros de Script executáveis em diferentes sites . Estes erros envolvem uma entrada mal intencionada que é ecoada para o navegador de outros usuários.

Um script malicioso simplista pode funcionar conforme o seguinte:

• O aplicativo exibe um formulário onde os usuários inserem comentários. O usuário mal-intencionado grava um comentário que inclui um bloco <script> dentro dele.

• O formulário é remetido e o comentário do usuário mal-intencionado é armazenado em um banco de dados.

• Outro usuário visita o site. Quando a página é construída, ele lê comentários fora do banco de dados e os coloca na página. O bloco <script> do usuário mal-intencionado é gravado para a página como se ele fosse um comentário de texto.

• Quando o segundo navegador do usuário mostra a página, isso leva ao bloco script> e o executa.

Exemplos de AmeaçasEstouro de Buffer

Buffer , é uma região de memória temporária utilizada para escrita e leitura de dados. É uma memória temporária de dados armazenados no seu computador.

Os Buffers são áreas de memória criadas pelos programas para armazenar dados que estão sendo processados. Cada buffer tem um certo tamanho, dependendo do tipo de dados que ele irá armazenar. Um buffer overflow ocorre quando o programa recebe mais dados do que está preparado para armazenar no buffer. Se o programa não foi adequadamente escrito, este excesso de dados pode acabar sendo armazenado em áreas de memória próximas, corrompendo dados ou travando o programa, ou mesmo ser executada, que é a possibilidade mais perigosa.

Em geral, os hackers induzem um estouro de Buffer no sistema para poder derrubá-lo a atingir o sistema operacional que esteja rodando na máquina.

Por exemplo, se colocar mais maçãs que uma cesta pode suportar, ela transbordará, e isso acontece com os dados. Para exemplificar imagine um programa que aloca 20 caracteres para uma variável, se você inserir 21 caracteres essa variável transbordaria.

Geralmente este tipo de vulnerabilidade causa travamento no sistema ou permite que o atacante execute comandos arbitrários com permissão de root.

Exemplos de AmeaçasPermissões Excessivas para Aplicativos e Sistemas

As solicitações de permissão são a maneira principal conscientizá-la segurança de código.

Você deve incluir as solicitações de permissão em aplicativos que deseja acessar .

Certifique-se que seu código recebe somente as permissões que ele realmente precisa.

Como exemplo , podemos informar que o código não deve ser executado a menos que ele receba permissão para gravar C:\test.tmp. Se o código nunca encontrar a diretiva de segurança que não concede essa permissão, um PolicyException é gerado e o código não é executado. Usando essa solicitação, você pode ter certeza de que seu código será executado somente se ele recebeu essa permissão e você não precisará se preocupar sobre erros causados por ter poucas permissões.

O princípio do "privilégio mínimo" afirma que trabalhar com o mínimo de direitos necessários para executar uma ação minimiza os danos quando algo ruim acontece.

Exemplos de AmeaçasMal Uso do RPC

RPC é uma tecnologia popular para a implementação do modelo cliente-servidor de computação distribuída.

Uma chamada de procedimento remoto é iniciada pelo cliente enviando uma mensagem para um servidor remoto para executar um procedimento específico. Uma resposta é retornada ao cliente. O Web service é uma solução RPC utilizada na integração de sistemas e na comunicação entre aplicações diferentes.

A potenciais ameaças para RPC´s • Ameaças quando a aplicação do usuário envia dados malformados para o servidor RPS e

este não trata a estes dados ruis , podendo a aplicação abortar e parar , permitindo que um hacker interaja neste momento e assuma o servidor RPC.

• Ameaças de revelação de informações a medida que os dados desprotegidos vão e voltam do cliente ao servidor e o invasor utiliza analisador de pacotes para visualizar os dados.

• Ameaças de adulteração de dados à medida que o invasor intercepta e modifica os dados desprotegidos.

Como Proteger Informações Confidenciais

• A melhor maneira para evitar expor informações confidenciais em um aplicativo é não armazená-las.

• Minimizar os locais onde informações confidenciais estão armazenadas.

• Evite armazenar informações confidenciais para seu aplicativo em um cookie ou um controle que é persistente em seu navegador, que poderia expor as informações confidenciais para clientes do seu aplicativo.

• Evite armazenar informações confidenciais em sua lógica do aplicativo. Em vez disso, recupere as informações confidenciais de uma localidade de configuração segura ou do cliente.

• Uso de Criptografia

Criptografar InformaçõesQuando você armazena informações confidenciais, evite armazená-las como texto legível pelo usuário ou em um formato facilmente decodificado. Em vez disso, criptografe as informações de forma que, se esta estiver exposta para um invasor alguma forma, o invasor não possa determinar facilmente o que contém as informações confidenciais.

Criptografia (Do Grego kryptós, "escondido", e gráphein, "escrita") é o estudo dos princípios e técnicas pelas quais a informação pode ser transformada da sua forma original para outra ilegível, de forma que possa ser conhecida apenas por seu destinatário (detentor da "chave secreta"), o que a torna difícil de ser lida por alguém não autorizado. Assim sendo, só o receptor da mensagem pode ler a informação com facilidade. É um ramo da Matemática, parte da Criptologia.

Uma informação não-cifrada que é enviada de uma pessoa (ou organização) para outra é chamada de "texto claro" (plaintext).

Cifragem é o processo de conversão de um texto claro para um código cifrado e decifragem é o processo contrário, de recuperar o texto original a partir de um texto cifrado.

Algoritmos de Chave Simétrica

- DES (Data Encryption Standard): criado pela IBM em 1977, faz uso de chaves de 56 bits. Isso corresponde a 72 quatrilhões de combinações. É um valor absurdamente alto, mas não para um computador potente. Em 1997, esse algoritmo foi quebrado por técnicas de "força bruta" (tentativa e erro) em um desafio promovido na internet;

- IDEA (International Data Encryption Algorithm): criado em 1991 por James Massey e Xuejia Lai, o IDEA é um algoritmo que faz uso de chaves de 128 bits e que tem uma estrutura semelhante ao DES. Sua implementação em software é mais fácil do que a implementação deste último;

- RC (Ron's Code ou Rivest Cipher): criado por Ron Rivest na empresa RSA Data Security, esse algoritmo é muito utilizado em e-mails e faz uso de chaves que vão de 8 a 1024 bits. Possui várias versões: RC2, RC4, RC5 e RC6.

Criptografia Chave Simétrica

Os algoritmos de chave simétrica (também chamados de Sistemas de Chave Simétrica, criptografia de chave única, ou criptografia de chave secreta) são uma classe de algoritmos para a criptografia, que usam chaves criptográficas relacionadas para as operações de  cifragem e  decifragem .

A operação de chave simétrica é mais simples, pois pode existir uma única chave entre as operações.

A chave, na prática, representa um segredo, partilhado entre duas ou mais partes, que podem ser usadas para manter um canal confidencial de informação. Usa-se uma única chave, partilhada por ambos os interlocutores, na premissa de que esta é conhecida apenas por eles.

Criptografia Chave Assimétrica ou Pública

A criptografia de chave pública ou criptografia assimétrica é um método de criptografia que utiliza um par de chaves: uma chave pública e uma chave privada. A chave pública é distribuída livremente para todos os correspondentes via e-mail ou outras formas, enquanto a chave privada deve ser conhecida apenas pelo seu dono.

Num algoritmo de criptografia assimétrica, uma mensagem cifrada com a chave pública pode somente ser decifrada pela sua chave privada correspondente.

Os algoritmos de chave pública podem ser utilizados para autenticidade e confidencialidade:

Confidencialidade: A chave pública é usada para cifrar mensagens, com isso apenas o dono da chave privada pode decifrá-la, evitando assim que terceiros possam ler a mensagem.

Autenticidade: A chave privada é usada para cifrar a mensagem, com isso garante-se que apenas o dono da chave poderia tê-la editado.

Algoritmos de Chave Assimétrica

- RSA (Rivest, Shamir and Adleman): criado em 1977 por Ron Rivest, Adi Shamir e Len Adleman nos laboratórios do MIT (Massachusetts Institute of Technology), é um dos algoritmos de chave assimétrica mais usados.

- ElGamal: criado por Taher ElGamal, esse algoritmo faz uso de um problema matemático conhecido por "logaritmo discreto" para se tornar seguro. Sua utilização é freqüente em assinaturas digitais.

- Existem ainda outros algoritmos, como o DSA (Digital Signature Algorithm), o Schnorr (praticamente usado apenas em assinaturas digitais) e Diffie-Hellman.

Criptografia Chave Assimétrica ou Pública

Como Fazer a Segurança Preventiva 

• Aprimoramento do processo (projeto, desenvolvimento, testes,distribuição/manutenção)

• Questões de segurança nas entrevistas de novos funcionários• Avaliar se as pessoas que colocam os segredos nos dispositivos de segurança ,se são

confiáveis.• Avaliar as implicações aos usuários se os objetos que se pretende proteger , forem

comprometidos. • Onde o aplicativo vai ser rodado , numa rede local , rede wireless , na internet.• Avaliar quem vai gerenciar o aplicativo • Revisões pela equipe de segurança• Testes específicos (avaliar se houve mutação dos dados)• Diretrizes seguras de codificação• Faça atualizações dos Sistemas Operacionais , Softwares de Banco de Dados, etc• Cuidado com o uso de softwares de Terceiros• Campanha de segurança 

Como Fazer a Segurança Preventiva 

• Minimize a área de ataque• Nunca baseie a segurança na obscuridade (suponha que um invasor

sabe tudo sobre voce, suponha que ele tenha acesso aos códigos fontes e dados).

• Utilize a defesa em profundidade• Utilize o menor privilégio• Empregue padrões seguros• Assuma que sistemas externos são inseguros• Planeje-se para as falhas• Não misture códigos e dados• Compatibilidade com versões anteriores sempre dão dores de cabeça• Utilize fortemente a modelagem de ameaças.• Criar uma Politica de Segurança da Informação

Desenvolvimento Sistemas com Segurança 

É essencial que todos os fornecedores de software abordem as ameaças à segurança.

A segurança é um requisito fundamental para fornecedores de software, e ela é influenciada pelas pressões do mercado, pela necessidade de proteger infra-estruturas críticas e pela necessidade de criar e preservar uma confiança geral no ambiente de computação.

Existem três aspectos na criação de software mais seguro:

• o processo repetitivo • o treinamento de engenheiros de software e pessoal de programação• e as métricas e responsabilidades.

Recomendações Importantes na Programação com Segurança

• Não redija mensagens de erro que propaguem informações que podem ser úteis para os usuários mal-intencionados, tais como um nome de usuário.

• Configure o aplicativo não para mostrar erros detalhados aos usuários. Se você quiser exibir as mensagens de erro detalhadas para depuração, verifique primeiro se o usuário é local para o servidor Web.

• Use o elemento de configuração customError para controlar quem pode visualizar as exceções do servidor.

• Crie tratamento de erro personalizado para situações que são propensas a erro, tais como acesso a banco de dados.

• Use configuração protegida para proteger informações sigilosas em arquivos de configuração como os arquivos Web.config ou Machine.config

• Se você deve armazenar informações sigilosas, não as mantenha em uma página da Web, nem mesmo em um formulário que você acha que pessoas não serão capazes de ver (tais como em código servidor).

• Use os algoritmos de criptografia eficientes• Use o tratamento de erros (por exemplo, blocos try/catch).Incluir um bloco finally no

qual você libera recursos no caso de falha.

Recomendações Importantes na Programação com Segurança

• Não armazene quaisquer informações críticas em cookies.Por exemplo, não armazene a senha do usuário em um cookie, mesmo temporariamente.Como regra, não manter tudo em um cookie que, se falsificados, pode comprometer seu aplicativo.Em vez disso, mantenha uma referência no cookie para uma localidade no servidor onde as informações estão localizadas.

• Defina datas de expiração em cookies para o menor tempo prático possível.Evite cookies permanentes, se possível.

• Considere criptografar informações em cookies. • Configure o IIS para usar o estreitamento, que impede um aplicativo de usar uma

quantidade desproporcional de CPU.• Teste limites de tamanho de entrada do usuário antes de usá-la ou armazená-la.• Coloque proteções de tamanho em consultas de banco de dados.Por exemplo, antes de

exibir resultados da consulta em um página da Web ASP.NET, certifique se não há um número excessivo de vários registros.

• Colocar um limite de tamanho em carregamentos de arquivos, se estes fizerem parte de seu aplicativo.

• Você também pode configurar o servidor WEB para reduzir o tempo de uma pagina Web ficar ativa , pode ser configurado o número máximo de usuários concomitantes, etc

Recomendações Importantes na Programação com Segurança

Desenvolvimento Sistemas - Fase Requisitos

• Durante a fase de requisitos, a equipe de produto entra em contato com a equipe de segurança central para solicitar a designação de um supervisor de segurança (chamado de o "cara da segurança".

•  • O supervisor de segurança aconselha a equipe de produto sobre os marcos de

segurança e os critérios de saída que serão exigidos com base no tamanho, na complexidade e no risco do projeto. O supervisor de segurança continua sendo o ponto de contato da equipe de produto com a equipe de segurança, desde o início do projeto até a conclusão.

•  • A fase de requisitos é a oportunidade para a equipe de produto considerar

como a segurança será integrada no processo de desenvolvimento, identificar os objetivos-chave de segurança e maximizar a segurança de software, minimizando a quebra de planos e cronogramas. Como parte desse processo, a equipe precisa considerar como os recursos de segurança e as medidas de controle de seu software serão integrados com outros softwares que provavelmente serão usados com ele.

Desenvolvimento Sistemas - Fase Design

A fase de design identifica a estrutura e os requisitos gerais do software. Da perspectiva de segurança, os elementos-chave da fase de design são: • Definir as diretivas de design e arquitetura de segurança: definir a estrutura geral do

software, tendo como ponto de vista a segurança, e identificar os componentes cujo funcionamento correto é essencial para a segurança (a "base de computação confiável"). Identificar técnicas de design, como a organização em camadas, o uso de linguagem com rigidez de tipos, a aplicação de privilégios mínimos e a minimização da superfície de ataque, que se aplicam ao software globalmente.

• Documentar os elementos da superfície de ataque do software. Como o software não atingirá uma segurança perfeita, é importante que apenas os recursos que serão usados pela grande maioria dos usuários sejam expostos a todos eles por padrão, e que esses recursos sejam instalados com o nível de privilégio mais baixo possível.

• Realizar a modelagem de ameaças. O processo de modelagem de ameaças identifica as ameaças que podem danificar cada ativo e a probabilidade de acontecerem danos (uma estimativa de risco). A equipe do componente identifica, então, as contramedidas que atenuam o risco na forma de recursos de segurança, como a criptografia, ou na forma de funcionamento adequado do software que protege os ativos contra danos.

Desenvolvimento Sistemas - Fase Design

• Definir critérios de fornecimento complementar. Os critérios básicos de fornecimento de segurança devem ser definidos no nível da organização, mas as equipes de produto individuais ou de versões do software podem ter critérios específicos que devem ser atendidos antes do lançamento do software.

Por exemplo, uma equipe de produto que desenvolva a versão atualizada de um software fornecido aos clientes e sujeito a ataques extensivos pode solicitar que, por determinado tempo, a nova versão fique livre de vulnerabilidades relatadas externamente antes de ser considerada pronta para o lançamento. (Ou seja, o processo de desenvolvimento deve localizar e remover as vulnerabilidades antes que elas sejam relatadas, em vez de a equipe de produto precisar "corrigi-las" depois de serem relatadas.)

Desenvolvimento Sistemas - Fase Implementação

• Durante a fase de implementação, a equipe de produto gera o código, testa e integra o software. As etapas seguidas para remover falhas de segurança ou evitar sua inserção inicial durante essa fase têm um aproveitamento alto; elas reduzem significativamente a probabilidade de que vulnerabilidades de segurança estejam presentes na versão final do software que é lançada para os clientes.

Os elementos que são aplicados na fase de implementação são:• Aplicar padrões de codificação e teste. Os padrões de codificação ajudam os

desenvolvedores a evitar a introdução de falhas que podem levar a vulnerabilidades de segurança. Por exemplo, a utilização de construções de manipulação de seqüências e de buffer mais consistentes e seguras pode ajudar a evitar a introdução de vulnerabilidades de saturação do buffer. As práticas recomendadas e os padrões de testes ajudam a garantir que os testes se concentrem na detecção de possíveis vulnerabilidades de segurança e não apenas na operação correta de funções e recursos do software.

Desenvolvimento Sistemas - Fase Implementação

• Aplicar ferramentas de testes de segurança, incluindo ferramentas de difusão. A "difusão" oferece entradas estruturadas mas inválidas para APIs (interfaces de programação de aplicativo) de software e interfaces de rede, de forma a maximizar a probabilidade de detectar erros que podem levar a vulnerabilidades de software.

• Aplicar ferramentas de verificação de código de análise estática. As ferramentas podem detectar alguns tipos de falhas de código que resultam em vulnerabilidades, incluindo saturações do buffer, de números inteiros e variáveis não inicializadas.

• Realizar revisões de código. As revisões de código complementam os testes e as ferramentas automatizadas; para isso, elas aplicam os esforços de desenvolvedores treinados no examine do código-fonte e na detecção e remoção de possíveis vulnerabilidades de segurança. Elas são uma etapa essencial no processo de remoção de vulnerabilidades de segurança do software durante o processo de desenvolvimento

Desenvolvimento Sistemas - Fase Verificação

A fase de verificação é o ponto em que o software está funcionalmente concluído e entra em testes beta por usuários. Durante essa fase, enquanto o software passa por testes beta, a equipe de produto realiza um "esforço de segurança" que inclui revisões do código de segurança além das concluídas na fase de implementação, bem como testes de segurança direcionados.

Desenvolvimento Sistemas - Fase Suporte e Manutenção

Mesmo que o processo de desenvolvimento pudesse eliminar todas as vulnerabilidades do software fornecido, novos ataques seriam descobertos e o software que era "seguro" estaria vulnerável. Assim, as equipes de produto devem se preparar para responder a vulnerabilidades recém-descobertas no software fornecido aos clientes.