61
CENTRO UNIVERSITÁRIO METODISTA BENNETT CURSO DE CIÊNCIA DA COMPUTAÇÃO TRABALHO DE CONCLUSÃO DE CURSO PROTEÇÃO E RECOMENDAÇÕES PARA O PROBLEMA DO ARMAZENAMENTO CRIPTOGRÁFICO INSEGURO PROJETO AECRIPT LUIZ FERNANDO GONÇALVES RIO DE JANEIRO JULHO, 2009

Tcc luizfernando final

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Tcc luizfernando final

CENTRO UNIVERSITÁRIO METODISTA BENNETT

CURSO DE CIÊNCIA DA COMPUTAÇÃO

TRABALHO DE CONCLUSÃO DE CURSO

PROTEÇÃO E RECOMENDAÇÕES PARA O PROBLEMA

DO ARMAZENAMENTO CRIPTOGRÁFICO INSEGURO PROJETO AECRIPT

LUIZ FERNANDO GONÇALVES

RIO DE JANEIRO

JULHO, 2009

Page 2: Tcc luizfernando final

II

CENTRO UNIVERSITÁRIO METODISTA BENNETT

CURSO DE CIÊNCIA DA COMPUTAÇÃO

PROTEÇÃO E RECOMENDAÇÕES PARA O PROBLEMA

DO ARMAZENAMENTO CRIPTOGRÁFICO INSEGURO PROJETO AECRIPT

Trabalho de Final de curso submetido ao Centro Universitário Metodista Bennett como parte dos requisitos para a obtenção do grau de Bacharel em Ciências da Computação

Orientador: Prof. M.Sc. Willian Augusto R. de Souza

RIO DE JANEIRO JULHO, 2009

Page 3: Tcc luizfernando final

III

ESTE TRABALHO FOI JULGADO ADEQUADO PARA A OBTENÇÃO DO GRAU DE BACHAREL EM CIÊNCIA DA COMPUTAÇÃO E APROVADO EM SUA FORMA FINAL PELA DISCIPLINA DE TRABALHO DE CONCLUSÃO DE CURSO BANCA EXAMINADORA: _________________________________________ M.Sc. Willian Augusto R. de Souza Orientador _________________________________________ M. Sc. Pier Giovanni Taranti _________________________________________ D. Sc. Júlio Luiz Nunes Carvalho

Rio de Janeiro Julho, 2009

Page 4: Tcc luizfernando final

IV

AGRADECIMENTOS

Agradeço, antes de tudo, a Deus, por ter me munido de forças para

superar as dificuldades apresentadas durante o meu percurso acadêmico.

A minha esposa Márcia e meus filhos Marcos Fernando, Luiz Felipe,

Luiz Guilherme pela força, amparo, amor e compreensão, e por ajudarem a não

me deixar ser derrotado pelas dificuldades enfrentadas.

Aos meus professores, pelo incentivo e ajuda constante na busca pelo

conhecimento. Em especial ao meu Professor Orientador M.Sc William Augusto

Rodrigues de Souza, pela valorosa orientação, atenção e apoio em todos os

momentos e que em momento algum negou auxilio, propondo valiosas

sugestões.

A todos os meus amigos acadêmicos que me incentivaram, apoiaram

possibilitando esta oportunidade, ampliando assim meus horizontes na

conclusão desta importante jornada da minha vida.

“O que me preocupa não e o grito dos maus; mas o silêncio dos bons” Martin Luther King

Page 5: Tcc luizfernando final

RESUMO............................................................................................................. I ABSTRACT......................................................................................................... I 1. INTRODUÇÃO............................................................................................ 8

2. FERRAMENTAS SEGURAS EM APLICAÇÕES WEB............................ 11

2.1. FRAMEWORKS .................................................................................... 11

2.2. DADOS INSEGUROS ........................................................................... 12

3. VULNERABILIDADE................................................................................ 15

3.1. INTRODUÇÃO ...................................................................................... 15

3.2. DADOS SENSÍVEIS.............................................................................. 15

3.3. ALGORITMOS FORTES....................................................................... 17

3.4. ALGORITMOS FRACOS ...................................................................... 19

3.5. CODIFICAÇÃO DE CHAVES ............................................................... 22

4. VERIFICAÇÃO DE SEGURANÇA ........................................................... 26

4.1. INTRODUÇÃO ...................................................................................... 26

4.2. VERIFICAÇÃO DE SEGURANÇA EM APLICAÇÕES WEB................ 29

4.3. DADOS SENSÍVEIS EM SISTEMAS DE ARMAZENAMENTO............ 33

4.4. PESQUISA DE VULNERABILIDADES................................................. 38

4.5. FERRAMENTAS DE PESQUISA DE CÓDIGOS INSEGUROS ........... 43

5. PROTEÇÃO.............................................................................................. 47

5.1. INTRODUÇÃO ...................................................................................... 47

5.2. MECANISMOS DE SEGURANÇA........................................................ 48

5.3. AMEAÇAS À SEGURANÇA................................................................. 50

5.4. NÍVEL DE SEGURANÇA DE PROTEÇÃO........................................... 51

5.5. POLÍTICAS DE SEGURANÇA DE PROTEÇÃO .................................. 52

6. CONCLUSÃO ........................................................................................... 54

7. REFERÊNCIA BIBLIOGRÁFICA ............................................................. 60

8. SITES PESQUISADOS: ........................................................................... 61

Page 6: Tcc luizfernando final

RESUMO

Proteger dados sensíveis com criptografia tem sido parte chave das aplicações

web, este trabalho trata de uma pesquisa sobre proteção e recomendações

para o problema do armazenamento criptográfico inseguro (Projeto AECript),

abordando assuntos como armazenamento de dados sensíveis, ambientes

afetados, vulnerabilidades em códigos de aplicações web, sistemas de

aplicações inseguros, mostrando onde esta o problema da proteção de

armazenamentos de informações vulneráveis ao ataque e roubos de dados,

trazendo prejuízo financeiro a maioria das grandes empresas, e assegurar

como a solução para esses problemas, deverão ser feitas através de

algoritmos criptográfico.

Page 7: Tcc luizfernando final

ABSTRACT

Protect sensitive data with encryption key has been part of web applications,

this work deals with a research on protection and recommendations for the

problem of insecure cryptographic storage (Project AECript), addressing issues

such as storage of sensitive data, affected environments, vulnerabilities in the

code web applications, systems, applications unsafe, showing where the

problem is the protection of information stores vulnerable to attack and theft of

data, causing financial loss to most large companies, and provide as a solution

to these problems, should be made through cryptographic algorithms.

Page 8: Tcc luizfernando final

8

1. INTRODUÇÃO

A utilização da criptografia está crescendo cada vez mais devido à

grande explosão da Internet no Brasil e no mundo. Com a possibilidade de

comunicação segura surgiram muitas aplicações que facilitaram a utilização da

internet para transações como, por exemplo, o comércio eletrônico, bancos

eletrônicos e outros métodos que exigem a transmissão de informações

confidenciais através da rede. Em compensação, a maioria destas aplicações

possui algoritmos de criptografia mal concebidos, por isso podemos considerar

que a transmissão desses dados não é segura.

As falhas de segurança mais comuns são: não criptografia de dados

sensíveis; uso continuado de algoritmos comprovadamente fracos (MD5, SHA-

1, RC3, RC4, etc…); codificação difícil de chaves e armazenamento de chaves

em repositórios desprotegidos.

Técnicas de criptografia são usadas como um meio efetivo de proteção

de informações suscetíveis a ataques, estejam elas armazenadas em um

computador ou sendo transmitidas pela rede. Seu principal objetivo é prover

uma comunicação segura, garantindo serviços básicos de autenticação,

privacidade e integridade de dados.

1.1. MOTIVAÇÃO

A proteção de dados sensíveis através de criptografia tem se tornado

uma parte essencial da maioria das aplicações web. As aplicações web

raramente utilizam de modo adequado, funções de criptografia para proteger os

dados e credenciais de usuários. Aplicações que utilizam criptografia

Page 9: Tcc luizfernando final

9

geralmente possuem criptografia mal projetada, com cifras inadequadas ou

produzem erros graves ao usar cifras fortes. Estas falhas podem levar a

revelação de dados sensíveis e a violações de conformidade. Os atacantes

utilizam dados fracamente protegidos para furtar identidades e realizar outros

crimes, tais como fraude de cartão de crédito. (SILVA, 2007).

1.2. OBJETIVOS

Esta monografia faz parte do Projeto OWASP TOP TEM 2007 – A8

ARMAZENAMENTO CRIPTOGRAFICO INSEGURO que tem a finalidade de

ensino, aprendizagem e conscientização de problemas, soluções e segurança

da informação, pretende também colaborar como uma referência sobre

pesquisas na defesa, proteção, recomendações e principais falhas

relacionadas ao armazenamento criptográfico inseguro, informando como os

problemas funcionam, o que se pode fazer para solucionar os problemas de

segurança e práticas necessárias para evitar todos os tipos de ataque.

1.3. ORGANIZAÇÃO DO TRABALHO

Foram executadas consultas em sites na internet para obtenção de material

onde foi possível selecionar o que se fazia necessário para o entendimento do

tema abordado. A partir da coleta do material, elaborou-se uma criteriosa

seleção para a elaboração do texto desejado com a melhor forma, mais

eficiente para o desenvolvimento da pesquisa necessária para o projeto.

Este trabalho está organizado em 8 capítulos. O capítulo 2 traz uma pesquisa

dos conceitos de ambientes afetados em sistemas. O capitulo 3 aborda os

principais tipos de vulnerabilidades , tratando com maiores detalhes em dados

Page 10: Tcc luizfernando final

10

sensíveis apresentado algumas fragilidades em algoritmos de sistemas . são

apresentados no capítulo 4 verificações de segurança em aplicações web,

informações sensíveis em sistemas de armazenamentos . No capítulo 5 são

apresentados as informações necessárias para tratar da proteção de dados,

