Escolar Documentos
Profissional Documentos
Cultura Documentos
Florianpolis
2015
1
Florianpolis
2015
2
______________________________________________________
Professora e orientadora Vera Rejane Niedersberg Schuhmacher, Dra.
Universidade do Sul de Santa Catarina
______________________________________________________
Prof. Aran Bey Tcholakian Morales, Dr.
Universidade do Sul de Santa Catarina
3
AGRADECIMENTOS
A Deus, pois graas a Ele que tive sade para poder realizar este sonho.
Aos meus amados pais, Srgio e Telma, que me deram todo amor e dentre tantas
outras coisas, mais essa oportunidade maravilhosa na vida.
Ao meu irmo Rodolfo por estar sempre presente.
A toda minha famlia que, mesmo longe fisicamente sempre est no meu corao.
A minha namorada Gabriela, que faz as coisas ruins serem minsculas e as coisas
boas serem gigantes, me dando sempre muito amor e carinho.
Aos meus amigos por dividirem minhas felicidades e frustraes, sempre
estendendo a mo quando precisei.
A minha orientadora e coordenadora do curso, doutora Vera Schuhmacher, a qual
admiro imensamente desde a graduao e agradeo por todas as horas de ateno
dispensadas.
5
RESUMO
Este trabalho tem por objetivo apresentar tcnicas de segurana na codificao de softwares,
principalmente em aplicaes web. O estudo possui bases nas normas NBR ISO/IEC 27001 e
27002, e principalmente nas tcnicas gerais e praticas de dois desenvolvedores da Microsoft,
Howard e LeBlanc. O estudo tambm contribui para elucidar a importncia de eliminar, ou ao
menos atenuar, as vulnerabilidades web mais conhecidas, descrevendo seus impactos e at
solues especficas. Apresenta um sistema web desenvolvido em PHP, o qual teve diversas
tcnicas de segurana aplicadas e o resultado dos testes de segurana efetuados por meio do
software Acunetix Vulnerability Scanner perante o sistema implementado.
ABSTRACT
This work aims to present security techniques in software coding, especially in web
applications. The study has bases in NBR ISO/IEC 27001 and 27002 , and especially in the
general techniques and practices of two Microsoft developers, Howard and LeBlanc. The
study also contributes to elucidate the importance of eliminating, or at least mitigate, the most
known web vulnerabilities, describing their impact and specific solutions. This work features
a web system developed in PHP, which had several security techniques applied, showing the
results of safety tests carried out by the Acunetix Vulnerability Scanner software in the
implemented system.
LISTA DE QUADROS
LISTA DE FIGURAS
SUMRIO
1 INTRODUO.................................................................................................................... 12
1.1 PROBLEMTICA E JUSTIFICATIVA ............................................................................ 13
1.2 OBJETIVOS ....................................................................................................................... 14
1.2.1 Objetivo Geral .............................................................................................................................................. 14
1.2.2 Objetivos Especficos.................................................................................................................................... 15
1.3 ESTRUTURA DA MONOGRAFIA .................................................................................. 15
2 SEGURANA DA INFORMAO .................................................................................. 16
2.1 FALHAS DE SEGURANA ............................................................................................. 18
2.1.1 Causas ...........................................................................................................................................................18
2.1.2 Efeitos.............................................................. ............................................................................................. 21
3 PADRES DE SEGURANA ........................................................................................... 22
3.1 NBR ISO/IEC 27001 E NBR ISO/IEC 27002 ..................................................................... 22
3.2 ISO/IEC 15408 (COMMON CRITERIA) .................................................................................. 25
4 CODIFICAO SEGURA................................................................................................. 26
4.1 ESTOURO DE BUFFER .................................................................................................... 26
4.2 EXECUTAR COM O MNIMO DE PRIVILGIOS ......................................................... 28
4.3 CRIPTOGRAFIA ............................................................................................................... 28
4.4 PROTEGENDO DADOS CONFIDENCIAIS .................................................................... 30
4.5 ENTRADAS MAL-INTENCIONADAS ........................................................................... 32
4.6 REPRESENTAO CANNICA ..................................................................................... 34
4.7 ENTRADAS NA BASE DE DADOS ................................................................................. 35
4.8 ENTRADAS ESPECFICAS DA WEB .............................................................................. 37
4.9 INTERNACIONALIZAO............................................................................................. 38
5 FERRAMENTAS E TCNICAS DE AVALIAO DOS RISCOS .............................. 39
5.1 ACUNETIX VULNERABILITY SCANNER ..................................................................................... 39
5.2 TESTANDO VULNERABILIDADES COM A AJUDA DO STRIDE ................................................ 40
6 ESTUDO DE CASO ............................................................................................................ 42
6.1 TECNOLOGIAS UTILIZADAS ................................................................................................. 43
6.2 INTERFACES ......................................................................................................................... 43
6.3 TCNICAS E PADRES DE SEGURANA IMPLEMENTADOS ..................................................... 59
6.4 RESULTADOS E DISCUSSO ................................................................................................. 66
7 CONSIDERAES FINAIS .............................................................................................. 80
12
1 INTRODUO
dados roubados de funcionrios da gigante americana dos eletrnicos, a Sony, por lanar o
filme chamado A entrevista, uma comdia que gira entorno da tentativa de assassinato do
ento lder supremo da Coria do Norte, Kim Jong-un. Conforme a matria, o lder
supremo no gostou do filme e ameaou a Sony e os Estados Unidos um dia antes da
ocorrncia do ataque Sony. Estes fatos deixam claro que se existem pases e grandes
empresas to vulnerveis a ataques de computador e Internet, o planeta Terra ainda est
engatinhando em termos de segurana da informao e precisa avanar muito (e rpido) para
que os dados trafegados por aplicativos e sistemas com acesso Internet sejam seguros.
Um software que alvo de especulaes ou notcias que afirmem que o mesmo
inseguro perceber que muitos potenciais clientes ou usurios, passam a fugir do produto ou
da empresa, ou pior, as pessoas com algum ressentimento do produto passam a aumentar
ainda mais o acumulo de publicidade negativa, provando outras pessoas que usar o produto
perigoso. Infelizmente as pessoas tendem a acompanhar somente as notcias ruins, o que
causa um dano irreparvel de tal modo que chegar o momento em que as pessoas procuraram
o produto do concorrente, afundando de vez o produto inseguro. (HOWARD; LEBLANC,
2005)
Conforme a Microsoft (2015), dados do FBI (Federal Bureau of Investigation)
revelam que em 2007, 70 bilhes de dlares foram roubados atravs de crimes virtuais e 90%
das vulnerabilidades dos sistemas so exploradas remotamente (via web).
Por isso, preciso garantir a segurana do software, porm, segundo Braz (2009),
apesar das normas de segurana serem bem claras, as mesmas no disponibilizam de uma
forma detalhada a forma de implantao nos processos, tornando difcil para as empresas
saber exatamente como atend-las em sua plenitude. Por este motivo, este estudo foi
desenvolvido e se experimentou na prtica a aplicao de algumas normas e prticas sugeridas
de segurana.
1.2 OBJETIVOS
2 SEGURANA DA INFORMAO
Item Descrio
Ativo de Informao Um bem de grande valor para a organizao,
podendo ser a tecnologia, o meio que suporta
a informao, o ambiente em que est
inserida e as pessoas que a utilizam.
Ataque Um incidente de segurana causado por um
agente que deseja obter algum tipo de retorno
de algum ativo de informao.
Vulnerabilidade As fraquezas dos ativos de informao,
muitas vezes essas vulnerabilidades podem
existir mas nunca serem exploradas, porm
quando isso ocorre geralmente levam a
quebra de confidencialidade, integridade ou
indisponibilidade da informao, mesmo que
no intencionais por parte do ativo de
informao.
Ameaa Um ataque potencial a um ativo da
informao. Ocorre quando um agente
18
2.1.1 Causas
19
Segundo a Microsoft (2014), as causas que levam a uma falha de segurana so,
em sua maioria, devido :
Not a Security Bug (No uma falha de segurana): este primeiro item
autoexplicativo, simplesmente acredita-se que seja uma falha de segurana mas
no ;
Buffer Overflow / Underflow (Excesso ou falta de dados na memria virtual):
um tipo de violao de segurana de memria que ocorre quando no
verificado ou limitado o tamanho de memria que precisa ser alocada antes que as
informaes sejam manipuladas ou processadas por um software. No caso do
Overflow um programa ultrapassa os limites do buffer e sobrescreve a memria
adjacente, j o Underflow ocorre quando um buffer lido ou esvaziado antes de
ser reescrito ou preenchido;
Arithmetic Error (Erro aritmtico): quando o valor de algum dado excede
(overflow) ou no alcana (underflow) o limite em que foi especificado para ser
manipulado;
SQL / Script Injection (Injeo de cdigo): um tipo de falha que permite aos
usurios mal intencionados modificar o comportamento de alguma ao do
sistema, alterando o cdigo fonte do programa ou de uma instruo SQL
(Structured Query Language) ao banco de dados da aplicao;
Directory Traversal (Troca de diretrio): falha que permite aos usurios acessar
diretrios e executar comandos fora do local especificado;
Race Condition (Condio de corrida): vulnerabilidade de segurana causada
por problemas na sincronizao ou tempo de manipulao dos dados. Ocorre
quando um software comete erros de sincronia ou sequenciamento de aes;
Cross-Site Scripting (Injeo de script no servidor): tambm conhecida pela
sigla XSS, esta falha envolve sistemas web e sua causa alguma falha de
segurana que permite ao invasor acesso indevido a recursos ou informaes do
site, injetando cdigos maliciosos no sistema e que podem afetar todos os usurios
que estejam visualizando o site;
Cryptographic Weakness (Fraqueza criptogrfica): uso insuficiente ou
incorreto de criptografia na proteo aos dados;
20
Denominao Caractersticas
Hackers maliciosos So aquelas pessoas que invadem sistemas de
computadores sem autorizao. Estas pessoas
so especialmente preocupantes por no
serem conhecidos seus propsitos ou
identidade.
21
2.1.2 Efeitos
A Microsoft (2014) faz uso da sigla STRIDE para classificar efeitos decorrentes
das falhas de segurana de uma aplicao. Neste acrnimo cada letra corresponde um efeito:
3 PADRES DE SEGURANA
7799 (pois foi inicialmente criada pela British Standard Institute), ISO/IEC 17799 (adotada
pela ISO) e posteriormente adotada pelo Brasil em 2001 com o nome NBR ISO/IEC 17799
por meio da ABNT (Associao Brasileira de Normas Tcnicas), recebendo uma atualizao
em junho de 2005, recebendo novos captulos e chamando-se, finalmente, NBR ISO/IEC
27002, tambm conhecida como BS7799 parte 1, j a parte 2 recebe outro nome: NBR
ISO/IEC 27001 e abrange o ciclo PDCA (Plan-Do-Check-Act) (FERREIRA; ARAJO,
2008). Conforme a prpria norma, seu objetivo estabelecer diretrizes e princpios gerais
para iniciar, implementar, manter e melhorar a gesto da segurana da informao em uma
organizao (ABNT NBR ISO/IEC 27002, 2005).
Segundo o TCU (2008), a estrutura da norma NBR ISO/IEC 27002 est
distribuda da seguinte forma:
1 Escopo;
2 Termos e definies;
3 Estrutura da norma;
4 Avaliao e tratamento dos Riscos;
5 Poltica de Segurana da Informao;
6 Organizando a Segurana da Informao;
7 Gesto de Ativos;
8 Segurana em Recursos Humanos;
9 Segurana fsica e do ambiente;
10 Gesto das operaes e comunicaes;
11 Controle de acesso;
12 Desenvolvimento e manuteno de sistemas;
13 Gesto de incidentes;
14 Gesto da continuidade dos negcios;
15 Conformidade.
Aplicabilidade.
Fonte: Ferreira e Arajo, 2008.
Portanto, com a aplicao dos itens do Quadro 3 (acima), Ferreira e Arajo (2008)
garantem, basicamente, que os ativos esto protegidos, que h um gerenciamento dos riscos e
os objetivos de controle esto implementados, formando assim, um SGSI. H tambm a
certificao nas normas, que podem ser conquistadas por empresas que buscam uma espcie
de atestado de que a empresa cumpre as boas prticas de Segurana da Informao.
Por fim, a norma NBR ISO/IEC 27001 traduzida em portugus custa R$ 113,00 e a NBR
ISO/IEC 27002 (tambm traduzida) custa R$ 209,00 conforme o site oficial para compra das
normas, o ABNT CATLOGO (2015). Esse valor irrelevante se considerarmos tamanhas
melhorias de Segurana de Informao que a aplicao das tcnicas pode proporcionar as
empresas, bastar saber se o valor gasto para aplicar a norma vivel e se ela a melhor opo
para determinado tipo de empresa.
inviveis, sendo essa a nica diferena prtica entre os dois documentos (ALBUQUERQUE;
RIBEIRO; 2002). Conforme o site da prpria norma, o Common Criteria Portal (2015), os 7
nveis EAL so:
1 EAL 1: Funcionalmente testado;
2 EAL 2: Estruturalmente testado;
3 EAL 3: Metodicamente testado e verificado;
4 EAL 4: Metodicamente projetado, testado e verificado;
5 EAL 5: Semi-formalmente projetado e testado;
6 EAL 6: Semi-formalmente projetado, testado e verificado;
7 EAL 7: Formalmente projetado, testado e verificado.
data deste trabalho, o site da norma (Common Criteria Portal, 2015) declarava
que 1955 produtos de diversos setores diferentes j tinham sido certificados por esta norma,
dentre eles sistemas e aparelhos biomtricos, sistemas e dispositivos de controle de acesso,
bases de dados, sistemas operacionais, produtos para certificao digital, dispositivos
multifuncionais e etc. Isso mostra que apesar de ser uma norma rigorosa, aplicvel a
diferentes aplicaes, consolidando-se como um dos padres de segurana mais utilizados no
mercado.
4 CODIFICAO SEGURA
validar as entradas de dados e todas as informaes que so passadas como parmetros para as
funes do sistema devem ser vistas como entradas hostis. Nada das funes alm das
entradas e sadas devem ser acessveis fora dela.
Um exemplo de cdigo que permite o estouro de buffer o da Figura 2 abaixo:
Cuidar com funes que retornam o tamanho da informao, pois fazendo uso
delas, permitir que um estouro de buffer ocorra devido a um tamanho
excessivamente grande dos dados;
Indicar erros o mais prximo possvel da origem, pois permite que a depurao
seja mais fcil, alm de evitar que um erro oculto transforme-se em uma
mensagem de erro em um local inesperado, fato que sempre que possvel deve ser
evitado.
Abra recursos com as permisses que so requeridas, nada mais exemplo: se for
necessrio ler um dado do registro do computador, solicite acesso de apenas
leitura;
No gravar dados do usurio em locais protegidos como, por exemplo, a pasta
C:\Arquivos de Programas ou C:\Windows, no caso do Sistema Operacional
Windows 8.1. Dados do usurio devem ser armazenados sempre que possvel
no diretrio de perfil do usurio como, por exemplo, C:\Users\NomeDoUsuario
(Windows 8.1).
4.3 CRIPTOGRAFIA
29
Utilizar nmeros aleatrios ruins leva previsibilidade das chaves, por isso, a
regra para gerar bons nmeros gerar nmeros uniformemente distribudos,
imprevisveis e que possuam uma grande abrangncia de nmeros diferentes e que
permita incluir todos eles, o chamado ciclo longo e completo. A funo rand
(C++) no indicada para gerar nmeros aleatrios por possuir congruncia
linear, ou seja, um comportamento previsvel;
Criar funes prprias para criptografia no algo recomendvel. Isso pode criar
o risco de algum mais expert decifrar os cdigos e destruir a segurana do
sistema;
Bastante ateno ao gerenciamento das chaves, este o elo mais fraco de
aplicativos que utilizam criptografia, por exemplo, uma chave codificada em uma
imagem executvel fcil de quebrar, mesmo sem acesso ao cdigo fonte;
Utilize o nmero adequado de caracteres para chave criptogrfica. Quanto mais
curta mais fcil de atacar. importante lembrar que atacar chaves simtricas
como DES e RC4 exige que o invasor tente todas as chaves, no entanto chaves
RSA (cifra assimtrica) exige que o invasor tente valores aleatrios criados para
criar chaves pblicas e privadas o processo chamado de fatorao. A chave
simtrica no mais ou menos segura que a assimtrica, a diferena que elas so
atacadas de formas diferentes e o mais importante seu tamanho em bits (nmero
de caracteres), quanto maior, mais segura;
Outra dica importante, porm no relacionada codificao: nunca
recomendado dizer que a empresa ou o sistema possui segurana inquebrvel ou
criptografia de qualidade militar, isso pode ser um tiro no p caso venha a ter
algum problema de segurana, levando a empresa a adquirir uma m reputao.
30
hash armazenado (md5, sha1, sha2 e etc.), isso permite que o sistema mesmo que
comprometido no permita recuperar os segredos, exceto por brute force
(chamado de fora bruta, consiste em testar milhes de vezes as senhas com
caracteres aleatrios at acert-lo);
Para criar cdigos hash mais aprimorados, pode-se utilizar o sal. O sal (tambm
chamado de salting, em portugus salgar) se trata de algum nmero aleatrio ou
caracteres adicionados aos dados do hash, criando segredos ainda mais difceis de
serem descobertos. Para linguagem C++ recomendada a CryptoAPI para criar
hashes com sal pois torna essa tarefa extremamente fcil;
Em Sistemas Operacionais Windows (2000 e posteriores), por meio da linguagem
de programao C++, possvel utilizar as funes CryptProtectData e
CryptUnprotectData da Data Protection API (DAPI). A mesma permite que
somente usurios com perfil de acesso administrador ou contas normais tenham
certos privilgios no sistema, por exemplo, de escrita, e alm disso adiciona
automaticamente um cdigo de verificao de integridade (MAC message
authentication code) aos dados criptografados, permitindo que a integridade dos
dados seja verificada. Ao utilizar CryptProtectData e CryptUnprotectData, pode-
se enviar uma senha adicional ao parmetro pOptionalEntropy, como o usurio e
senha do usurio do Windows, permitindo que apenas aquele usurio na
rede/computador faa determinadas aes no sistema;
H trs bases para construir aplicativos que armazenam segredos: a segurana
relativa, o esforo de desenvolvimento e a facilidade de instalao. Investir mais
em segurana durante o desenvolvimento diminui os custos de manuteno do
software. O Quadro 5 (abaixo) apresenta o esforo de desenvolvimento,
segurana relativa e a facilidade de instalao das opes de segurana dados
secretos.
mais comuns nesta seo de estudo e a SQL enviada ao banco de dados deve possuir
tratamento especial para evitar ou atenuar as ameaas aos bancos de dados.
Para evitar problemas com as entradas no banco de dados, deve-se seguir as dicas
abaixo:
Como j mencionado na seo 4.2, o perfil do usurio do banco de dados que faz
as consultas da aplicao deve possuir o mnimo de privilgios apenas o
necessrio correta execuo das instrues;
No reescrever os dados de acesso ao banco (usurio e senha) diretamente nos
scripts, pois aumentam as chances de um usurio malicioso roubar esses dados;
Utilizar funes que tratem informaes passadas SQL antes de execut-la,
sobrescrevendo caracteres ou combinao de caracteres perigosos, por exemplo,
as aspas simples (usadas comumente para fechar condies e acessar dados
proibidos);
Procedures (coleo de instrues SQL pr-compiladas) escondem a lgica do
aplicativo caso o cdigo seja comprometido, por isso, em aplicaes robustas e
que regras de negcio transitam pelas consultas, so geralmente bem
recomendadas.
A separao das dicas acima para esta proposital e visa dar maior destaque a
utilizao da dica mais importante: os comandos parametrizados, tambm chamados de
marcadores de lugar. Conforme Howard e LeBlanc (2005), esta uma das melhores tcnicas
(e de fcil utilizao) para garantir a segurana das entradas no banco de dados. Comandos
parametrizados podem receber os tratamentos indicados nas dicas acima e acrescentam um
fator importante: a prpria validao dos dados pela base de dados. Uma consulta
parametrizada simples pode ser feita da seguinte forma:
Nunca permita que valores passados pela URL (o caso do valor meuscript para
o argumento nome da URL www.meusite.com/dados?nome=meuscript)
faam alguma insero de informaes do contedo HTML da pgina;
Se possvel, evite cookies, eles so apenas um cabealho na solicitao HTTP,
portanto, invasores podem faz-los falsificar informaes e acessar dados que
somente o usurio conhece. Se utiliz-los, tente ao menos criptograf-los e exigir
autenticao aos dados via MAC (Message Authentication Code);
38
Coloque entre aspas duplas todas as propriedades das tags HTML. Muitos ataques
XSS partem da explorao de propriedades das tags que se inseridas envolvidas
por aspas duplas, podem no funcionar ou dificultar o ataque;
No utilize a funo eval() do JavaScript em entradas no confiveis. Ela permite
que praticamente qualquer cdigo possa ser executado, portanto, evite sua
utilizao ao mximo;
Por ltimo, no armazene dados sigilosos em cookies, campos ocultos ou
quaisquer outros dados que possam ser manipulados ou descobertos pelo usurio
via exibio do cdigo fonte da pgina, trfego dos dados no site e etc.
4.9 INTERNACIONALIZAO
um caractere no padro Unicode, permite que ele seja traduzido para cerca de 300 linguagens
diferentes, o que o consolida como padro de caracteres tanto em termos de segurana como
em popularidade.
Acunetix o nome de uma empresa com sede em Malta e Reino Unido e ela a
desenvolvedora do Acunetix Vulnerability Scanner, seu software pago (possui verso de
avaliao por 14 dias) que promete verificar diversas vulnerabilidades em um sistema web.
Muito conhecido entre grandes empresas, presta servios para gigantes como a Sony, NASA,
Adidas, Adobe, Cisco, Samsung e a Coca-Cola. Segundo a Acunetix (2015), o software
pioneiro na rea de testes em aplicaes web e lder em anlise e deteco de
vulnerabilidades neste meio.
Conforme a Acunetix (2015), o software possui como principais pontos:
Ainda segundo a Acunetix (2015), 70% dos sites possuem vulnerabilidades que
permitem acessar / roubar informaes sensveis como cartes de crdito e informaes dos
usurios j que hackers concentram seus esforos em sistemas baseados na web, como
carrinhos de compras, formulrios e contedos dinmicos. Com o software da empresa,
prometem encontrar essas falhas antes dos hackers, fazendo com que as informaes e
contedos vulnerveis sejam protegidos antes dos ataques.
O software em sua verso Entreprise custa U$ 4.995 (quatro mil e novecentos e
noventa e cinco dlares), ou aproximadamente R$ 13.150 (treze mil e cento e cinquenta reais)
em sua licena perptua, j sua licena anual custa U$ 3.195 (trs mil e cento e noventa e
cinco dlares, ou aproximadamente R$ 8.400 (oito mil e quatrocentos reais). Nas duas
verses, est incluso documentao, manuais de instruo dos diversos mdulos do sistema e
suporte via e-mail ou telefone (ACUNETIX, 2015). Este aplicativo em sua verso de
avaliao foi o escolhido para testar o sistema desenvolvido para este trabalho j que uma
aplicao web desenvolvida em PHP com JavaScript, alm de o software se mostrar de fcil
uso. No Captulo 6, exibido os documentos produzidos e o resultado dos testes feitos com o
Acunetix Vulnerability Scanner.
Esta tcnica descrita por Howard e LeBlanc (2005) e consiste em explorar com
simples testes as categorias de ameaa do STRIDE. Como j explicado na seo 2.1.2, o
STRIDE uma sigla que composta pelas classificaes das ameaas de segurana. Essas
classificaes ajudam a determinar os tipos de testes a serem realizados e o risco das ameaas,
priorizando cada tipo de teste. Abaixo segue o Quadro 6 com as tcnicas de testes sugeridos:
6 ESTUDO DE CASO
O sistema web foi desenvolvido em PHP 5.5 utilizando JavaScript, CSS 3, HTML
5 e os frameworks jQuery e Bootstrap. A plataforma em que o sistema est rodando um
servidor web Apache 2.2 em um Sistema Operacional Linux CentOS 6, conforme a Figura 9
abaixo:
6.2 Interfaces
44
Como apresentado na Figura 12 (acima), a tela inicial das notas lista as ltimas
notas adicionadas pelo usurio em questo, exibindo os dados armazenados para o campo
ttulo (fundo azul e cor branca na fonte) e texto (fundo transparente e cor cinza na fonte).
Esta tela tambm deflagra o comportamento padro do sistema, em que a pgina
em uso que possui navegao via menu, neste caso a opo Incio, recebe o efeito active do
CSS, ou seja, o bloco Incio fica com um tom de cinza mais escuro. Caso no exista
nenhuma nota cadastrada para o usurio, o quadro onde as notas esto posicionadas
substitudo pela mensagem No h notas cadastradas. Para cadastr-las, clique em
Adicionar.
No caso do sistema ser aberto em um dispositivo com menos resoluo de tela
disponvel, graas ao seu design flexvel com o Bootstrap, a tela inicial apresentada
conforme a imagem abaixo:
47
Figura 14 - Tela inicial das notas em forma reduzida com menu expandido.
Figura 19 - Tela inicial de notas com mensagem de nota atualizada com sucesso.
Caso o usurio digite uma busca sem resultados, a mesma tela apresentada,
porm com a mensagem Nenhuma nota encontrada com o texto ou ttulo informado. No
caso acima, em que h resultados, o usurio pode executar as mesmas aes da tela inicial de
notas, exceto a reordenao de notas.
Vale lembrar que se o usurio apertar a tecla enter do teclado sem digitar nada no
campo de procura, a tela search.php aberta, porm na configurao da Figura 28 abaixo:
A ltima opo do menu superior, a opo Sair, como o prprio nome indica, ao
clicar nela, independente de onde o usurio estiver, o sistema remove os dados da sesso dele,
e o usurio redirecionado para a tela de login com a mensagem Deslogado com sucesso,
conforme a imagem abaixo:
59
Outra dica valiosa contra SQL Injection utilizada seguindo as dicas do PHP.NET
(2015) a utilizao das funes addslashes e is_numeric para validar consulta, insero,
atualizao e remoo de dados no banco de dados. Essas duas funes padro do PHP
auxiliam no tratamento a literais e inteiros, respectivamente, e no sistema em questo so
usadas antes de qualquer interao no banco de dados com inteiros ou literais (nicos tipos
utilizados para consulta pelo sistema) no confiveis, conforme a Figura 31 abaixo:
61
prtica protege contra a adulterao dos dados, conforme a seo 4.3, e respeita as orientaes
de segurana de Howard e LeBlanc (2005) j que no foi criado nenhum cdigo de
criptografia novo.
Os mtodos de proteo de dados confidenciais da seo 4.4, com exceo do uso
de hashes e sal (como citado no pargrafo anterior), no foram aplicados j que os estudos da
mesma so voltados a sistemas em que o software uma aplicao desktop (aplicao
instalada na mquina do usurio) e que permite utilizar informaes do usurio conectado
rede local ou ao computador para proteger seus dados. No caso desta aplicao web esta
forma de proteo dos dados no foi desenvolvida, pois os usurios do sistema no utilizaro
o mesmo computador para acessar o sistema e conforme o Quadro 6 da referida seo, a
relao custo de desenvolvimento, facilidade de instalao e segurana relativa no
compensariam a aplicao destes mtodos.
As validaes das entradas dos dados feitas pelos usurios seguem as diretrizes
abaixo:
aplicada com o software demorou 2 horas e 30 minutos, enviou cerca de 30.000 requisies
para o site e apontou 10 alertas. Este nmero total de alertas, separado em 4 nveis de alerta:
o nvel 3 (vulnerabilidade muito perigosa), nvel 2 (vulnerabilidade de mdia periculosidade),
nvel 1 (vulnerabilidade de pequena periculosidade) e nvel 0 (apenas informacional), sendo
apresentado os resultados nessa sequencia. Como o software da Acunetix foi utilizado em sua
verso de avaliao gratuita, os alertas no ofereceram o local exato da falha, apenas
indicaram as vulnerabilidades encontradas, cabendo ao desenvolvedor encontrar o local das
falhas e descobrir como corrigi-la. Alm disso, nessa verso os testes so do tipo caixa
preta, ou seja, sem acesso ao cdigo fonte da aplicao.
Durante a exibio das vulnerabilidades, a correo das mesmas tambm
apresentada, sugerindo tcnicas ou apresentando o cdigo que precisa ser implementado. Por
se tratar de uma rea prtica de baixo referencial terico, grande parte das referncias sobre a
correo dos erros proveniente da experincia prtica de usurios disponibilizadas na
Internet.
A primeira categoria, o nvel alto ou nvel 3, em que as vulnerabilidades so as
mais graves encontradas pelo aplicativo, ficou sem nenhum alerta. Portanto, o sistema
desenvolvido, conforme o software, no possui alguma vulnerabilidade grave, podendo isso
estar atrelado tambm as configuraes de segurana do servidor da UOL que hospedou o
site.
No segundo nvel de vulnerabilidades, as de mdia periculosidade (nvel 2 ou
nvel mdio), foram encontrados trs alertas de segurana.
A primeira vulnerabilidade encontrada neste nvel foi a HTML form without
CSRF protection, em traduo livre Formulrios HTML sem proteo contra CSRF, onde
CSRF a sigla para Cross-Site Request Forgery. A descrio do alerta est na Figura 37
abaixo:
68
Segundo Ristic (2005), o CSRF consiste em uma explorao maliciosa pelo qual
comandos no autorizados so transmitidos ao sistema web, a partir da confiana em que o
sistema tem na identidade de um usurio. Esta falha de segurana abordada em praticamente
todas as sees secundrias do Captulo 4, porm de forma superficial, no explicando
exatamente como combater esta ameaa especfica. Conforme a Acunetix (2015), quando
explorada, esta ameaa pode comprometer os dados do usurio no sistema se tratando de um
usurio normal, no caso de um administrador do sistema, pode comprometer a aplicao
inteira.
Para evita-la, conforme o site da fundao Open Web Application Security
Project, a OWASP (2015), deve-se utilizar tokens nos formulrios. Usando tokens, os valores
dos formulrios so codificados e no apresentam o valor digitado pelo usurio. Essa
codificao pode ser feita com hashes de 256 bits do BASE64 encode e, segundo a fundao,
atualmente um dos melhores mtodos para evitar este tipo de ataque.
A segunda vulnerabilidade do nvel 2, foi a Error message on page, em
traduo livre Mensagens de erro na pgina. A descrio do alerta est na Figura 38 abaixo:
69
Com esta falha de segurana, usurios maliciosos podem listar todos os arquivos
de um diretrio, podendo acessar ou visualizar informaes confidenciais do sistema ou de
outros usurios (Acunetix, 2015).
No caso do sistema de notas pessoais, o problema tinha sido tratado criando
arquivos index.php dentro de todas as pastas do sistema, mas como pde-se perceber, no foi
a melhor soluo.
Conforme o HTML Staff (2015), este problema pode ser resolvido atravs da
configurao do HTACCESS (Hypertext access) da pgina. O HTACCESS um arquivo do
tipo .htaccess, sem nome, localizado na raiz do sistema, executado no servidor web e que
permite a configurao de diversos aspectos como autenticao, bloqueio de IPs,
configuraes da listagem de diretrios e etc. A simples instruo IndexIgnore * dentro
deste tipo de arquivo, impossibilita que arquivos possam ser listados dos diretrios do
sistema, atenuando ou inibindo esta ameaa.
J no nvel baixo, em que a vulnerabilidade possui baixo grau de periculosidade
(nvel 1), encontrou-se a vulnerabilidade Apache mod_negotiation filename bruteforcing. O
alerta exibido pelo Acunetix foi:
71
Com o uso das duas linhas acima, as sesses dos usurios ficam muito mais
seguras, podendo ser acessadas somente pelo lado do servidor e exigindo que o trfego dos
dados da sesso seja feito com HTTPS.
74
Conforme o software, algum diretrio sensvel pde ser encontrado, mesmo sem
ele ser referenciado por algum link ou arquivo dentro do sistema. As informaes contidas
nesses diretrios podem ajudar os invasores a ter informaes sobre o alvo.
Esta falha, corrigida automaticamente aps solucionar a vulnerabilidade de nvel
mdio, a Directory Listing, j que ela instrui o uso de configuraes no HTACCESS para
bloquear a listagem de diretrios do sistema (veja a Figura 39).
Outra vulnerabilidade apontada no relatrio foi a Clickjacking: X-Frame-Options
header missing, em traduo livre Clickjacking: cabealho X-Frame-Options ausente. O
relatrio apresentou as seguintes informaes:
75
Como descreve o software, esta falha trata-se do recurso auto completar salvo em
cache, permitindo que algum invasor obtenha os dados a partir do cache do navegador. Esse
acesso ao cache permite que ele descubra informaes sensveis sem a permisso do usurio.
Conforme Lucas Peperaio (2015), para solucionar esta falha, a maneira mais
simples utilizar HTACCESS. Segundo ele, o cdigo abaixo inserido em um arquivo
HTACCESS corrige esta vulnerabilidade:
Salienta-se que esta uma instruo que pode ajudar a combater a falha, mas no
uma garantia de sucesso, visto que atualmente os navegadores esto combatendo falhas
prprias de segurana todos os dias.
A ltima vulnerabilidade encontrada pelo software, foi Possible server path
disclosure (Unix), ou em traduo livre Possvel divulgao do caminho do servidor
(Unix). O software exibiu o seguinte alerta para esta vulnerabilidade:
77
7 CONSIDERAES FINAIS
a aquisio do software Acunetix, para que seja possvel testar o sistema em todos
seus aspectos, corrigindo todas as ameaas de forma ainda mais simples, j que o
software apresentaria a correo indicada e local da vulnerabilidade;
inserir as funes de gerenciamento de usurios, gerenciamento de permisses e o
uso de tokens com SSL na rea de acesso com senha;
e expandir o sistema de maneira que permita o gerenciamento da vida pessoal do
usurio, adicionado, por exemplo, um mdulo financeiro que permitisse controlar
as finanas pessoais dos usurios.
REFERNCIAS
OWASP. Cross-Site Request Forgery (CSRF) Prevention Cheat Sheet. Disponvel em:
<https://www.owasp.org/index.php/Cross-
Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet>. Acesso em 20/01/2015.
STACK OVERFLOW. php Session cookies http & secure flag - how do you set these?.
Disponvel em <http://stackoverflow.com/questions/22221807/session-cookies-http-secure-
flag-how-do-you-set-these>. Acesso em: 15/01/2015.
82
THE NEW YORK TIMES - PERLROTH, NICOLE; SANGER, DAVID E. North Korea
Loses Its Link to the Internet. Disponvel em:
<http://www.nytimes.com/2014/12/23/world/asia/attack-is-suspected-as-north-korean-
internet-collapses.html?_r=0>. Acesso em 30/12/2014.