Aplicações Web e as suas Principais Vulnerabilidades
Jean Klebert de Albuquerque Modesto
José do Carmo Rodrigues, MSc, PhD
Curso de Pós-Graduação Lato Sensu em Engenharia e Arquitetura de Sotware da
UNESA - Universidade Estácio de Sá
Resumo
Este arigo tem como objeivo proporcionar uma melhor compreensão do que são as
aplicações web e, sobretudo, apresentar seus principais pontos vulneráveis, os quais podem
afetar a segurança da informação e causar diversos ipos de transtornos e prejuízos. Há
alguns anos atrás, as aplicações eram executadas em computadores ou terminais, sendo que
o seu alcance, quando muito, restringia-se apenas à própria organização. Nessa época, a
conecividade entre as unidades com separação geográica acontecia em geral através de
Linhas Privadas de Comunicação de Dados. No entanto, notadamente a parir dos anos
noventa, com a popularização da internet como plataforma de comunicação, começou a
haver uma mudança nesse cenário. A troca de informações passou a acontecer em maior
ritmo, a menor custo e com menos entraves tecnológicos. No mesmo ínterim, o surgimento
de novas tecnologias permiiu o advento de páginas
web mais interaivas e dinâmicas,
criando as condições, assim, para o surgimento das aplicações
web. Desde então, o uso
crescente desses sistemas e a busca de conhecimento para torná-los mais seguros vieram
consolidar um novo campo de estudo, tendo em vista que os problemas de segurança que
acabaram surgindo se mostraram com potencial de afetar tanto pessoas, quanto
organizações e governos. O presente arigo apresenta, portanto, o conhecimento base que
auxiliará no entendimento mais claro do que são as aplicações
web, as estratégias de
exploração e ataque mais uilizadas por agentes maliciosos, bem como as maneiras de
miigar os riscos associados à sua uilização, provendo uma melhor segurança da informação.
Palavras-chave: aplicação web, banco de dados, segurança da informação, teste de sotware,
crime virtual, auditoria de sistemas, hacker.
1.
Introdução
A popularização do uso da internet, em especial a parir da década de 90 em diante,
veio consolidar o que se convencionou chamar de “era da informação”, não tardando para
que rapidamente seus desdobramentos se apresentassem nos mais variados aspectos de
nossa sociedade. De repente, empresas, governos e outros ipos de insituições viram-se
compelidas a marcar sua presença no chamado mundo virtual. Sistemas que antes
precisavam ser instalados e conigurados para somente assim serem executados no
computador, ou em alguns casos emulados através de terminais, foram paulainamente
migrados para sistemas disponibilizados através da rede - intranet e internet - e acessados
facilmente através de apenas um endereço digitado no navegador web. De forma análoga, as
bases de dados acabaram também sendo transferidas ou disponibilizadas nesse novo
ambiente. Vislumbrando a oportunidade e na expectaiva de reduzir custos, muitas
organizações iniciaram o processo de migração de suas aplicações manidas em plataforma
2
alta (computadores de grande porte e com tecnologia fortemente atrelada a um único
fornecedor) para sistemas em plataforma web.
Infelizmente, ao mesmo tempo que esse novo cenário tecnológico trouxe beneícios e
novas possibilidades, impôs novos riscos e desaios. O crescimento no uso das aplicações
web, associada à maneira que elas são disponibilizadas e facilmente acessíveis, tornou-as
atraivas aos olhos de agentes maliciosos. Em geral, tais sistemas acabam guardando
informações importantes dos seus usuários, como exemplo: endereço, conta bancária,
número de cartão de crédito, senha, etc. Logo, um incidente de segurança possui o potencial
de prejudicar sobremaneira a reputação do serviço disponibilizado e, até, a própria
sobrevivência do negócio.
É importante considerar, também, que não é incomum que muitos dos incidentes
ocorridos sejam consequência do próprio processo de desenvolvimento do sistema: prazos
de entrega apertados, mudanças conínuas de requisitos, testes inadequados ou não
existentes e, inclusive, desconhecimento do desenvolvedor dos métodos de ataque uilizados
pelos agentes mal intencionados. Para Campos (2014, p. 29), “muitas vezes é diícil obter o
apoio da própria alta administração da organização para realizar os invesimentos
necessários em segurança da informação. Os custos elevados das soluções contribuem para
esse cenário, mas o desconhecimento da importância do tema é provavelmente ainda o
maior problema”.
Diante do exposto, o objeivo desse arigo é proporcionar uma visão geral do que são
as aplicações web e, mais a fundo, as suas vulnerabilidades mais conhecidas. Trata-se de um
temáica perinente que acabará por demonstrar os riscos associados ao uso desses
sistemas, a necessidade de invesimento em segurança da informação e, também, a
importância da adoção formal de tal políica pelas organizações.
2.
Fundamentação teórica
2.1
Deinição de aplicação web
Segundo Davis, Schiller e Wheeler (2011, p. 219), “poucas invenções tecnológicas
mudaram tanto nossas vidas como as aplicações web ou tão rapidamente quanto. A interface
web cresceu de páginas estáicas para uma mistura incrivelmente interaiva de recursos
movidos por um exército de programadores criaivos. No inal de 1980, o conceito de World
Wide Web começou suas origens humildes com Tim Berners-Lee e Robert Caillieau. Em 1991,
o primeiro servidor web foi instalado nos Estados Unidos para se comunicar com o
computador NeXT, na Suíça”. Pauli (2014, p. 26) deine aplicação
web como “qualquer
sotware baseado em web que realize ações (funcionalidades) de acordo com uma entrada
de usuário e que normalmente interaja com sistemas de
backend”. Considerando tal
deinição, uma página web estáica não se enquadraria nas caracterísicas apresentadas,
visto que serve apenas para apresentar uma informação sem qualquer interação com o
usuário. Para Cannings, Dwivedi e Lackey (2010, p. 19-20), as caracterísicas das aplicações
web e as tecnologias que lhe dão forma, as fazem se enquadrar dentro do advento da
web
2.0. Esse novo paradigma veio fornecer aos uilizadores mais possibilidades, valendo-se de
linguagens de programação para gerar páginas dinamicamente (Ex.:
CGI, PHP, Java ),
interações entre sistemas (Ex.: APIs, webservices ) e bancos de dados (Ex.: MySQL). Em sua
deinição de aplicação web, o autor Pauli (2014, p. 26) denominou essas tecnologias de
backend, ou seja, engrenagens invisíveis ao usuário porém que tornaram possível o salto do
conteúdo estáico para o conteúdo interaivo e dinâmico.
3
Segundo Tim O'Reilly, fundador da O'Reilly Media, a web 2.0 "é a mudança para uma
internet como plataforma, e um entendimento das regras para obter sucesso nesta nova
plataforma. Entre outras, a regra mais importante é desenvolver aplicaivos que aproveitem
os efeitos de rede para se tornarem melhores quanto mais são usados pelas pessoas,
aproveitando a inteligência coleiva”. Já no entendimento de Cannings, Dwivedi e Lackey
(2010, p. 26), “ web 2.0 é uma coleção de um monte de emergentes e existentes tecnologias
novas que fazem sites funcionar em alguns casos e, simplesmente, mais interessante em
outros casos. Infelizmente, na
internet, as palavras novas, emergentes e emocionante
geralmente signiicam a ausência de segurança (em favor de mais funcionalidade ou
desempenho melhorado)”. Exemplos de aplicações ípicas da web 2.0 são: mecanismos de
busca, lojas virtuais, blogs, redes sociais, home-bankings, webmails, wikis, etc.
2.1.1 Arquitetura de uma aplicação web
De acordo com Stutard e Pinto (2011, p. 39), uma aplicação
web é composta, no
mínimo, dos seguintes elementos:
- O protocolo HTTP: possibilita a comunicação entre a aplicação cliente e o servidor
web. Geralmente é executado na porta TCP 80 e transita em modo texto como padrão;
- Um servidor web: hospeda e executa a aplicação
web (Ex.: Apache, Tomcat),
respondendo às requisições das aplicações clientes através do protocolo HTTP;
- Aplicação cliente: o navegador de internet do usuário (Ex.: Chrome, Safari) o qual
permite visualizar e interagir com a aplicação web, ou seja, enxergar o frontend, a parte
visível ao usuário da aplicação;
- Aplicação web: código que será interpretado/executado pelo servidor web o qual
dinamicamente produzirá como saída um código HTML que poderá ser renderizado pela
aplicação cliente, no caso o navegador;
- Banco de dados: faz a persistência de dados, possibilitando que as aplicações web
de fato possuam uilidade.
2.2
Deinição de vulnerabilidade
Vulnerabilidade, no que diz respeito ao assunto em foco, é uma brecha em um
sistema ou na infraestrutura que lhe dá suporte representando uma ameaça à segurança da
informação. Se a vulnerabilidade não é devidamente sanada, pode ser uilizada por agentes
maliciosos em um ataque.
Engebretson (2013, p. 2) complementa: “avaliação de
vulnerabilidade é o processo de revisão de serviços e sistemas para potenciais problemas de
segurança”. A exploração da vulnerabilidade pode ocorrer de forma local ou remotamente.
Conforme conceitua Engebretson (2013, p. 17), a “exploração local exige que o atacante
tenha acesso ísico ao computador, enquanto a exploração remota ocorre por meio de redes
e sistemas, quando o atacante não pode tocar isicamente o alvo”. Como as aplicações web
em geral encontram-se acessíveis através da rede para um público amplo, as fontes e os ipos
de possíveis ataques são igualmente enormes. Independentemente do ataque ter origem
local ou remota, o acesso completo à maquina que hospeda a aplicação é comumente a
meta mais desejada. Engebretson (2013, p. 17) explica: “o acesso administraivo permite que
um hacker controle a máquina de desino. Novos programas podem ser instalados,
ferramentas defensivas podem ser desaivadas, documentos conidenciais podem ser
copiados, editados ou apagados, as conigurações de segurança podem ser alteradas e muito
mais”.
4
2.3 Deinição de segurança da informação
A norma ABNT NBR ISO 27002:2013 (2013, p. 9) deine segurança da informação
como "a proteção da informação de vários ipos de ameaças para garanir a coninuidade do
negócio, minimizar o risco ao negócio, maximizar o retorno sobre os invesimentos e as
oportunidades de negócio”. Neste senido, a segurança da informação é obida através de
uma série de boas práicas, políicas e controles, os quais depois de estabelecidos e
implementados, devem ser coninuamente monitorados, revisados e melhorados, a im de
que permaneçam eicazes e condizentes com os novos métodos de ataques que porventura
venham a surgir. Ainda de acordo a ABNT NBR ISO 27002:2013 (2013, p. 9), "a informação e
os processos de apoio, sistemas e redes são importantes aivos para os negócios. Deinir,
alcançar, manter e melhorar a segurança da informação podem ser aividades essenciais para
assegurar a compeiividade, o luxo de caixa, a lucraividade, o atendimento aos requisitos
legais e a imagem da organização junto ao mercado. As organizações, seus sistemas de
informação e redes de computadores são expostos a diversos ipos de ameaças à segurança
da informação, incluindo fraudes eletrônicas, espionagem, sabotagem, vandalismo, incêndio
e inundação".
2.3.1 Princípios de segurança da informação
Em um livro editado pelo Tribunal de Contas da União - TCU (2012, p. 25) é
mencionado que “a segurança de informações visa garanir a integridade, conidencialidade,
autenicidade e disponibilidade das informações processadas pela organização”:
- Integridade: consiste em proteger a informação contra modiicação sem a permissão
explícita do proprietário daquela informação. A modiicação inclui ações como escrita,
alteração de conteúdo, alteração de status, remoção e criação de informações;
- Conidencialidade: signiica proteger informações contra sua revelação para alguém
não autorizado (interna ou externamente) e leitura e/ou cópia não autorizado. Deve-se
cuidar não apenas da proteção da informação como um todo, mas também de partes da
informação que podem ser uilizadas para interferir sobre o todo. No caso da rede, isto
signiica que os dados, enquanto em trânsito, não serão vistos, alterados, ou extraídos da
rede por pessoas não autorizadas;
- Autenicidade: o controle de autenicidade está associado com ideniicação correta
de um usuário ou computador. O serviço de autenicação em um sistema deve assegurar ao
receptor que a mensagem é realmente procedente da origem informada em seu conteúdo;
- Disponibilidade: consiste na proteção dos serviços prestados pelo sistema de forma
que eles não sejam degradados ou se tornem indisponíveis sem autorização, assegurando ao
usuário o acesso aos dados sempre que deles precisar.
2.4
Deinição de Políica de Segurança da Informação
De acordo com o Tribunal de Contas da União - TCU (2012, p. 26), a "políica de
segurança de informações é um conjunto de princípios que norteiam a gestão de segurança
de informações e que deve ser observado pelo corpo técnico e gerencial e pelos usuários
internos e externos”. A políica de segurança da informação (PSI) deve ser formalizada em
documento escrito, de fácil acesso e compreensão aos interessados, sendo que o apoio da
alta administração e o engajamento de todas as áreas da organização são considerados
fatores de grande importância no sucesso de sua implementação.
5
3. Materiais e métodos
Até o momento, este arigo apresentou em sua fundamentação teórica alguns
conceitos a im de introduzir o leitor no que é uma aplicação
web, vulnerabilidades em
sistemas e segurança da informação. Já o conteúdo de materiais e métodos tem caráter
essencialmente teórico e foi elaborado no intuito de focar nas vulnerabilidades desses
sistemas, proporcionando o entendimento de quais métodos são uilizados nos ataques. Os
tópicos seguintes são resultado de pesquisa bibliográica realizada em livros que tratam de
segurança em aplicações web e que são comercializados de forma ísica e digital, facilitando
o acesso a quem desejar se aprofundar no assunto ou futuros trabalhos e pesquisas
acadêmicas. Houve o cuidado em compreender adequadamente o tema, bem como a forma
que foi apresentado nos diversos livros da bibliograia estudada, a im de organizar o
conteúdo de forma lógica e didáica. Dessa maneira, foi preciso condensar o que muitas
vezes se encontrava disperso ou com excesso de detalhes nos livros, e que se apresentado de
tal forma, poderia diicultar a compreensão e até a empaia com o tema. Segundo Gil (2010,
p. 61), “O levantamento bibliográico pode ser entendido como um estudo exploratório
permiindo o interessado ter mais familiaridade com o assunto”.
3.1 Formas de explorar possíveis vulnerabilidades em aplicações web
Para entregar a sua principal funcionalidade, as aplicações web normalmente exigem
conecividade com sistemas de computadores internos que contêm dados altamente
sensíveis e que podem executar funções de negócios igualmente sensíveis. Um invasor que
compromete uma aplicação web é capaz de, por exemplo, roubar informações pessoais,
realizar fraudes inanceiras e realizar ações maliciosas contra outros usuários. Cada aplicação
web é diferente e pode conter vulnerabilidades únicas. Para Scambray, Liu e Sima (2011, p.
11), apesar da enorme diversidade de ipos de aplicações
web disponíveis atualmente a
estratégia de ataque segue em geral alguns passos em comum ou uiliza-se de alguma
técnica que de alguma forma acabará se enquadrando em um dos seguintes pontos:
Ideniicação da infraestrutura; Exploração do servidor web; Inspeção da aplicação; Ataque
aos mecanismos de autenicação; Ataque aos peris de autorização; Análise funcional dos
componentes; Exploração das conecividades de dados; Ataque à interface de administração;
e, Ataque ao cliente. Os três primeiros itens da lista referem-se ao que é denominado
reconhecimento, ao passo que os demais itens enquadram-se como metodologia de ataque
propriamente dita. As informações coletadas na fase de reconhecimento em geral servem de
insumos para orientar quais abordagens o agente malicioso irá adotar em suas invesidas.
3.1.1 Ideniicação da infraestrutura
As aplicações web exigem infraestrutura substancial - servidor e sotware, entradas
de DNS (Domain Name System), equipamentos de rede, balanceadores de carga, e assim por
diante. Sendo assim, não é surpresa que o primeiro passo seja a ideniicação e análise da
infraestrutura de baixo nível em que a aplicação se encontra.
O agente malicioso busca nesse ipo de exploração ideniicar o ipo de equipamento
uilizado como servidor, portas TCP/IP abertas, sistema operacional e sotware de servidor
web sobre o qual a aplicação é executada. Se a aplicação uiliza balanceadores de carga,
haverá interesse em ter informações sobre cada equipamento que compõe a estrutura.
Segundo Pauli (2014, p. 27), “depois de conhecer os detalhes do servidor
web de desino,
6
tais como o endereço IP, portas abertas, a execução de serviços, e versões desses serviços,
então você pode veriicar esses serviços em busca de vulnerabilidades”.
3.1.2 Exploração do servidor web
O foco é explorar alguma vulnerabilidade ou falha de coniguração no
sotware do
servidor web com o objeivo de ganhar acesso a arquivos e diretórios que lá estão
hospedados. Alguns inalidades que podem ser citadas: Inserir, copiar, alterar e deletar
dados; Inserir código malicioso; Conhecer melhor a estrutura da aplicação a parir da análise
da árvore de diretórios aim de veriicar outras possíveis brechas de segurança. Conforme
menciona Pauli (2014, p. 34), “uma vez que isso ocorre, o
hacker tem total controle da
máquina e é livre para realizar qualquer ação, que normalmente inclui a adição de usuários,
acrescentando administradores, a instalação de ferramentas hacking adicionais localmente
na máquina para penetrar ainda mais na rede, e instalar código
backdoor que permite
conexões persistentes para esta máquina explorada”. É preciso mencionar que não raro os
administradores desses servidores deixam de aplicar correções de segurança que evitariam
certos ataques a vulnerabilidades já conhecidas e divulgadas em revistas ou fóruns da
internet, por exemplo. Há também as falhas de coniguração, as quais podem deixar
diretórios visíveis e com permissão de leitura ou escrita indevidas.
3.1.3 Inspeção da aplicação
A inspeção da aplicação consitui o passo inal da fase de reconhecimento e o seu
objeivo é permiir que o agente malicioso entenda o macro funcionamento da aplicação
web, ou seja, como os componentes do sistema trabalham em conjunto, se relacionando e
se comunicando, bem como os recursos com que o aplicaivo interage. Sendo assim, tenta-se
estudá-los cuidadosamente em busca de vulnerabilidades. Scambray, Liu e Sima (2011, p. 45)
mencionam que a inalidade da inspeção da aplicação “é gerar uma imagem completa do
conteúdo, componentes, funções e luxo do
site, a im de reunir pistas sobre onde
vulnerabilidades subjacentes poderiam estar”. Entre as técnicas de inspeção de aplicações
web, podem ser citadas algumas mais comuns: Ideniicação de formulários de entrada de
dados; Como a aplicação trata e iltra as entradas; Como são formadas as
URLs ( query
strings) e se parâmetros são passados através delas.
3.1.4 Ataque aos mecanismos de autenicação
A autenicação do usuário é um item fundamental e desempenha um papel críico na
segurança de uma aplicação web, tendo em vista que todas as decisões de segurança
posteriores geralmente são feitas com base na idenidade estabelecida pelas credenciais
fornecidas. Logo, o foco desse ipo de ataque é conseguir um par válido de usuário e senha
com o intuito de obter o acesso indevido ao sistema. Consituem contramedidas
recomendadas por Scambray, Liu e Sima (2011, p. 124-217):
- Uilizar o protocolo htps e token aleatório na página onde consta o formulário de
autenicação: por padrão o htp transita as informações em texto puro e portanto o atacante
com acesso àquela rede (uma rede sem io pública, por exemplo) pode capturar essa
informação uilizando-se de aplicaivos que capturam pacotes de rede ( snifers). Já quanto à
questão do uso de um token, este seria um número aleatório gerado toda vez a página de
autenicação é carregada, sendo enviado junto ao formulário em cada envio (
POST). Essa
técnica é uilizada a im de evitar o ataque de robôs ( scripts automaizados) ao formulário de
7
autenicação. Outro método para evitar o ataque de robôs é a uilização de um campo
adicional chamado sopa de letrinhas ( captcha), que é uma sequência de caracteres aleatória
que deve ser digitada pelo usuário;
- Forçar os usuários uilizarem senhas mais robustas: uma credencial de autenicação
formada por um par simples, como por exemplo admin/12345678, é facilmente quebrada
por um ataque de força bruta os quais são baseados em dicionários de usuários/senhas
muito uilizadas;
- Uilizar trilhas de auditoria ( logs): gravar no banco de dados todas os acessos e
tentaivas de acesso ao sistema, bem como o endereço IP de origem e a aplicação cliente, a
im de permiir uma análise a qualquer tempo se houve tentaiva de burlar o mecanismo de
autenicação da aplicação web;
- Bloqueio de usuário: bloquear o usuário após um número estabelecido de tentaivas
de autenicação frustradas;
- Filtrar os campos do formulário: evita a injeção de código malicioso. Em aplicações
web, os formulários são uma porta de entrada bastante uilizadas nas tentaivas de ataque. O
desenvolvedor deve se preocupar sempre em validar adequadamente as entradas do
usuário. Alguns desenvolvedores ainda realizam essa tarefa no lado cliente através de
javascript, por exemplo, no entanto a implementação mais correta e segura seria realizar
essas tarefas no backend, ou seja, no código executado no servidor;
- Persisir a senha criptografada: não gravar no banco de dados a senha em texto puro
e, sim, depois de uilizado algum mecanismo de criptograia.
3.1.5 Ataque aos peris de autorização
Em aplicações web, o conceito de autorização refere-se ao que é permiido o usuário
executar após autenicado no sistema. Scambray, Liu e Sima (2011, p. 168) deinem:
“autenicação determina se os usuários podem fazer
logon em uma aplicação web. A
autorização determina quais partes do aplicaivo autenicado os usuários podem acessar,
bem como as ações que eles podem tomar dentro do aplicaivo”. O foco desse ipo de
ataque é poder executar mais do que originalmente está autorizado àquele usuário ou
acessar áreas da aplicação as quais o seu peril não teria acesso. Uma das possibilidades é
que essa brecha de segurança tenha sido deixada durante o desenvolvimento da aplicação
onde por descuido ou falta de experiência o desenvolvedor não insere no código uma forma
de conferir se o peril do usuário autenicado tem de fato autorização de acessar uma
determinada área da aplicação.
3.1.6 Análise funcional dos componentes
Segundo Stutard e Pinto (2011, p. 798), a essência da análise funcional é ideniicar
cada componente da aplicação (por exemplo, a entrada do pedido, conirmação e
acompanhamento de pedidos) e tentar injetar falhas em cada recipiente de entrada. Este
processo de injeção de falhas por tentaiva é central para testes de segurança de sotware, e
é por vezes referido como ataques de validação. Normalmente as aplicações web uilizam-se
formulários para receber entradas de dados dos usuários. Essas entradas devem passar por
algum ipo de validação a im de garanir que a informação digitada de fato é a esperada pela
aplicação. Exemplo: em um campo que deve ser digitado um CPF, o número deve ser
validado para garanir que se trata realmente de um CPF válido. Ocorre que é possível haver
falhas nessa validação ou erros em como é implementada, sendo que a recomendação é que
sempre ocorra no lado do servidor. Uma validação realizada no lado cliente, uilizando-se
8
javascript por exemplo, pode ser facilmente burlada. Alguns resultados que o agente
malicioso poderá obter com esse ipo de ataque:
- Geração de informações de erro: o aplicaivo poderá fornecer informações sobre as
entradas de SQL (nomes de tabelas, nomes de campos). O erro poderá revelar caminhos
completos de diretório. Um erro na execução da página poderá fazer com que o aplicaivo
possa mostrar trechos do código fonte;
- Obtenção arbitrária de dados;
- Execução arbitrária de comandos: quando a entrada contém comandos que o
servidor poderá executar;
- Cross-Site Scriping : permite um atacante incorporar um
script malicioso, em
linguagens como javascript ou html, executando-o a im de coletar dados e podendo
comprometer informações privadas, manipular ou roubar
cookies, criar solicitações que
podem ser confundidas como as de um usuário válido. Em muitos casos, o agente malicioso
uiliza uma URL com argumentos customizados a im de veriicar as repostas da aplicação até
encontrar uma brecha de segurança.
3.1.7 Exploração das conecividades de dados
É no banco de dados que persistem as informações sensíveis das aplicações web. A
maneira recomendada para impedir esses ataques é iltrar e validar sempre as entradas de
dados que os usuários inserem nos campos de formulários do sistema e também as que são
passadas pelas URLs. Uma das formas mais uilizadas de ataque a bases de dados é a
chamada injeção de SQL ( Structured Query Language ou, em português, Linguagem de
Consulta Estruturada ). A metodologia desse ataque é uilizar-se das entradas de dados na
aplicação, a im de tentar adicionar um comando malicioso. As brechas disponíveis para a
técnica de injeção SQL variam desde a geração de erros inócuos até a execução de uma linha
de comando completa. De acordo Scambray, Liu e Sima (2011, p. 222), “quando devidamente
implementados, roinas de validação de entrada garantem que os dados estão em um
formato, ipo, duração e intervalo que é úil para a aplicação. Sem estas veriicações, a
conidencialidade, integridade e disponibilidade de uma aplicação e suas informações podem
estar em risco”. A validação de entrada deve ser realizada no servidor web e itens no banco
de dados devem ser fortemente ipados. Um campo que uiliza apenas os valores numéricos
devem ser um ipo int, não um varchar.
3.1.8 Ataque à interface de administração
As aplicações web normalmente disponibilizam formas de serem acessadas e
administradas remotamente, seja através de serviços como FTP (File Transfer Protocol) ou
mesmo através de uma interface de administração no navegador
web, dependendo da
escolha do protocolo estas interfaces de gestão pode apresentar uma janela atraente para os
atacantes oportunistas. Gerenciadores de conteúdo tais quais o wordpress, joomla e drupal
disponibilizam seu módulo de administração no próprio navegador. O
Zend Server , por
exemplo, disponibiliza acesso às conigurações do servidor e do PHP através da porta 10081.
Ainda bastante comum é encontrar uma instalação do
phpmyadmin, o qual fornece uma
interface web para administrar um banco de dados MySQL.
Um aplicaivo que procura por portas abertas (
port scanners ) pode facilmente
encontrar essas interfaces de administração, mesmo quando a porta padrão tenha sido
alterada para outra qualquer pelo web admin. Scambray, Liu e Sima (2011, p. 332) explicam:
“todas essas interfaces podem ser facilmente ideniicadas por atacantes que usam
9
varredura de portas e fraquezas nos sistemas explorados, sejam eles
bugs conhecidos de
sotware, senhas fracas (padrão) ou controles de acesso impróprios. Assim, cabe aos
arquitetos de aplicaivos web considerar o gerenciamento remoto e garanir que ele é feito
de forma segura”. Para diminuir os riscos faz-se necessário: Sempre alterar as senhas padrão
dessas interfaces; Não uilizar senhas fracas; Limitar o número de tentaivas de autenicação
sem sucesso, bloqueando o usuário; Sempre escolher o protocolo mais seguro entre os
disponíveis, como por exemplo o SFTP ao invés do FTP; Limitar o acesso à interface a um IP
especíico ou a um reduzido número de IPs; e, Gravar registros de acesso ( logs), tanto no
sucesso da autenicação quanto no erro.
3.1.9 Ataque ao cliente
À medida que os mecanismos contra os ataques ao lado servidor da aplicação se
aperfeiçoam, o alvo passa a ser o lado cliente: O sistema operacional do computador do
usuário; O navegador web; e, Complementos instalados no navegador ( plugins). Tais brechas
de segurança são exploradas até que se tornem conhecidas e corrigidas pelo fornecedor do
sotware. Uma vulnerabilidade
day zero signiica que é uma brecha, conhecida ou
desconhecida pelo desenvolvedor, para a qual ainda não foi fornecida correção. Também é
importante levar em conta que muitos usuários não mantêm seus sistemas devidamente
protegidos. Não baixam as atualizações do sistema operacional e demais aplicaivos
instalados, inclusive o navegador. Não uilizam anivírus. Instalam aplicaivos piratas ou
baixam arquivos de origem duvidosa. Clicam em endereços ou imagens que levam a páginas
web contaminadas ou que baixam um arquivo executável malicioso. No que diz respeito à
aplicações web, os diversos métodos de ataque ao lado cliente possuem o intuito de
conseguir uma ideniicação válida (usuário/senha) que permita, assim, a realização do
acesso indevido.
3.2
Importância de uma PSI para sistemas mais seguros
Conforme menciona o Tribunal de Contas da União - TCU (2012, p. 9), “os aspectos de
segurança aingiram tamanha complexidade que há a necessidade de desenvolvimento de
equipes e de métodos de segurança cada vez mais soisicados. Paralelamente, os sistemas
de informação também adquiriram importância vital para a sobrevivência da maioria das
organizações modernas, já que, sem computadores e redes de comunicação, a prestação de
serviços de informação pode se tornar inviável”. Uma PSI, quando apoiada pela alta
administração e incorporada à cultura organizacional, leva ao entendimento do que se deve
proteger e como fazê-lo. Muitas organizações acabam se submetendo a um risco
desnecessário por olvidarem da importância de uma PSI. Segundo o TCU (2012, p. 12), “a PSI
pode ser composta por várias políicas inter-relacionadas, como a políica de senhas, de
backup, de contratação e instalação de equipamentos e sotwares”.
No que diz respeito especiicamente à segurança de sistemas, alguns tópicos são
geralmente tratados numa PSI, de acordo com o TCU (2012, p. 11): Princípios de
conformidade dos sistemas computacionais com a PSI; Padrões mínimos de qualidade que
esses sistemas devem possuir; Políicas de controle de acesso a recursos e sistemas
computacionais; Classiicação das informações (de uso irrestrito, interno, conidencial e
secretas); Princípios legais que devem ser observados quanto à tecnologia da informação
(direitos de propriedade de produção intelectual, direitos
sobre sotware, normas legais correlatas aos sistemas desenvolvidos, cláusulas contratuais);
Princípios de supervisão constante das tentaivas de violação da segurança de informações;
10
Consequências de violações de normas estabelecidas na políica de segurança; Princípios de
gestão da coninuidade do negócio.
4.
Discussão
As aplicações web começaram a surgir a mais de uma década e são decorrentes de
uma série de tecnologias que permiiram a criação de páginas
web mais interaivas e
dinâmicas, o que acabou sendo denominado de web 2.0. Tal advento proporcionou uma
verdadeira revolução na troca de informações e nas interações entre pessoas e organizações.
Surgiram, então, os mecanismos de busca, lojas virtuais, as redes sociais, os
blogs e muito
mais. É necessário entender que as funcionalidades desses sistemas são apoiadas
fortemente em bases de dados ou conexões com outros sistemas. Logo, as linguagens de
programação que possibilitam a geração de html dinamicamente e os repositórios de dados
formam o alicerce que permite entregar o serviço desejado pelo usuário. Por serem
facilmente acessíveis através da rede – internet ou intranet – e, ao mesmo tempo, grandes
repositórios de informações, tais sistemas tornaram-se instantaneamente objetos de desejo
e alvos a serem explorados por agentes maliciosos, quase sempre em busca de algum ipo de
vantagem ilícita. Ao ganharem importância, uma considerável literatura sobre suas questões
de segurança também começou a surgir e ganhar corpo em arigos e livros. Contudo, não
obstante o conhecimento disponível, muitas invesidas noiciadas na imprensa obiveram
sucesso com técnicas já difundidas e amplamente destrinchadas na literatura existente.
Alguns ataques são mais facilmente detectáveis e, logo, rapidamente corrigíveis,
principalmente quando causa algum problema de desempenho ou indisponibilidade no
sistema. Entretanto, os casos mais graves - no entendimento de alguns autores como
Engebretson (2013, p. 17) - são considerados aqueles no qual o agente malicioso consegue o
acesso administraivo ao equipamento que hospeda a aplicação, a parir daí podendo coletar
informações sobre o sistema e sua infraestrutura. Os insumos coletados podem proporcionar
um ataque de maior monta ou, mesmo, alterações no código da aplicação ou em sua base de
dados que passem despercebidas. Tendo em vista que esse ipo de violação permite o autor
encobrir os seus rastros, consequentemente demorando mais a ser descoberta, os prejuízos
são em geral maiores.
Outro aspecto a considerar é que estando as aplicações web amplamente disponíveis
ao acesso público, ica praicamente impossível ter controle de onde poderá parir o ataque.
Sendo assim, o foco deve ser miigar as vulnerabilidades exploráveis, a parir do
conhecimento das metodologias em geral uilizadas pelos agentes maliciosos. Além disso, é
necessário manter-se ciente que constantemente novas vulnerabilidades surgirão, seja em
decorrência de brechas em programas (ex.: sistemas operacionais, servidores, navegadores,
plugins), falhas de coniguração e/ou erro humano.
O repertório de ameaças para as aplicações web é dinâmico e propenso a evoluir
constantemente. Entre os principais moivos, podem ser citados: o surgimento constante de
novas ferramentas para criação desses sistemas, o aumento de sua complexidade, o
aumento da conecividade entre aplicações (ex.:
web services ), as novas plataformas de
acesso (ex.: tablets e smartphones) e os próprios avanços nas estratégias uilizadas pelos
atacantes. Tal cenário de riscos trouxe à tona a necessidade das organizações adotarem
formalmente uma Políica de Segurança da Informação. Quando é demandado um novo
sistema, por exemplo, a falta de uma PSI pode levar a uma priorização apenas das suas
funcionalidades, prazos mais curtos, minimização ou inexistência de testes, etc, levando o
foco a ser manido na redução de custos e, consequentemente, deixando os aspectos de
11
segurança relevados a um segundo plano. A preocupação ocorrerá apenas de forma reaiva,
ou seja, quando surgir os incidentes de segurança.
5.
Conclusão
No presente arigo foi possível compreender melhor o que é uma aplicação web e os
aspectos relacionados à sua segurança. Atualmente, os principais métodos de ataque a esses
sistemas encontram-se bastante documentados, seja através de livros, arigos na
internet,
etc. As contramedidas para cada um deles, idem. Quanto ao futuro, projeta-se o uso cada vez
mais intenso de tais sistemas, tanto em computadores, quanto em novos disposiivos, como
smartphones, tablets, relógios, carros, etc. As vulnerabilidades e os ataques acompanharão
as novas tecnologias e as novas formas de acesso, demandando um esforço conínuo de
aprendizado.
Embora as aplicações web estejam atualmente tão disseminadas ao ponto de terem
se tornado indispensáveis, ainda faz-se necessário uma melhor compreensão dos riscos
associados ao seu uso, sobretudo por parte de empresas e pessoas que as desenvolvem. Os
ataques de tempos em tempos noiciados na imprensa levam a crer que nem sempre esses
atores aplicam corretamente o conhecimento disponível a im de proteger adequadamente
esses sistemas. Por tal razão, os riscos apenas poderão ser miigados à medida que um
aitude proaiva por parte das organizações seja de fato adotada e passe a estar imbuída na
própria cultura organizacional, englobando todos os processos que digam respeito à
segurança da informação. Para aingir esse ponto, é importante relembrar que a adoção de
uma Políica de Segurança da Informação é o caminho recomendado e que poderá
proporcionar sistemas de melhor qualidade e mais seguros. Tal políica deve permear os
processos e decisões organizacionais e é de fundamental importância que conte com o
compromeimento dos níveis gerenciais e da alta administração. Nos dias atuais, a
informação deve ser considerada como um aivo da organização e, sendo assim, deve-se
zelar por ela a im de preservar os interesses de sócios, invesidores, clientes, etc.
Por im, vale relembrar a citação de Cannings, Dwivedi e Lackey (2010, p. 15): “a
evolução da web é emocionante e, de certa forma, assustadora. Junto com os avanços sem
precedentes nas funcionalidades oferecidas, veriica-se uma escalada dramáica da corrida
armamenista entre as pessoas que escrevem o código e aqueles que tentam quebrá-lo”.
Referências Bibliográicas
ABNT NBR ISO/IEC 27002:2013 – Tecnologia da Informação – Técnicas de Segurança –
Código de práica para a gestão da segurança da informação . Rio de Janeiro: ABNT,
2013.
CAMPOS, André. Sistemas de Segurança da Informação , 2 a Edição. Florianópolis: Visual
Books, 2014.
CANNINGS, Rich; DWIVEDI, Himanshu; LACKEY, Zane. Hacking Exposed Web 2.0: Web 2.0
Security Secrets and Soluions, 3a Edição. EUA: McGraw-Hill, 2010.
DAVIS, Chris; SCHILLER, Mike; WHEELER, Kevin.
IT Audiing: Using Controls to Protect
a
Informaion Assets, 2 Edição. EUA: McGraw-Hill, 2011.
12
ENGEBRETSON, Patrick. The basics of hacking and penetraion tesing: ethical hacking and
penetraion tesing made easy. 2a Edição. EUA: Syngress, 2013.
GIL, Antonio Carlos. Como elaborar projetos de pesquisa. 5 a Edição. São Paulo: Atlas, 2010.
PAULI, Josh. Introdução ao Web Hacking : Ferramentas e Técnicas para Invasão de
Aplicações Web. São Paulo: Novatec Editora, 2014.
SCAMBRAY, Joel; LIU, Vicent; SIMA, Caleb.
Hacking Exposed Web Applicaions: Web
Applicaion Security Secrets and Soluions, 3a Edição. EUA: McGraw-Hill, 2011.
STUTTARD, Dafydd; PINTO, Marcus. The Web Applicaion Hacker`s Handbook: Finding and
Exploiing Security Flaws, 2a Edição. EUA: Wiley Publishing INC, 2011.
Tribunal de Contas da União. Boas Práicas em Segurança da Informação , 4a Edição. Brasília:
TCU, Secretaria de Fiscalização de Tecnologia da Informação, 2012.