mecanismos de segurança, níveis de segurança de proteção. Por fim, os

capítulos 6, 7, 8 conclui esta monografia apontando as contribuições e

possíveis melhoramentos neste trabalho.

Palavras-chave: Criptografia, Armazenamento criptográfico, Segurança da

informação.

Page 11: Tcc luizfernando final

11

2. Ferramentas seguras em Aplicações web

2.1. Frameworks

Em desenvolvimento de software, framework é uma estrutura de suporte

definida onde outro projeto de software pode ser organizado e desenvolvido.

Um framework pode incluir programas de suporte, bibliotecas de código,

linguagens de script e outros softwares para auxiliar no desenvolvimento e unir

diferentes componentes de um projeto de software. (WIKIPÉDIA, 2009)

Em outras palavras, frameworks são soluções reutilizáveis de software,

que possuem um conjunto de classes com várias funções, rotinas e variáveis

inclusas. Mas para que funcionem é necessário ser implementadas com

lógicas que dependem da necessidade. Foram projetadas com a intenção de

facilitar o desenvolvimento de software, habilitando designers e programadores

a utilizarem o seu tempo de forma mais proveitosa, não sendo necessário

reinventar códigos. São um pouco mais complexos que as bibliotecas, mas

quando são utilizadas, executam uma ou mais funções específicas.

Um framework captura a funcionalidade comum entre várias aplicações,

que devem ter um grande ponto em comum: pertencer ao mesmo domínio de

problema.

As Vantagens na Utilização de Frameworks (Zemel, 2009):

• Em primeiro lugar cita-se a utilidade, cujo objetivo inicial dos

frameworks é auxiliar no desenvolvimento de aplicações e softwares.

Têm funcionalidades nativas das mais variadas, que auxiliam na

Page 12: Tcc luizfernando final

12

resolução de questões sobre programação, com muito mais qualidade

e eficiência.

• Quanto à Segurança, os bons frameworks são projetados de modo a

garantir a segurança dos desenvolvedores e, principalmente, de quem

utiliza o que foi feito a partir dele. Não havendo necessidade de

preocupação com aquelas intermináveis linhas de código que evitam

um SQL Injection, por exemplo. Com frameworks, a parte de

segurança já “vem de fábrica”.

• Além disso, os frameworks possuem estensibilidade permitindo a

extensão de suas funcionalidades nativas. Se uma determinada

biblioteca de envio de e-mails por SMTP não contempla todas as

possibilidades desejadas, simplesmente deve-se estender suas

funcionalidades e utiliza-las como se fossem partes do framework (na

verdade, elas serão).

• Outro fator importante é a economia de tempo. O que demoraria

algumas horas ou alguns dias para se desenvolver, encontra-se pronto

em um framework.

• Suporte ao desenvolvimento. Os desenvolvedores de framworks

geralmente disponibilizam material de qualidade nos web sites ou

repositórios oficiais, com uma vasta documentação a respeito. Além

disso, os bons frameworks sempre têm uma comunidade de

desenvolvedores dispostos a se ajudarem entre si.

2.2. Dados Inseguros

Um dos maiores problemas de segurança é não validar os inputs

(formulário de entrada) do usuário. O próprio (XSS - Cross-site scripting) é

Page 13: Tcc luizfernando final

13

aquele que permite a injeção de scripts no site atacado, em geral por meio de

algum campo de input do usuário. É importante observar que um ataque XSS é

um ataque ao usuário do site e não ao sistema servidor em si. Pois, o script

injetado nunca será executado no servidor, mas nos navegadores dos clientes

que visitarem a página infectada. A regra principal de qualquer sistema com

input de usuários é que não se deve confiar no que foi digitado pelo usuário.

Além de XSS, se a segurança não for bem definida podemos ser alvos

de muitos outros ataques, como SQL Injection, injeção de parâmetros e outros.

Um exemplo do problema é a injeção de parâmetros perigosos, que

acontece frequentemente devido a Web e aos frameworks modernos.

Um exemplo de Injeção de atributos é usarmos qualquer framework Java

para Web (VRaptor, Struts, Mentawai, Waffle). Muitos programadores estão

acostumados com a facilidade de não se preocupar com o

(request.getParameter), escrevem um JavaBean e o framework compila

automaticamente os dados, seguindo os nomes do parâmetro.

Imaginemos um sistema onde as pessoas se cadastram em algum

serviço online.

Se escrevermos uma classe Usuario:

public class Usuario { private String email; private String senha; }

E, no formulário de cadastro enviar os parâmetros usuario.email e

usuario.senha.

Page 14: Tcc luizfernando final

14

/usuario/[email protected]&usuario.senha=1234

Imaginemos também, que gostaríamos de ter uma área administrativa, e

certos usuários com permissão para acessá-la:

public class Usuario { private String email; private String senha; private boolean admin; }

No formulário de cadastro geral, a pessoa só cadastraria email e senha,

e no cadastro dentro da área de admin, teríamos um checkbox a mais.

/admin/usuario/[email protected]&usuario.senha=1234&usuario.admin=true

Isso seria extremamente inseguro. E se no cadastro dos usuários

normais um usuário mal intencionado passasse &usuario.admin=true?

Não poderíamos achar, só porque o form do html não tem o campo. O

problema não existiria se ainda programássemos com

request.getParameter(), já que na lógica dos usuários normais

obviamente só pegaríamos os parâmetros usuario e email. Isso aparece

quando usamos as facilidades dos frameworks que usam qualquer parâmetro

no JavaBean.

Revendo todos os seus códigos atrás desse tipo de falha e perceber o

quão grave ele é. A solução mais adequada seria não ter nenhum atributo no

JavaBean que não possa ser inserido pelo usuário.

Page 15: Tcc luizfernando final

15

3. VULNERABILIDADE

3.1. Introdução

De acordo com estudos OWASP (Open Web Application Security

Project), as vulnerabilidades que existem em mais abundância na web são as

falhas XSS (Cross Site Scripting) e XRSF (Cross Site Request Forgery), este

tipo de falha consiste em injetar código (normalmente JavaScript ou VBscript)

no browser do utilizador, alterando o código da página, podendo assim levar ao

roubo de informações.

Erros em validações de parâmetros é a principal causa deste tipo de

falha. Injeção de SQL é uma das vulnerabilidades mais conhecidas, pela

Internet e pequenos erros de validação podem se revelar perigosos e

extremamente prejudiciais ao usuário de uma aplicação web.

Enquanto as empresas desvalorizam a proteção aos seus sites,

aplicações e dados os ataques dos hackers ficam cada vez mais elaborados e

sofisticados. Na maioria das vezes, geram perda de dados ou outras violações

de segurança. A maioria das operações que exigem segurança na WEB é

projetada e desenvolvida de forma insegura e negligente. Essa negligencia

parte tanto de usuários quanto de grandes companhias, sendo importante e

necessário levar ao conhecimento dos “stakeholders” os riscos desta prática.

3.2. Dados Sensíveis

Segundo especialistas de segurança da informação que tratam das mais

diversas formas de armazenamentos de dados, a maioria das empresas não

usa os sistemas de criptografia de forma correta, dados sensíveis ficam

Page 16: Tcc luizfernando final

16

esquecidos em servidores com pouco ou sem nenhum tipo eficiente de

proteção.

A falta de utilização de sistemas criptográficos seguros nas empresas

deve-se em parte ao desinteresse das empresas, a falta de investimento ou

desconhecimento, e hoje em dia com o aumento no volume de dados

sensíveis, torna-se obrigatório o uso de criptografia segura nas empresas de

grande porte, como forma de proteger-se de espionagem industrial por parte de

seus concorrentes ou de ataques de hackers.

Os dados sensíveis requerem mais atenção também por parte de

usuários, pois ao gravar informações confidenciais em seu computador ou

notebook, sem se preocupar com o risco de eles caírem em mãos erradas,

caso o equipamento seja roubado ou invadido por hackers, certamente irá

expor todos seus dados importantes, uma possível solução seria a criptografia

de disco. Ao ativar a criptografia em uma partição, os dados que serão

gravados nela, a partir de então serão criptografados automaticamente, e o

eventual ladrão ou invasor terá uma tarefa nada fácil se quiser recuperá-los,

sem dispor do código criptográfico.

Na corrida para impulsionar mais serviços on-line, as aplicações web

freqüentemente sofrem com a falta de segurança incorporada. As

vulnerabilidades resultantes representam um caminho fácil para que hackers

acessem ou roubem dados e informações corporativas ou pessoais. Segundo

Lahr, um estudo realizado recentemente pela IBM ISS mostra que a

porcentagem de vulnerabilidades de risco alto continua crescendo, e 40% das

vulnerabilidades descobertas hoje são consideradas de risco crítico ou alto.

Page 17: Tcc luizfernando final

17

Apesar da maioria dos exploits para aplicações web serem gerados a

partir de ferramentas hospedadas em sites maliciosos, há uma grande

preocupação com o aumento de vulnerabilidades e explorações em aplicações

web. A quantidade de ataques utilizando métodos automatizados de

exploração de falhas, SQL Injection vem se destacando durante o ano,

mostrando que as aplicações web estão extremamente vulneráveis. (LAHR,

2007)

O número de vulnerabilidades afetando aplicações web vem crescendo

a cada ano em uma velocidade incrível. Se pegarmos de 2006 até a metade de

2008, vulnerabilidades afetando aplicações web somaram 51% de todas as

vulnerabilidades descobertas.

Os tipos predominantes de vulnerabilidades são Cross-Site-Scripting

(XSS), SQL Injection e File Include. Nos anos anteriores, as vulnerabilidades

baseadas em Cross-Site-Scripting eram as mais encontradas em aplicações

web, porém a primeira metade desse ano foi marcada pelo grande

aumento em descobertas de SQL Injection, mais que dobrando o número de

vulnerabilidades vistas no mesmo período de 2007. (LAHR, 2007)

3.3. Algoritmos fortes

Algoritmos fortes e poderosos são desenvolvidos para serem

executados por computadores ou dispositivos especiais de hardware. Na maior

parte das aplicações a criptografia é feita por software, e vários pacotes

criptográficos estão disponíveis.

Page 18: Tcc luizfernando final

18

Ter uma criptografia forte para proteger a troca de chaves de segurança

é tão importante quanto adotar um algoritmo forte para criptografar a voz.

Um exemplo de algoritmo forte para criptografar voz é o algoritmo A5,

utilizado para a autenticação e criptografia da comunicação móvel, através da

rede GSM (Global System for Mobile Communications). O protocolo utilizado

na comunicação da rede GSM utiliza, além do algoritmo A5, os algoritmos A3 e

A8. O algoritmo A3 realiza a autenticação junto a CA (Autoridade Certificadora)

pelo método de pergunta-resposta, utilizando o valor RAND (128 bits) gerado

pela CA na mensagem SRES (sinal de resposta, com 32 bits) e devolvida pelo

cliente juntamente com o valor Ki (128 bits), chave armazenado no seu SIM

card. O conteúdo as SRES, retornado pelo cliente, é comparado pelos valores

armazenados na CA, que aceita ou rejeita a autenticação. Uma vez autenticado

com sucesso, o algoritmo A8 calcula a chave de criptografia simétrica Kc (64

bits), utilizando o RAND e Ki que será utilizada para a criptografia das

mensagens trocadas.

O algoritmo A5 fica responsável por realizar o embaralhamento de bits

de dados codificados enviados a cada terminal fazendo assim a segurança da

comunicação. Existem algumas versões do algoritmo A5, como (A5/1, A5/2)

que são correlatas, porém a versão 1 provem uma encriptação mais elaborada,

logo realiza uma segurança mais forte. Possíveis vantagens:

• Os rumores que o A5 tem uma chave “efetiva” de 40 bits.

• Duas streams de 114 bits são usadas de chaves para cada frame

TDMA, e é efetuado um XOR dos dados de uplink e downlink com as

chaves.

Page 19: Tcc luizfernando final

19

• A5 é um cifrador de stream que possui três LFSR controlados por clock

com 19, 22 e 23 níveis.

• O controlador de clock tem uma função de transbordo no meio dos bits

de cada um dos três shift-registers.

Apesar do A5 ser considerado um algoritmo forte para comunicação rede GSM,

já sofreu alguns ataques. Nesses ataques destacam-se Shamir, Biryukov,

Goldberg e Wagner que conseguiram de alguma forma comprometer a

segurança deste algoritmo.

Chamamos a atenção para o fato de que não adianta aplicarmos um algoritmo

forte no processo de criptografia de voz se previamente, no processo de troca

das chaves, utilizou-se um algoritmo sem a segurança adequada para proteger

essa troca.

Podemos fazer uma analogia dos processos de segurança utilizados com um

cofre e seu segredo. Não adianta possuirmos um cofre extremante seguro

(“encriptação da voz”) se o seu segredo (“troca de chaves”) não está bem

protegido e pode ser acessado por terceiros.

3.4. Algoritmos Fracos

O MD5 (Message-Digest algorithm 5) é um algoritmo de hash de 128

bits unidirecional desenvolvido pela RSA Data Security, Inc., descrito na RFC

1321, e muito utilizado por softwares com protocolo ponto-a-ponto (P2P, ou

Peer-to-Peer, em inglês), verificação de integridade e logins.

Foi desenvolvido em 1991 por Ronald Rivest para suceder ao MD4 que

possuía alguns problemas de segurança. Por ser um algoritmo unidirecional,

Page 20: Tcc luizfernando final

20

uma hash md5 não pode ser transformada novamente no texto que lhe deu

origem. O método de verificação é, então, feito pela comparação das duas

hash (uma da base de dados, e a outra da tentativa de login). O MD5 também

é usado para verificar a integridade de um arquivo através, por exemplo, do

programa md5sum, que cria a hash de um arquivo. Isto se pode tornar muito

útil para downloads de arquivos grandes, para programas P2P que constroem

o arquivo através de pedaços e estão sujeitos à corrupção dos mesmos. Como

autenticação de login é utilizada em vários sistemas operacionais unix e em

muitos sites que requerem autenticação.

O SHA (stands for Secure Hash Algorithm) é constituído por cinco

funções hash, concebido pelo National Security Agency (NSA) e publicado pelo

Instituto Nacional de Padrões e Tecnologia (NIST). Os cinco são algoritmos

SHA-1, SHA-224, SHA-256, SHA-384, e SHA-512. SHA-1 é o mais comumente

utilizado da SHA série.

Algoritmos Hash são chamados seguros quando ele for impossível

encontrar uma mensagem que corresponde a uma determinada mensagem

digerir, e quando for impossível encontrar duas mensagens diferentes que

produzem a mesma mensagem digerir, caso se uma mensagem for mudada

até mesmo por um único personagem, o resultado será uma mensagem

completamente diferente digerir.

SHA-1 tem estas propriedades e, portanto, é referido como segura. É

projetado para trabalhar com a Assinatura Digital Algorithm (DSA). SHA-1 é um

Page 21: Tcc luizfernando final

21

one-way hash função. One-way funções são caracterizados por duas

propriedades. A primeira é que eles são uma via de sentido. Isto significa que

você pode ter uma mensagem e calcular um valor hash, mas você não pode ter

um valor hash e recriar a mensagem original. É também livre de colisão e,

portanto, não duas mensagens podem hash para o mesmo valor.

Em criptografia, RC4 (ou ARC4) é o algoritmo de criptografia de fluxo

mais usado no software e utilizado nos protocolos mais conhecidos, como

Secure Socket Layers (SSL) (para proteger o tráfego Internet) e WEP (para a

segurança de redes sem fios). RC4 não é considerado um dos melhores

sistemas criptográficos pelos adeptos da criptografia e em algumas aplicações

pode converter-se em sistemas muito inseguros. No entanto, alguns sistemas

baseados em RC4 são seguros o bastante num contexto prático.

Em 1987 Ron Rivest desenvolveu o algoritmo RC4 para a empresa RSA

Data Security, Inc., líder mundial em algoritmos de criptografia. Foi, durante

tempos, um segredo comercial muito bem guardado, muito popular, e utilizado

largamente em software, como Lotus Notes, Apple Computer’s AOCE, Oracle

Secure SQL, Internet Explorer, Netscape e Adobe Acrobat.

Sete anos depois, surge num mailing list dedicado à criptografia –

Cypherpunks - código alegadamente equivalente ao RC4. Utilizadores com

cópias legais puderam confirmar a compatibilidade. É importante ressaltar, no

entanto, que esta não é a implementação comercial, e, como tal, é

habitualmente referida como ARC4 (Alleged RC4).

Page 22: Tcc luizfernando final

22

As transformações neste algoritmo são lineares, por isso não são

necessários cálculos complexos, já que o sistema funciona basicamente por

permutações e somas de valores inteiros, o que torna este algoritmo muito

simples e rápido. Um raro exemplo de Barato, Rápido e Bom.

De uma forma geral, o algoritmo consiste em utilizar um array que a

cada utilização tem os seus valores permutados, e misturados com a chave, o

que provoca que seja muito dependente desta. Esta chave, utilizada na

inicialização do array, pode ter até 256 bytes (2048 bits), embora o algoritmo

seja mais eficiente quando é menor, pois a perturbação aleatória induzida no

array é superior.

3.5. Codificação de chaves

De acordo com a história antiga, enviar uma mensagem de forma segura

foi sempre uma preocupação que persistiu aos primeiros estrategistas em

segurança da informação que se têm notícia.

Houve época em que soldados tinham mensagens escritas em seu

couro cabeludo como estratégia para passar uma informação pelas linhas

inimigas, bastando chegar ao seu destino e ter sua cabeça raspada. (livro dos

códigos).

Na Segunda Guerra Mundial, a Alemanha tinha um sistema de

informações criptografadas. A base de todo esse sistema era uma máquina

eletro-mecânica conhecida como enigma, semelhante à apresentada na figura,

capaz de gerar mensagens criptografadas com enorme facilidade.

Page 23: Tcc luizfernando final

23

A garantia de dados secretos é à base da criptografia essencial para o

tráfego de informações seguras, especialmente nos dias atuais.

Neste mundo capitalista e corrido de hoje em dia, onde profissionais são

pressionados a agir com velocidade, onde meios de pagamento eletrônico são

uma solução muito conveniente.

As pessoas pagam suas contas e compras eletronicamente pela

internet, usando cartões de débito ou crédito, transferências de valores ou

sistemas eletrônicos instantâneos como PayPal. Emitir um cheque é

considerado antiquado e arcaico por muitos, além de consumir muito tempo e

representar custo.

Pagamentos eletronicos ia internet, seguem regulamentações bancárias

e governamentais restritas visando a segurança do sistema. Fraudes são

prevenidos através do uso conjunto de tecnologia avançada e processos de

desições bem estabelecidas. Processamento de cheques eletrônicos usa

várias ferramentas tecnológicas, chaves criptograficas, codificação de dados,

assinaturas digitais, certificados, email seguro, e tecnologia de cartão

inteligente para assegurar que a segurança do sistema seja garantida.

A codificação de chave pública é somente bem segura quanto a chave é

privada de cada indivíduo. Se alguém que não seja o proprietário da chave

privada tiver uma cópia dela e souber a senha, a codificação é quebrada

ficando vulneravel os seus dados e informações. Fichas de codificação são

usadas em conjunto com a codificação da chave pública para solucionar esta

abertura na segurança. Estas fichas fornecem uma maneira segura de gerar e

Page 24: Tcc luizfernando final

24

armazenar pares de chaves públicas e privadas, e de efetuar a assinatura.

Desta forma, chaves privadas nunca estão expostas a ataques por hackers,

vírus, ou até mesmo usuários que não levam a sério situações de segurança.

Um dos algoritmos mais seguros de encriptação de informações atuais

originou-se dos estudos de Ronald Rivest, Adi Shamir e Leonard Adleman, um

trio de Matemáticos brilhantes que mudaram a história da Criptografia.

O princípio do algoritmo é construir chaves públicas e privadas utilizando

números primos. Uma chave é uma informação restrita que controla toda a

operação dos algoritmos de criptografia. No processo de codificação uma

chave é quem dita a transformação do texto puro (original) em um texto

criptografado.

Chave Privada: É uma informação pessoal que permanece em posse da

pessoa - não publicável.

Chave Pública: Informação associada a uma pessoa que é distribuída a todos.

Uma analogia amplamente conhecida no meio acadêmico é a

transmissão de mensagens entre Alice e Bob.

Alice e Bob são personagens fictícios que precisam trocar mensagens

seguras sem interceptação. O algoritmo RSA permite essa troca segura de

mensagens pela utilização de chaves públicas e privadas:

1. Alice cria seu par de chaves (uma pública e outra privada) e envia

sua chave pública para todos, inclusive Bob;

Page 25: Tcc luizfernando final

25

2. Bob escreve sua mensagem para Alice. Após escrita, Bob faz a

cifragem do texto final com a chave pública de Alice, gerando um

texto criptografado;

3. Alice recebe o texto criptografado de Bob e faz a decifragem

utilizando a sua chave privada.

O procedimento é realizado com sucesso porque somente a chave

privada de Alice é capaz de decifrar um texto criptografado com a sua chave

pública.

É importante destacar que se aplicarmos a chave pública de Alice sobre

o texto criptografado não teremos a mensagem original de Bob. Dessa forma,

mesmo que a mensagem seja interceptada é impossível decifrá-la sem a chave

privada de Alice.

Page 26: Tcc luizfernando final

26

4. VERIFICAÇÃO DE SEGURANÇA

4.1. Introdução

Grande parte do desenvolvimento de aplicações web gira em torno da

rede mundial de computadores, a World Wide Web (Internet), conectando-se

via hyperlinks para englobar ambientes de aplicativos complexos e locais de

armazenamento virtuais, com a grande utilização dessas aplicações surgiram

problemas de segurança associados a ela.

Os navegadores e servidores tornaram-se mais capazes e poderosos,

porém, fornecendo muitos "buracos" para invasão dos hackers. Com o uso da

internet para transações financeiras de grande porte, e a transação com dados

sensíveis como o uso de números de cartões de crédito, pagamentos de

contas, acompanhamento de informações privadas e outras informações de

identificação que trafegam através da Web atualmente, os crackers e script

kiddies têm um grande incentivo para descobrir esses "buracos".

Na maioria dos casos, é simplesmente impossível para os usuários

gerenciar a própria segurança; os problemas são muitos complexos, o

ambiente é muito flexível e a maioria dos navegadores não permite que os

usuários tenham acesso fácil a informações de segurança importantes. Grande

parte da responsabilidade pela segurança deve, conseqüentemente, recair

sobre o desenvolvedor de aplicativos Web, que precisam codificar de forma

defensiva e segura para tentar impedir problemas relacionados à segurança.

O aumento na utilização de vários recursos dos navegadores modernos

levou a um problema novo e diferente na segurança da Web. A expressão

"Cross Script Site" está se tornando conhecida. Ele engloba um número maior

Page 27: Tcc luizfernando final

27

de ataques além de scripts; trata-se de uma técnica usada para muitos tipos de

ataques que tentam explorar a confiança entre um usuário e um site.

O problema surge quando um site outrora confiável incorpora em si

próprio, dados dinâmicos fornecidos pelos seus usuários sem verificar

completamente essas entradas. Usuários mal-intencionados podem explorar

esse problema fornecendo dados ao site que acabam apresentando efeitos

colaterais inesperados quando esses mesmos dados forem exibidos. Esses

efeitos normalmente envolvem o envio de dados ao cracker por meio de outro

site menos seguro, embora eles possam, em casos raros, usar o site em si

para transmitir as informações.

Isto é, através de um código em HTML ou XML, o atacante pode usar

tags maliciosos que podem trazer um sério comprometimento do sistema. Um

atacante pode fazer uma vítima enviar os seus dados para o programa. Então o

programa tem que estar apto a proteger a vítima dele.

Além disso, o cracker pode inserir referências em Java (inclusive

referências para applets maliciosos), tags DHTML, término do arquivo por

</HTML>, pedidos de tamanho de fontes absurdos e assim por diante.

Estas brechas podem ter uma vasta gama de efeitos, como expor

conexões SSL-codificadas, tendo acesso locais da rede restringidos pelo

cliente, violando políticas de segurança de domínio, fazendo a rede ficar fora

do ar, inserir um worm, criando DOS (Denial Of Service), enviando

simplesmente um código JavaScript para um loop infinito de aberturas de

janelas do browser, e até mesmo ataques muito destrutivos, inserindo ataques

Page 28: Tcc luizfernando final

28

em vulnerabilidade de segurança em linguagens de script ou buffers overflows

em browsers.

Usando tags maliciosas no lugar certo, um cracker pode até mesmo

enganar os usuários em revelar informação sensível, modificando o

comportamento de uma forma existente.

Existem providencias que podem ser tomadas para ajudá-lo a prevenir

esses tipos de ataques:

a) Sempre faça as entradas provenientes de fontes externas passarem

por um processo de validação. Isso inclui documentos extraídos de outros

sites, como sumários de notícias RSS/RDF, qualquer entrada de formulários

(mesmo proveniente de campos de formulários ocultos - é trivial POSTAR

valores arbitrários em qualquer URL), cookies ou uploads de arquivos.

b) Defina estritamente tipos de dados permitidos. Rejeitando tudo,

exceto entradas válidas (em vez de rejeitar apenas entrada inválida conhecida),

você impedirá que os crackers venham com maneiras mais difíceis de evitar o

seu validador.

c) Sempre valide a entrada após decodificá-la, e não antes. Isso impede

que o cracker lhe passe variantes de código de exploração codificados na URL.

d) Sempre especifique o charset para todas as páginas dinâmicas e,

preferencialmente, para qualquer página. Os navegadores usam conjuntos de

caracteres (charsets) padrão diferentes dependendo de diversos fatores.

Foram criadas explorações que se aproveitaram da ambigüidade do charset

Page 29: Tcc luizfernando final

29

para enviar texto aparentemente inútil em seu site que, quando exibido em um

determinado charset, produzia um efeito de ativação entre sites.

4.2. Verificação de segurança em aplicações Web

Com base na necessidade pró-ativa de segurança, neste projeto serão

tratadas técnicas adotadas para verificar a segurança de sistemas tanto do

ponto de vista das aplicações quanto das redes de computadores.

Os problemas na segurança das aplicações web são tais como:

• Problemas no Desenvolvimento de Software

• Problemas na Arquitetura de Redes

• Problemas na Configuração de Sistemas

• Problemas na Fragilidade Humana

Principais causas:

• Formação inadequada

• Falta de treinamento

• Desconhecimento do que está fazendo

Uma das melhores formas de colocar a segurança de uma aplicação

web a prova, é colocá-la sob testes.

Teste de Caixa Preta

• Identificar formas de acesso à aplicação

• Driblar lógicas de negócio e controles de acesso

Page 30: Tcc luizfernando final

30

Teste de Caixa Branca

• Revisão do código

• Identificar os trechos de código vulneráveis e possíveis

configurações inseguras

• Rastrear todas as entradas possíveis e comunicações internas

A verificação de problemas na arquitetura de redes e configurações de

sistemas tem como propósito:

1. Teste de penetração externa de rede

• Identificar componentes ocultos na rede

• Identificar formas de acesso ao ambiente

• Explorar fragilidades na segmentação incorreta de rede e na

configuração de sistemas

• Explorar vulnerabilidades dos sistemas e aplicações de forma

remota

2. Teste de penetração interna de rede

• Identificar formas de driblar a segmentação de rede e controles

de acesso de sistemas internos

• Explorar redes sem fio e sistemas internos (BARBATO, 2008)

As aplicações Web seguras são possíveis apenas quando um SDLC

“Produtos para o Ciclo de Desenvolvimento de Software” seguro é utilizado. Os

programas seguros são seguros, por concepção durante seu desenvolvimento

Page 31: Tcc luizfernando final

31

e por padrão. Existem no mínimo 300 problemas que afetam a segurança das

aplicações Web como um todo. [OWASP]

Abaixo o top 10, das falhas de segurança em uma aplicação Web

segundo a OWASP “Open Web Application Security Project”:

1. Cross Site Scripting (XSS): Os furos XSS ocorrem sempre que uma

aplicação obtém informações fornecidas pelo usuário e as envia de

volta ao navegador sem realizar validação ou codificação daquele

conteúdo. O XSS permite aos atacantes executarem scripts no

navegador da vítima, o qual pode roubar sessões de usuário, pichar

sites Web, introduzir worms, etc.

2. Falhas de injeção: As falhas de injeção, em especial SQL Injection,

são comuns em aplicações Web. A injeção ocorre quando os dados

fornecidos pelo usuário são enviados a um interpretador com parte

do comando ou consulta. A informação maliciosa fornecida pelo

atacante engana o interpretador que irá executar comandos mal

intencionados ou manipular informações.

3. Execução maliciosa de arquivos: Os códigos vulneráveis à inclusão

remota de arquivos (RFI) permitem ao atacante incluir código e

dados maliciosos, resultando em ataques devastadores, como o

comprometimento total do servidor. Os ataques de execução de

arquivos maliciosos afetam PHP, XML e todos os frameworks que

aceitem nomes de arquivo ou arquivos dos usuários.

4. Referencia insegura Direta a Objetos: Uma referência direta à objeto

ocorre quando um desenvolvedor expõe a referência a um objeto

Page 32: Tcc luizfernando final

32

implementado internamente, como é o caso de arquivos, diretórios,

registros da base de dados ou chaves, na forma de uma URL ou

parâmetro de formulário. Os atacantes podem manipular estas

referências para acessar outros objetos sem autorização.

5. Cross Site Request Forgery (CSRF): Um ataque CSRF força o

navegador da vítima, que esteja autenticado em uma aplicação, a

enviar uma requisição pré-autenticada à um servidor Web vulnerável,

que por sua vez força o navegador da vítima a executar uma ação

maliciosa em prol do atacante. O CSRF pode ser tão poderoso

quanto a aplicação Web que ele ataca.

6. Vazamento de informações e Tratamento de Erros Inapropriado: As

aplicações podem divulgar informações sobre suas configurações,

processos internos ou violar a privacidade por meio de uma série de

problemas na aplicação, sem haver qualquer intenção. Os atacantes

podem usar esta fragilidade para roubar informações consideradas

sensíveis ou conduzir ataques mais estruturados.

7. Autenticação falha e Gerenciamento de Sessão: As credenciais de

acesso e token de sessão não são protegidas apropriadamente com

bastante freqüência. Atacantes comprometem senhas, chaves ou

tokens de autenticação de forma a assumir a identidade de outros

usuários.

8. Armazenamento Criptográfico inseguro: As aplicações Web

raramente utilizam funções criptográficas de forma adequada para

proteção de informações e credenciais. Os atacantes se aproveitam

Page 33: Tcc luizfernando final

33

de informações mal protegidas para realizar roubo de identidade e

outros crimes, como fraudes de cartões de crédito.

9. Comunicações inseguras: As aplicações freqüentemente falham em

criptografar tráfego de rede quando se faz necessário proteger

comunicações críticas/confidenciais.

10. Falha de restrição de Acesso à URL: Frequentemente, uma

aplicação protege suas funcionalidades críticas somente pela

supressão de informações como links ou URLs para usuários não

autorizados. Os atacantes podem fazer uso desta fragilidade para

acessar e realizar operações não autorizadas por meio do acesso

direto às URLs.

4.3. Dados sensíveis em sistemas de armazenamento

Aplicações que precisam proteger comunicações sensíveis geralmente

falham na hora de encriptar este tráfego pela rede.

A encriptação (geralmente SSL) especialmente para páginas web com

acesso a internet e conexões com back-end deve ser usada em todas as

conexões autenticadas, senão, o aplicativo irá expor uma autenticação ou o

token de sessão.

A autenticação deve ser utilizada sempre que dados sensíveis, assim

como cartões de crédito, são transmitidos. Aplicações cujo modo de

encriptação possa ser subvertido são alvos de ataques.

Os padrões PCI requerem que todas as informações de cartões de

credito que são transmitidas pela internet sejam encriptadas.

Page 34: Tcc luizfernando final

34

Falha na hora de encriptar informações sensíveis significa que se um

invasor puder “escutar” o tráfego da rede poderá ter acesso à conversa,

incluindo quaisquer credenciais ou informações sensíveis transmitidas.

Considerando que redes diferentes terão mais, ou menos, suscetibilidade a

escuta. Entretanto, é importante notar que eventualmente um servidor será

comprometido em praticamente qualquer rede, e que invasores instalarão

rapidamente uma escuta para capturar as credenciais de outros sistemas.

O uso de SSL para comunicações com usuários finais é critico, pois é

muito provável que eles utilizem formas inseguras de acessar os aplicativos.

Porque o protocolo HTTP inclui credenciais de autenticação ou um token de

sessão para cada pedido, toda autenticação do tráfego deve ir para o SSL, não

só os pedidos de login.

O uso de encriptação de informações com servidores de back-end

também é muito importante. Mesmo que estes servidores sejam naturalmente

mais seguros, as informações e as credenciais que eles carregam são mais

sensíveis e mais impactantes. A encriptação de informação sensível, assim

como de cartões de crédito se tornou um regulamento financeiro e de

privacidade para várias empresas. Negligenciar o uso de SSL para o manuseio

de conexões de informações cria um risco de não conformidade. [OWASP,

2007]

O objetivo é verificar se as aplicações encriptam corretamente toda a

comunicação autenticada e sensível.

Page 35: Tcc luizfernando final

35

Abordagens automatizadas: ferramentas de localização de

vulnerabilidade podem verificar se o SSL é utilizado na interface do sistema e

pode localizar muitas falhas relacionadas à SSL. Entretanto, elas não têm

acesso às conexões no back-end e não podem verificar se elas são seguras.

As ferramentas de análise estática podem ajudar com análises de algumas

ligações no back-end, mas provavelmente não entenderão a lógica

customizada requerida para todos os tipos de sistemas. [OWASP, 2007]

Abordagens manuais: testes podem verificar se o SSL é utilizado e

localizar muitas falhas relacionadas à SSL na interface, mas as abordagens

automatizadas são provavelmente mais eficientes. A revisão de código é muito

eficiente para verificar o uso de SSL em conexões no back-end. [OWASP,

2007]

A parte mais importante da proteção em uma aplicação web é usar o

SSL em todas as conexões autenticadas ou em qualquer informação sensível

em transmissão. Existem inúmeros detalhes envolvendo a configuração do

SSL, então é importante entender e analisar seu ambiente. Por exemplo, o IE7

(internet Explorer 7) provê uma barra verde para certificados SSL altamente

confiáveis, mas isto não é um controle apropriado que demonstre por si só o

uso seguro da criptografia. [OWASP, 2007]

Cuidados que devem ser observados para a proteção de dados

sensíveis em sistemas de armazenamento:

Page 36: Tcc luizfernando final

36

• Utilizar SSL para todas as conexões que são autenticadas ou que

transmitam informações sensíveis e/ou de valor, assim como

credenciais, cartões de crédito, e outros.

• Assegure que as comunicações entre os elementos da infra-

estrutura, como servidores de web e sistemas de banco de dados,

estão propriamente protegidas pelo uso de camadas de

transporte de segurança ou de encriptação de nível de protocolo

para credenciais e informações de valor intrínseco.

• Dentro dos requisitos de segurança PCI 4, deve-se proteger as

informações dos proprietários de cartões de crédito em

transmissão. A conformidade com as normas PCI DSS é

mandatória até 2008 para todos os comerciantes e qualquer um

que lide com cartões de crédito. Em geral, clientes, parceiros,

funcionários e acesso administrativo online aos sistemas devem

ser encriptados via SSL ou similar. [OWASP, 2007].

Geralmente, a única proteção para uma URL é não mostrar o link para

usuários não autorizados. No entanto, um usuário motivado, hábil ou apenas

um audacioso atacante pode ser capaz de achar e acessar estas páginas,

executar funções e visualizar dados. Segurança por obscuridade não é

suficiente para proteger os dados e funções sensíveis em uma aplicação.

Verificações de controles de acesso devem ser executadas antes de permitir

uma solicitação uma função sensível, na qual garante que somente o usuário

autorizado acesse a respectiva função. [OWASP, 2007].

Page 37: Tcc luizfernando final

37

O principal método de ataque para esta vulnerabilidade é chamado de

“navegação forçada” (“forced browsing”), na qual envolve técnicas de

adivinhação de links (“guessing”) e força bruta (“brute force”) para achar

páginas desprotegidas. É comum que aplicações utilizem códigos de controle

de acesso por toda a aplicação, resultando em um modelo complexo que

dificulta a compreensão para desenvolvedores e especialistas em segurança.

Esta complexidade torna provável a ocorrência de erros e algumas páginas não

serão validadas, deixando a aplicação vulnerável. [OWASP, 2007].

Mas não é somente nos domínios da organização que dados podem ser

violados. Deve-se ter um cuidado especial com a computação móvel e o

trabalho remoto. Convém que seja adotada uma política formal levando em

conta os riscos de trabalhar com estes recursos. Esta política deve conter os

requisitos para proteção física, controles de acesso, criptografia e etc. É

necessário que os usuários que se beneficiam deste recurso recebam

treinamento específico. (RODRIGUES, 2009)

É importante que os sistemas sejam monitorados para detectar

divergências entre a política de controle de acesso e os registros de eventos

monitorados, fornecendo evidências no caso de incidentes de segurança.

(RODRIGUES, 2009)

Registro de eventos de segurança relevantes é mantido por um período

de tempo para auxiliar em investigações futuras. (RODRIGUES, 2009)

Page 38: Tcc luizfernando final

38

4.4. Pesquisa de vulnerabilidades

Os ataques a sistemas computacionais têm se tornado mais freqüentes

e cada vez mais complexos, distribuídos e em larga escala tanto através da

internet quanto dentro da própria infra-estrutura. Códigos maliciosos

automatizados que trabalham de forma aleatória e pessoas com motivações

especificas exploram vulnerabilidades em aplicações e fragilidades em

arquiteturas de rede. Para endereçar estas ameaças efetivamente, não é

prudente esperar que a exploração seja efetuada, e sim antecipar os possíveis

ataques de forma a aumentar o nível de segurança e estar preparado

adequadamente. [Barbato]

Ataques como phishing, podem explorar várias vulnerabilidades,

particularmente, XSS e problemas de autenticação e autorização. Violação de

privacidade devido à validação fraca, regras de negócio e verificações de

autorizações fracas. Roubo de identidade por meio de controles de criptografia

fracos ou não existentes, inclusão de arquivo remoto e autenticação, regras de

negócio e verificação de autorização. Comprometimento de sistema, alteração

de informações e destruição de dados por ataques de injeção e inclusão de

arquivo remoto. Perda financeira por meio de transações não autorizadas e

ataques CSRF. Perda de reputação devido à exploração de qualquer uma das

vulnerabilidades anteriormente citadas. Uma vez que a organização se

distancie da preocupação de controles reativos e vai de encontro à pro-

atividade na redução de riscos de seu negócio, ela melhorará a conformidade

com regimes regulatórios, reduzirá custos operacionais, e certamente terá um

sistema mais robusto e seguro como resultado. (Barbato 2008)

Page 39: Tcc luizfernando final

39

O XSS, mencionado em parágrafos anteriores, Cross Site Scripting, é de

fato um subconjunto de inserções HTML. XSS é a questão de segurança em

aplicações Web mais prevalente e perniciosa. Os furos XSS ocorrem em

aplicações quaisquer que recebam dados originados do usuário e o envie ao

navegador sem primeiramente validar ou codificar aquele conteúdo.

O XSS permite aos atacantes executarem script no navegador da vítima,

podendo assim “seqüestrar” sessões de usuários, desfigurarem web sites,

inserir conteúdo hostil, conduzir ataques de roubo de informações pessoais

(phishing) e obter o controle do navegador do usuário usando um script mal

intencionado (malware). O script malicioso é freqüentemente em Java Script,

mas qualquer linguagem de script suportada pelo navegador da vítima é um

alvo potencial para este tipo de ataque.

A forma de descobrir as falhas de um software é similar ao método

utilizado em ataques reais, em especial, no que se refere à pseudo-atacantes

(“script kiddies”). Protegendo sua aplicação contra vulnerabilidades proverá

uma proteção módica contra as formas mais comuns de ataques e ajudará a

traçar um rumo para melhorar a segurança de seu software.

Todos os frameworks de aplicação web são vulneráveis a Cross Site

Scripting (XSS). Existem três tipos bem conhecidos de XSS: refletido,

armazenado e inserção DOM.

O XSS refletido é o de exploração mais fácil – uma página refletirá o

dado fornecido pelo usuário como retorno direto a ele: echo

$_REQUEST['userinput'].

Page 40: Tcc luizfernando final

40

O XSS armazenado recebe o dado hostil, o armazena em arquivo,

banco de dados ou outros sistemas de suporte à informação e então, em um

estágio mais avançado mostra o dado ao usuário, não filtrado. Isto é

extremamente perigoso em sistemas como CMS, blogs ou fóruns, onde uma

grande quantidade de usuários acessará entradas de outros usuários.

Com ataques XSS baseados em DOM, o código Java Script do site e as

variáveis são manipulados ao invés dos elementos HTML.

Alternativamente, os ataques podem ser, uma combinação dos três

tipos. O perigo com o XSS não está no tipo de ataque, mas na sua

possibilidade. Comportamentos não padrão do navegador pode introduzir

vetores de ataque sutis. O XSS é também potencialmente habilitado a partir de

quaisquer componentes que o browser utilize.

Os ataques são freqüentemente implementados em Java Script, que é

uma ferramenta poderosa de scripting. O uso do Java Script habilita atacante a

manipular qualquer aspecto da página a ser renderizada, incluindo a adição de

novos elementos, como um espaço para login que encaminha credenciais para

um site hostil, a manipulação de qualquer aspecto interno do DOM e a remoção

ou modificação de forma de apresentação da página. O Java Script permite o

uso do XmlHttpRequest, que é tipicamente usado por sites que usam a

tecnologia AJAX, mesmo se a vítima não use o AJAX no seu site.

O uso do XmlHttpRequest permite, em alguns casos, contornar a política

do navegador conhecida como "same source origination" – assim,

encaminhando dados da vítima para sites hostis e criar worms complexos e

Page 41: Tcc luizfernando final

41

zumbis maliciosos que duram até o fechamento do navegador. Os ataques

AJAX não necessitam ser visíveis ou requerem interação com o usuário para

realizar os perigosos ataques cross site request forgery (CSRF).

O objetivo é verificar que todos os parâmetros da aplicação são

validados e/ou recodificados antes de ser incluídos em páginas HTML.

Abordagens automatizadas: ferramentas de teste de penetração

automatizadas são capazes de detectar XSS de reflexão a partir de injeção de

parâmetro, mas freqüentemente falha na localização de XSS persistente,

particularmente se a saída do vetor de injeção XSS é prevenida via verificação

de autorização (como por exemplo, se um usuário fornece dados de entradas

maliciosos que são vistos posteriormente apenas pelos administradores).

Ferramentas de análise de código fonte podem encontrar pontos APIs com

falhas ou perigosas, mas é comum não poderem determinar se a validação ou

recodificação foram aplicadas, que pode resultar em falsos positivos. Nenhuma

ferramenta é capaz de encontrar XSS baseado em DOM, isso significa que

aplicações em Ajax estarão sempre em risco se somente forem aplicados

testes automatizados. [OWASP]

Abordagens manuais: caso um mecanismo centralizado de validação,

e recodificação for usado, da maneira mais eficiente de verificar a segurança é

verificar o código. Se uma implementação distribuída for usada, então a

verificação demandará esforço adicional considerável. O teste demanda muito

esforço, pois a superfície de ataque da maioria das aplicações é muito grande.

[OWASP]

Page 42: Tcc luizfernando final

42

A melhor proteção para XSS está na combinação de validação de “lista

branca” de todos os dados de entrada e recodificação apropriada de todos os

dados de entrada. A validação habilita a detecção de ataques e a recodificação

previne qualquer injeção de script bem sucedida de ser executada no

navegador. A prevenção de XSS ao longo da aplicação como um todo requer

uma abordagem arquitetural consistente. [OWASP]

Validação de entrada: utilize mecanismo padrão de validação de

entrada para validar todas as entradas quanto ao tamanho, tipo, sintaxe e

regras de negócio antes de aceitar que o dado seja mostrado ou armazenado.

Use uma estratégia de validação “aceite o conhecido como bom”. Rejeite

entrada inválida ao invés da tentativa de corrigir dados potencialmente hostis.

Não se esqueça que as mensagens de erro podem também incluir dados

inválidos. [OWASP]

Forte codificação de saída: garanta que qualquer dado de entrada do

usuário esteja apropriadamente codificado (tanto para HTML ou XML,

dependendo do mecanismo de saída) antes da renderização, usando a

abordagem de codificação de todos os caracteres, com exceção de um

subconjunto muito limitado. Esta é a abordagem da biblioteca Microsoft Anti-

XSS e a biblioteca prevista OWASP PHP Anti-XSS. [OWASP]

Adicionalmente, configure a codificação de caracteres para cada página

a ser produzida como saída, que diminuirá a exposição a algumas variações.

[OWASP]

Especifique a codificação de saída como ISO 8859-1 ou UTF-8: Não

Page 43: Tcc luizfernando final

43

permita que o atacante escolha isso para seus usuários. [OWASP]

Não use validação de “lista negra” para detectar XSS na entrada ou

codificação de saída. A procura ou troca de poucos caracteres ("<" ">" e outros

caracteres similares ou frases como “script”) é fraco e tem sido explorado com

sucesso. Mesmo uma tag “<b>” não verificada é insegura em alguns contextos.

O XSS possui um conjunto surpreendente de variantes que torna simples

ultrapassar validações de “lista negra” (Blacklist). [OWASP]

Cuidado com os erros de conversão. As entradas devem ser

decodificadas e convertidas para a representação interna corrente antes de ser

validada. Certifique-se que sua aplicação não decodifica a mesma entrada

duas vezes. Tais erros podem ser usados para ultrapassar esquemas de “lista

branca” pela introdução de entradas perigosas após serem checados.

[OWASP]

4.5. Ferramentas de pesquisa de códigos inseguros

A revisão de código, é a melhor forma de verificar se a aplicação

criptográfica tem mecanismos de chaves corretamente implementados, no

ponto de vista de segurança, é muito importante que se tenham profissionais

treinados em identificar problemas relacionados à segurança, do que um

número grande de ferramentas especifica para isso. Isto porque alguns erros

de segurança são difíceis de encontrar, e algumas vezes são considerados

“soluções normais” pela maioria dos desenvolvedores. Por exemplo, a

utilização de variáveis globais em linguagens de programação para aplicações

web é uma solução, que vários desenvolvedores consideraram, válida.

Page 44: Tcc luizfernando final

44

Levou algum tempo até que olhos treinados em segurança

identificassem o problema e, lentamente, isso fosse se tornando uma prática

esquecida. O ponto é procurar problemas de segurança em código requer

olhos que estejam especificamente procurando por erros e saibam como os

identificar.

Existem várias ferramentas que podem ajudar no processo de revisão,

logicamente nada é melhor que alguém ativamente analisando o código em

busca de problemas, mas, ferramentas podem ajudar a apontar os erros mais

gritantes e facilitar o trabalho de quem está fazendo a revisão. Nada substitui

olhos ativamente revisando o código, ferramentas ajudam, mas nunca devem

substituir o fator humano. O processo pode ser inclusive automatizado no

sistema de controle de versões ou no processo de se fazer um release.

Existem ferramentas que verificam o código por funções inseguras,

variáveis mal utilizadas, vulnerabilidades conhecidas de linguagens e ataques

comuns a aplicações web. A implantação de uma rotina de revisão de código

pode ser automatizada e se realizada desde o início do projeto é um trabalho

não muito pesado. Algumas ferramentas que podem ajudar na pesquisa de

testes de segurança em aplicações são citadas abaixo.

O Nessus é uma ferramenta de pesquisa remota de vulnerabilidades

para sistemas Linux, BSD, Solaris e outros Unixes. O seu funcionamento é

baseado em plugins, possui uma interface GTK e efectua mais de 1200

verificações remotas de segurança. Produz relatórios em HTML, XML, LaTeX e

texto simples que indicam as vulnerabilidades detectadas e os passos que

devem ser seguidos para elimina-los.

Page 45: Tcc luizfernando final

45

Snort: Um sistema de detecção de intrusões (IDS) público.

O Snort é uma ferramenta eficiente de detecção de intrusões, capaz de efetuar

análises em tempo real de tráfego capturado e registo de dados em redes IP.

Permite analisar protocolos, procurar conteúdos e pode ser usado para

detectar diversos ataques e sondas, nomeadamente transbordamentos de

memória (buffer overflows), levantamentos furtivos (stealth) de portos de

transporte, ataques usando CGI, sondas para SMB, tentativas de identificação

de sistemas operacionais, etc. O Snort usa uma linguagem flexível baseada em

regras para descrever o tráfego que deverá ser considerado ou não para

posterior análise.

Vários profissionais da área de segurança de dados sugeriram que a

Console de Análise de Bases de Dados de Intrusões (Analysis Console for

Intrusion Databases, ACID) fosse usada com o Snort.

GFI LANguard: Um pesquisador de problemas de segurança comercial

para Windows, o LANguard analisa redes e produz relatórios com informação

que inclui quais os nível de atualização (Service Packs level) do sistema de

cada máquina, as correções de falha de segurança , os recursos partilhados

disponíveis, serviços/aplicações disponíveis no computador, entradas-chave do

registo (registry), senhas fracas, utilizadores e grupos e mais ainda. Os

resultados da análise são apresentados num relatório em HTML, que pode ser

adaptado/pesquisado. Aparentemente uma versão gratuita limitada está

disponível para fins não comerciais ou para avaliação.

O Whisker é ferramenta de inspeção de servidores HTTP que permite

detectar muitos problemas de segurança, nomeadamente a presença de CGI

Page 46: Tcc luizfernando final

46

perigosos. Libwhisker é uma biblioteca de perl (usada pelo Whisker) que

permite a criação de inspetores de HTTP específicos. Pretende-se auditar mais

do que servidores HTTP.

Retina: pesquisador de vulnerabilidades comercial da eEye. Tal como o

Nessus e o ISS Internet Scanner previamente mencionados, a função do

Retina é a de procurar vulnerabilidades em todas as máquinas de uma rede e

de produzir um relatório de avaliação sobre as mesmas.

Page 47: Tcc luizfernando final

47

5. PROTEÇÃO

5.1. Introdução

A Informação é tudo que pode ser armazenado ou transferindo

destinado a um propósito e sendo de utilidade ao ser humano. A informação

digital pode ser visualizada de diversas maneiras, à medida que ela circula por

vários ambientes, percorrendo diversos fluxos de trabalho, podendo ser

armazenada para os variados fins, possibilidade ela ser lida, alterado e

excluída.

A Segurança da informação é um conjunto de medidas que têm por

objetivo proteger e preservar informações de sistemas de informações,

assegurando-lhes integridade, disponibilidade, não repúdio, autenticidade e

confidencialidade. Esses elementos constituem os cinco pilares da proteção da

segurança da informação e logo são essenciais para assegurar a integridade e

a confiabilidade em sistemas de informações. Os componentes criptográficos

da segurança da informação cuidam da confidencialidade, integridade e

autenticidade.

Vale ressaltar que o uso dos pilares é feito de acordo com as

necessidades específicas de cada organização, que pode ir de certo nível de

ameaças a quaisquer outras decisões de gestão de riscos. Esses pilares são

essenciais no mundo atual, onde se tem ambientes públicos e privados

conectados a nível mundial. Assim, é necessário dispor de uma tática, levando

em conta os pilares usados pela segurança de informação, com o objetivo de

compor uma arquitetura de segurança que venha unificar os propósitos de

todos eles.

Page 48: Tcc luizfernando final

48

Hoje em dia, onde conhecimento e informação e criptografia são fatores

de muita importância para qualquer organização ou nação, para que suas

informações e dados sensíveis sejam bem protegidos, a segurança da

informação é um pré-requisito para todo e qualquer sistema de informações.

Uma proteção bem elaborada oferece suporte à prevenção de revelação

não autorizada de informações, além de manter os dados e recursos ocultos a

usuários sem privilégio de acesso. A integridade trata que a modificação não

autorizada de informações.

As ameaças podem ser de diversos tipos, elas são, geralmente,

classificadas como ativa, passiva, maliciosa, não maliciosa. Para combater

essas 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.

5.2. Mecanismos de segurança

O suporte para as recomendações de segurança pode ser encontrado

em:

Page 49: Tcc luizfernando final

49

Controles físicos: são barreiras que limitam o contato ou acesso direto a

informação ou a infra-estrutura, que garante a existência da informação que a

suporta. Existem mecanismos de segurança que apóiam os controles físicos:

Portas, trancas, paredes, blindagem, guardas, etc ..

Controles lógicos: são barreiras que impedem ou limitam o acesso a

informação, que está em ambiente controlado, geralmente eletrônico, e que, de

outro modo, ficaria exposta a alteração não autorizada por elemento mal

intencionado. Existem mecanismos de segurança que apóiam os controles

lógicos:

Mecanismos de criptografia, que permitem a transformação reversível da

informação de forma a torná-la ininteligível a terceiros. Utiliza-se para tal,

algoritmos determinados e uma chave secreta para, a partir de um conjunto de

dados não criptografados, produzir uma seqüência de dados criptografados. A

operação inversa é a decifração.

Assinatura digital: Um conjunto de dados criptografados, associados a

um documento do qual são função, garantindo a integridade do documento

associado, mas não a sua confidencialidade.

Mecanismos de garantia da integridade da informação: Usando funções

de "Hashing" ou de checagem, consistindo na adição.

Mecanismos de controle de acesso: Palavras-chave, sistemas

biométricos, firewalls, cartões inteligentes.

Mecanismos de certificação: Atesta a validade de um documento.

Page 50: Tcc luizfernando final

50

Integridade: Medida em que um serviço/informação é genuíno, isto é,

está protegido contra a personificação por intrusos.

Honeypot: É o nome dado a um software, cuja função é detectar ou de

impedir a ação de um cracker, de um spammer, ou de qualquer agente externo

estranho ao sistema, enganando-o, fazendo-o pensar que esteja de fato

explorando uma vulnerabilidade daquele sistema.

Protocolos seguros: uso de protocolos que garantem um grau de

segurança e usam alguns dos mecanismos citados aqui existe hoje em dia um

elevado número de ferramentas e sistemas que pretendem fornecer segurança.

Alguns exemplos são os detectores de intrusões, os antivírus, firewalls,

firewalls locais, filtros anti-spam, fuzzers, analisadores de código, etc.

5.3. Ameaças à segurança

As ameaças à segurança da informação são relacionadas diretamente à

perda de suas características principais, que são:

Perda de Confidencialidade: seria quando há uma quebra de sigilo de

uma determinada informação (ex: a senha de um usuário ou administrador de

sistema) permitindo com que sejam expostas informações restritas as quais

seriam acessíveis apenas por um determinado grupo de usuários.

Perda de Integridade: aconteceria quando uma determinada

informação fica exposta a manuseio por uma pessoa não autorizada, que

efetua alterações que não foram aprovadas e não estão sob o controle do

proprietário (corporativo ou privado) da informação.

Page 51: Tcc luizfernando final

51

Perda de Disponibilidade: acontece quando a informação deixa de

estar acessível por quem necessita dela. Seria o caso da perda de

comunicação com um sistema importante para a empresa, que aconteceu com

a queda de um servidor ou de uma aplicação crítica de negócio, que

apresentou uma falha devido a um erro causado por motivo interno ou externo

ao equipamento ou por ação não autorizada de pessoas com ou sem má

intenção.

No caso de ameaças à rede de computadores ou a um sistema, estas

podem vir de agentes maliciosos, muitas vezes conhecidos como crackers,

(hackers não são agentes maliciosos, pois tentam ajudar a encontrar possíveis

falhas). Estas pessoas são motivadas para fazer esta ilegalidade por vários

motivos. Os principais são: notoriedade, auto-estima, vingança e o dinheiro. De

acordo com pesquisa elaborada pelo CSI (Computer Security Institute), mais de

70% dos ataques partem de usuários legítimos de sistemas de informação

(Insiders), o que motiva corporações a investir largamente em controles de

segurança para seus ambientes corporativos (intranet).

5.4. Nível de segurança de proteção

As organizações empresariais e governamentais devem decidir o nível

de segurança que deverá ser estabelecido para que suas redes, sistemas,

recursos físicos e lógicos, tenham proteção realmente segura. No nível de

segurança devem ser quantificados os custos associados aos ataques e os

associados à implementação de mecanismos de proteção para minimizar a

probabilidade de ocorrência de um ataque.

Page 52: Tcc luizfernando final

52

Segurança física: Considera as ameaças físicas como incêndios,

desabamentos, relâmpagos, alagamento, acesso indevido de pessoas, forma

inadequada de tratamento e manuseamento do material.

Segurança lógica: Atenta contra ameaças ocasionadas por vírus,

acessos remotos à rede, backup desatualizados, violação de senhas, etc.

5.5. Políticas de segurança de proteção

De acordo com o RFC 2196 (The Site Security Handbook), uma política

de segurança consiste num conjunto formal de regras que devem ser seguidas

pelos utilizadores dos recursos de uma organização.

As políticas de segurança devem ter implementação realista, e definir

claramente as áreas de responsabilidade dos utilizadores, do pessoal de

gestão de sistemas e redes e da direção. Deve também adaptar-se a

alterações na organização. As políticas de segurança, definem procedimentos

de segurança adequados, processos de auditoria à segurança e estabelecem

uma base para procedimentos legais na sequência de ataques.

O documento que define a política de segurança deve deixar de fora

todos os aspectos técnicos de implementação dos mecanismos de segurança,

pois essa implementação pode variar ao longo do tempo. Deve ser também um

documento de fácil leitura e compreensão, além de resumido.

Algumas normas definem aspectos que devem ser levados em

consideração ao elaborar políticas de segurança. Entre essas normas estão a

BS 7799 (elaborada pela British Standards Institution) e a NBR ISO/IEC 17799

Page 53: Tcc luizfernando final

53

(a versão brasileira desta primeira). A ISO começou a publicar a série de

normas 27000, em substituição à ISO 17799 (e por conseguinte à BS 7799),

das quais a primeira, ISO 27001, foi publicada em 2005. ( Segadas, 2009 )

Existem duas filosofias por trás de qualquer política de segurança: a

proibitiva - tudo que não é expressamente permitido é proibido e a permissiva -

tudo que não é proibido é permitido.

Os elementos da política de segurança devem ser considerados:

A Disponibilidade: o sistema deve estar disponível de forma que quando

o usuário necessitar possa usar. Dados críticos devem estar disponíveis

ininterruptamente.

A Utilização: o sistema deve ser utilizado apenas para os determinados

objetivos.

A Integridade: o sistema deve estar sempre íntegro e em condições de

ser usado.

A Autenticidade: o sistema deve ter condições de verificar a identidade

dos usuários, e este ter condições de analisar a identidade do sistema.

A Confidencialidade: dados privados devem ser apresentados somente

aos donos dos dados ou ao grupo por ele liberado. ( Segadas, 2009 )

Page 54: Tcc luizfernando final

54

6. CONCLUSÃO

O mundo de hoje fornece mecanismos facilitadores para adquirir

produtos e esse fato nos faz acreditar que podemos comprar soluções de

segurança prontas para atender a nossa demanda. Nem sempre o que nós

estamos procurando pode ser encontrado em prateleiras de lojas de

informática e também não podemos simplesmente gerar uma receita de

bolo na forma de algoritmo.

Técnicas e procedimentos mais eficazes são desenvolvidos como

tentativa de utilização de ferramentas na área de criptografia e chaves

digitais, atualmente conhecidos para a construção de mecanismos

criptográficos de dados digitais e de meios para que sejam integrados em

sistemas de informação que queiram ser protegidos.

Algumas áreas de conhecimento são diretamente correlacionadas

com o nosso assunto de criptografia e chaves digitais. Podemos citar o

conhecimento de aritmética modular (aritmética dos processadores digitais),

do funcionamento básico de sistemas operacionais, conhecimento em redes

de computadores e também noção de complexidade de algoritmos.

Criptografia é uma especialização da matemática e engenharia que

oferecem técnicas de proteção a mecanismos de acesso e a integridade de

dados, e também de ferramentas para avaliação da eficácia dessas

técnicas. Estas técnicas e ferramentas são relacionadas no sentido sintático

e não podemos atribuir confiança no sentido semântico nas informações

dos dados veiculados.

Page 55: Tcc luizfernando final

55

Para uma boa política de segurança, esses três itens devem ser

respeitados:

• Planejamento - Avaliar e analisar os riscos e custos.

• Especificação para implementar serviços e salvaguardas.

• Atribuição documentada de autorização e responsabilidades.

Um exemplo de roteiro para planejamento para as políticas de

Segurança de Dados:

• Quais recursos e ativos em bits devem ser protegidos?

• De quem (securityu) e de que(safety) se quer protegê-los?

• Qual a chance/probabilidade de acidentes, ameaças e

trapaças?

• Como medir o valor dos ativos em bits e recursos?

• Quais ações podem protegê-los com custo/benefício aceitável?

• Que planos de contingência, reavaliação, terceirização, etc.

decorrem?

Além de disponibilidade de serviço de segurança é importante

também saber o que fazer quando se ocorre algum problema não

planejado. Podemos citar algumas salvaguardas não computacionais

abaixo:

• Segurança física - controle de acesso físico, blindagem, etc.

• Segurança funcional - recrutamento, treinamento, motivação.

Page 56: Tcc luizfernando final

56

• Segurança administrativa - auditoria, fiscalização,

contingência.

• Segurança na mídia - backup, destruição de material, etc.

• Radiação ou Engenharia Reversa - blindagem no

encapsulamento.

• Controles de ciclos - reavaliação da política de segurança.

É indiscutível a importância da segurança da informação no cenário

atual. O aumento no número de aplicações, a distribuição dessas aplicações

através do uso maciço de redes de computadores e o número crescente de

ataques a esses sistemas retrata essa preocupação e justifica o esforço em

pesquisas voltadas a essa área. Novos mecanismos, técnicas mais eficientes e

normas internacionais para a gestão da segurança da informação, são

constantemente desenvolvidos, incentivados por organismos governamentais e

empresas preocupadas com o atual estágio de fragilidade da maioria das

instalações computacionais.

A disponibilidade dessas novas ferramentas, no entanto, não tem

representado um aumento equivalente no nível de segurança das

organizações, retrato, principalmente, da falta de uma abordagem correta na

seleção e implementação dessas técnicas. A maioria dos profissionais

responsáveis pela gerência de segurança, oriundos principalmente da área de

computação, possui uma formação técnica que os leva a partir da seleção de

mecanismos sem considerar as reais necessidades da organização. Essa

prática causa distorções que vão desde o gasto desnecessário com

mecanismos desproporcionais ao problema enfrentado até a falta de proteção

Page 57: Tcc luizfernando final

57

às informações realmente importantes, problemas abordados como ponto

principal neste curso.

Segurança é um atributo muito complexo e difícil de implementar

consistentemente em um sistema, principalmente em ambientes

computacionais. Projetar e implementar um sistema visando segurança

significa analisar um conjunto complexo de situações adversas onde o

projetista e um oponente elaboram estratégias de modo completamente

independente. O resultado desta análise depende fortemente das escolhas e

técnicas feitas por cada um dos oponentes.

Outra característica marcante é que segurança é essencialmente um

atributo negativo. É fácil caracterizar um sistema inseguro, mas não existe uma

metodologia capaz de provar que um sistema é seguro. Assim, um sistema é

considerado seguro se não foi possível, até o momento atual, determinar uma

maneira de torná-lo inseguro.

Com muita freqüência isto decorre simplesmente do fato que não foram

testados todos os métodos de ataque (ou até mesmo menosprezados alguns)

ou que não foram identificados todos os possíveis atacantes.

Por esses e outros fatores, tão inviável e ineficaz quanto construir um

prédio sem planejar antecipadamente cada detalhe, é impossível pensar em

segurança como um apanhado de ferramentas dispostas sem uma avaliação

prévia, levando em consideração vulnerabilidades, riscos, importância dos bens

e relação custo/benefício. Isso representa a conjugação de três critérios

fundamentais: política, cultura e mecanismos de segurança. O desequilíbrio

Page 58: Tcc luizfernando final

58

causado pela falência de algum desses três aspectos pode representar a

queda significativa no nível de segurança esperado, cenário comum em muitas

instalações atuais.

A política de segurança dita os princípios e as regras que regem a

segurança da informação, importante para balizar a escolha de mecanismos e

a adoção de procedimentos relacionados ao assunto. A cultura de segurança é

um dos aspectos mais delicados e está ligada ao treinamento e

conscientização de todos os envolvidos no processo computacional, sejam eles

funcionários, técnicos ou mesmo acadêmicos. Sem essa preocupação,

qualquer estratégia de segurança será ineficaz pela simples razão de estar

suscetível a ataques que explorem tal fragilidade, como os conhecidos ataques

de engenharia social, por exemplo. Por fim, mas não menos importante, os

mecanismos de segurança garantem o cumprimento da política de segurança

traçada, e devem estar alinhados com as exigências da mesma.

O grande problema observado atualmente é o excessivo enfoque em

mecanismos de segurança, causando distorções já citadas e, em muitos casos,

uma falsa sensação de segurança. Sistemas operacionais são selecionados

segundo características meramente comerciais, firewalls são mal configurados

e instalados em pontos pouco eficazes e sistemas de detecção de intrusão são

comprados e instalados sem um conhecimento mínimo da realidade de tal

organização, entre outros problemas. Escolhas equivocadas como essas estão

ligadas ao despreparo que a maioria dos profissionais responsáveis pela

administração e gerência tem em relação a práticas corretas de avaliação,

seleção e implementação de técnicas de segurança. Não bastam bons

Page 59: Tcc luizfernando final

59

conhecimentos em mecanismos de segurança: é preciso levar em

consideração a política e a cultura de segurança.

Isso reforça a importância de profissionais que tenham uma boa noção

de todos os aspectos que permeiam a verdadeira segurança, encarando-a

como uma política global dentro de uma organização e não como atitudes

isoladas e mal planejadas. Além disso, vale ressaltar a importância da

experiência quando o assunto é segurança, o que pode ser adquirido com o

tempo ou através do contato com exemplos e situações práticas na criação de

políticas, no estabelecimento de uma cultura e na implementação de

mecanismos adequados.

Page 60: Tcc luizfernando final

60

7. REFERÊNCIA BIBLIOGRÁFICA

• BARBATO, L.G.C., Segurança de Sistemas: Antecipando os

Acontecimentos, 2008.

• OWASP Foundation, As 10 vulnerabilidades de segurança mais

criticas em aplicações Web. Traduzido por: Brandão, C., Braz, F. A.,

Militelli, L. C., Rodrigues, M. A., Hamada, M., Montoro, R., 2007.

• SILVA, L. S. Uma metodologia para detecção de ataques no tráfego

de redes baseada em redes neurais. São José dos Campos: INPE,

2007.

Page 61: Tcc luizfernando final

61

8. SITES PESQUISADOS:

• ARAÚJO, João Gualberto R. 2009. Disponível em:

http://www.ogeda.com.br/php/modules/eNoticias/column.php?columnID=

1

• WIKIPÉDIA, acessado em 03/06/2009, disponível em:

http://pt.wikipedia.org/wiki/Frameworks

• ZEMEL, Tárcio, 2009. Disponível em:

http://codeigniterbrasil.com/passos-iniciais/o-que-e-um-framework-

definicao-e-beneficios-de-se-usar-frameworks/

• LAHR, ThiagoCanozzo, 2009. Disponível em:

http://www.ogeda.com.br/php/modules/eNoticias/column.php?columnID=

1

• SLAVADOR, Henrique, 2009. Disponível em:

http://henriquesalvador.blogspot.com/2009/04/algoritmo-a5.html

• CIVIDANES, Segurança Lógica 2009 ITA, 2009. Disponível em:

http://fcividanes.blogspot.com/2009/04/algoritmo-a5.html

• Desenvolvimento Seguro e Software Livre – Dica 2: Revisão de Código,

2009. Disponível em:

http://core.eti.br/2008/12/27/desenvolvimento-seguro-e-software-livre-

dica-2-revisao-de-codigo/