Aplicações Web e as suas Principais Vulnerabilidades

June 4, 2017 | Autor: J. Modesto | Categoria: Web Development, Engenharia de Software, Segurança da informação
Share Embed


Descrição do Produto

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 Software da UNESA - Universidade Estácio de Sá Resumo Este artigo tem como objetivo 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 tipos 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 conectividade entre as unidades com separação geográfica acontecia em geral através de Linhas Privadas de Comunicação de Dados. No entanto, notadamente a partir 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 permitiu o advento de páginas web mais interativas 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 artigo 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 utilizadas por agentes maliciosos, bem como as maneiras de mitigar os riscos associados à sua utilização, provendo uma melhor segurança da informação. Palavras-chave: aplicação web, banco de dados, segurança da informação, teste de software, crime virtual, auditoria de sistemas, hacker. 1.

Introdução

A popularização do uso da internet, em especial a partir 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 tipos de instituições viram-se compelidas a marcar sua presença no chamado mundo virtual. Sistemas que antes precisavam ser instalados e configurados para somente assim serem executados no computador, ou em alguns casos emulados através de terminais, foram paulatinamente 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 expectativa de reduzir custos, muitas organizações iniciaram o processo de migração de suas aplicações mantidas 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 benefícios e novas possibilidades, impôs novos riscos e desafios. O crescimento no uso das aplicações web, associada à maneira que elas são disponibilizadas e facilmente acessíveis, tornou-as atrativas 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 contínuas de requisitos, testes inadequados ou não existentes e, inclusive, desconhecimento do desenvolvedor dos métodos de ataque utilizados pelos agentes mal intencionados. Para Campos (2014, p. 29), “muitas vezes é difícil obter o apoio da própria alta administração da organização para realizar os investimentos 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 objetivo desse artigo é 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ática pertinente que acabará por demonstrar os riscos associados ao uso desses sistemas, a necessidade de investimento em segurança da informação e, também, a importância da adoção formal de tal política pelas organizações. 2.

Fundamentação teórica

2.1

Definiçã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áticas para uma mistura incrivelmente interativa de recursos movidos por um exército de programadores criativos. No final 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) define aplicação web como “qualquer software 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 definição, uma página web estática não se enquadraria nas características 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ísticas 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 utilizadores 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 definiçã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ático para o conteúdo interativo 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 aplicativos que aproveitem os efeitos de rede para se tornarem melhores quanto mais são usados pelas pessoas, aproveitando a inteligência coletiva”. 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 significam a ausência de segurança (em favor de mais funcionalidade ou desempenho melhorado)”. Exemplos de aplicações tí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 Stuttard 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 utilidade. 2.2

Definiçã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 utilizada 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 físico ao computador, enquanto a exploração remota ocorre por meio de redes e sistemas, quando o atacante não pode tocar fisicamente 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 tipos 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 administrativo permite que um hacker controle a máquina de destino. Novos programas podem ser instalados, ferramentas defensivas podem ser desativadas, documentos confidenciais podem ser copiados, editados ou apagados, as configurações de segurança podem ser alteradas e muito mais”.

4

2.3 Definição de segurança da informação A norma ABNT NBR ISO 27002:2013 (2013, p. 9) define segurança da informação como "a proteção da informação de vários tipos de ameaças para garantir a continuidade do negócio, minimizar o risco ao negócio, maximizar o retorno sobre os investimentos e as oportunidades de negócio”. Neste sentido, a segurança da informação é obtida através de uma série de boas práticas, políticas e controles, os quais depois de estabelecidos e implementados, devem ser continuamente monitorados, revisados e melhorados, a fim de que permaneçam eficazes 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 ativos para os negócios. Definir, alcançar, manter e melhorar a segurança da informação podem ser atividades essenciais para assegurar a competitividade, o fluxo de caixa, a lucratividade, 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 tipos 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 garantir a integridade, confidencialidade, autenticidade e disponibilidade das informações processadas pela organização”: - Integridade: consiste em proteger a informação contra modificação sem a permissão explícita do proprietário daquela informação. A modificação inclui ações como escrita, alteração de conteúdo, alteração de status, remoção e criação de informações; - Confidencialidade: significa 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 utilizadas para interferir sobre o todo. No caso da rede, isto significa que os dados, enquanto em trânsito, não serão vistos, alterados, ou extraídos da rede por pessoas não autorizadas; - Autenticidade: o controle de autenticidade está associado com identificação correta de um usuário ou computador. O serviço de autenticaçã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

Definição de Política de Segurança da Informação

De acordo com o Tribunal de Contas da União - TCU (2012, p. 26), a "política 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ítica 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 artigo apresentou em sua fundamentação teórica alguns conceitos a fim 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 utilizados nos ataques. Os tópicos seguintes são resultado de pesquisa bibliográfica realizada em livros que tratam de segurança em aplicações web e que são comercializados de forma fí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 bibliografia estudada, a fim de organizar o conteúdo de forma lógica e didática. 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 dificultar a compreensão e até a empatia com o tema. Segundo Gil (2010, p. 61), “O levantamento bibliográfico pode ser entendido como um estudo exploratório permitindo 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 conectividade 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 financeiras 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 tipos de aplicações web disponíveis atualmente a estratégia de ataque segue em geral alguns passos em comum ou utiliza-se de alguma técnica que de alguma forma acabará se enquadrando em um dos seguintes pontos: Identificação da infraestrutura; Exploração do servidor web; Inspeção da aplicação; Ataque aos mecanismos de autenticação; Ataque aos perfis de autorização; Análise funcional dos componentes; Exploração das conectividades 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 investidas. 3.1.1 Identificação da infraestrutura As aplicações web exigem infraestrutura substancial - servidor e software, 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 identificação e análise da infraestrutura de baixo nível em que a aplicação se encontra. O agente malicioso busca nesse tipo de exploração identificar o tipo de equipamento utilizado como servidor, portas TCP/IP abertas, sistema operacional e software de servidor web sobre o qual a aplicação é executada. Se a aplicação utiliza 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 destino,

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 verificar esses serviços em busca de vulnerabilidades”. 3.1.2 Exploração do servidor web O foco é explorar alguma vulnerabilidade ou falha de configuração no software do servidor web com o objetivo de ganhar acesso a arquivos e diretórios que lá estão hospedados. Alguns finalidades que podem ser citadas: Inserir, copiar, alterar e deletar dados; Inserir código malicioso; Conhecer melhor a estrutura da aplicação a partir da análise da árvore de diretórios afim de verificar 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 configuraçã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 constitui o passo final da fase de reconhecimento e o seu objetivo é permitir 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 aplicativo interage. Sendo assim, tenta-se estudá-los cuidadosamente em busca de vulnerabilidades. Scambray, Liu e Sima (2011, p. 45) mencionam que a finalidade da inspeção da aplicação “é gerar uma imagem completa do conteúdo, componentes, funções e fluxo do site, a fim 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: Identificação de formulários de entrada de dados; Como a aplicação trata e filtra 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 autenticação A autenticação do usuário é um item fundamental e desempenha um papel crítico 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 identidade estabelecida pelas credenciais fornecidas. Logo, o foco desse tipo de ataque é conseguir um par válido de usuário e senha com o intuito de obter o acesso indevido ao sistema. Constituem contramedidas recomendadas por Scambray, Liu e Sima (2011, p. 124-217): - Utilizar o protocolo https e token aleatório na página onde consta o formulário de autenticação: por padrão o http transita as informações em texto puro e portanto o atacante com acesso àquela rede (uma rede sem fio pública, por exemplo) pode capturar essa informação utilizando-se de aplicativos que capturam pacotes de rede ( sniffers). Já quanto à questão do uso de um token, este seria um número aleatório gerado toda vez a página de autenticação é carregada, sendo enviado junto ao formulário em cada envio ( POST). Essa técnica é utilizada a fim de evitar o ataque de robôs ( scripts automatizados) ao formulário de

7

autenticação. Outro método para evitar o ataque de robôs é a utilizaçã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 utilizarem senhas mais robustas: uma credencial de autenticaçã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 utilizadas; - Utilizar trilhas de auditoria ( logs): gravar no banco de dados todas os acessos e tentativas de acesso ao sistema, bem como o endereço IP de origem e a aplicação cliente, a fim de permitir uma análise a qualquer tempo se houve tentativa de burlar o mecanismo de autenticação da aplicação web; - Bloqueio de usuário: bloquear o usuário após um número estabelecido de tentativas de autenticaçã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 utilizadas nas tentativas 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; - Persistir a senha criptografada: não gravar no banco de dados a senha em texto puro e, sim, depois de utilizado algum mecanismo de criptografia. 3.1.5 Ataque aos perfis de autorização Em aplicações web, o conceito de autorização refere-se ao que é permitido o usuário executar após autenticado no sistema. Scambray, Liu e Sima (2011, p. 168) definem: “autenticação determina se os usuários podem fazer logon em uma aplicação web. A autorização determina quais partes do aplicativo autenticado os usuários podem acessar, bem como as ações que eles podem tomar dentro do aplicativo”. O foco desse tipo de ataque é poder executar mais do que originalmente está autorizado àquele usuário ou acessar áreas da aplicação as quais o seu perfil 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 perfil do usuário autenticado tem de fato autorização de acessar uma determinada área da aplicação. 3.1.6 Análise funcional dos componentes Segundo Stuttard e Pinto (2011, p. 798), a essência da análise funcional é identificar cada componente da aplicação (por exemplo, a entrada do pedido, confirmação e acompanhamento de pedidos) e tentar injetar falhas em cada recipiente de entrada. Este processo de injeção de falhas por tentativa é central para testes de segurança de software, e é por vezes referido como ataques de validação. Normalmente as aplicações web utilizam-se formulários para receber entradas de dados dos usuários. Essas entradas devem passar por algum tipo de validação a fim de garantir 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 garantir 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, utilizando-se

8

javascript por exemplo, pode ser facilmente burlada. Alguns resultados que o agente malicioso poderá obter com esse tipo de ataque: - Geração de informações de erro: o aplicativo 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 aplicativo 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 Scripting : permite um atacante incorporar um script malicioso, em linguagens como javascript ou html, executando-o a fim 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 utiliza uma URL com argumentos customizados a fim de verificar as repostas da aplicação até encontrar uma brecha de segurança. 3.1.7 Exploração das conectividades de dados É no banco de dados que persistem as informações sensíveis das aplicações web. A maneira recomendada para impedir esses ataques é filtrar 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 utilizadas 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 é utilizar-se das entradas de dados na aplicação, a fim 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, rotinas de validação de entrada garantem que os dados estão em um formato, tipo, duração e intervalo que é útil para a aplicação. Sem estas verificações, a confidencialidade, 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 tipados. Um campo que utiliza apenas os valores numéricos devem ser um tipo 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 configuraçõ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 aplicativo 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 identificadas por atacantes que usam

9

varredura de portas e fraquezas nos sistemas explorados, sejam eles bugs conhecidos de software, senhas fracas (padrão) ou controles de acesso impróprios. Assim, cabe aos arquitetos de aplicativos web considerar o gerenciamento remoto e garantir que ele é feito de forma segura”. Para diminuir os riscos faz-se necessário: Sempre alterar as senhas padrão dessas interfaces; Não utilizar senhas fracas; Limitar o número de tentativas de autenticaçã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ífico ou a um reduzido número de IPs; e, Gravar registros de acesso ( logs), tanto no sucesso da autenticaçã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 software. Uma vulnerabilidade day zero significa 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 aplicativos instalados, inclusive o navegador. Não utilizam antivírus. Instalam aplicativos 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 identificaçã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 atingiram tamanha complexidade que há a necessidade de desenvolvimento de equipes e de métodos de segurança cada vez mais sofisticados. 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íticas inter-relacionadas, como a política de senhas, de backup, de contratação e instalação de equipamentos e softwares”. No que diz respeito especificamente à 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íticas de controle de acesso a recursos e sistemas computacionais; Classificação das informações (de uso irrestrito, interno, confidencial e secretas); Princípios legais que devem ser observados quanto à tecnologia da informação (direitos de propriedade de produção intelectual, direitos
 sobre software, normas legais correlatas aos sistemas desenvolvidos, cláusulas contratuais); Princípios de supervisão constante das tentativas de violação da segurança de informações;

10

Consequências de violações de normas estabelecidas na política de segurança; Princípios de gestão da continuidade 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 permitiram a criação de páginas web mais interativas 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 tipo 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 artigos e livros. Contudo, não obstante o conhecimento disponível, muitas investidas noticiadas na imprensa obtiveram 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 administrativo ao equipamento que hospeda a aplicação, a partir 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 tipo 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, fica praticamente impossível ter controle de onde poderá partir o ataque. Sendo assim, o foco deve ser mitigar as vulnerabilidades exploráveis, a partir do conhecimento das metodologias em geral utilizadas 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 configuraçã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 motivos, podem ser citados: o surgimento constante de novas ferramentas para criação desses sistemas, o aumento de sua complexidade, o aumento da conectividade entre aplicações (ex.: web services ), as novas plataformas de acesso (ex.: tablets e smartphones) e os próprios avanços nas estratégias utilizadas pelos atacantes. Tal cenário de riscos trouxe à tona a necessidade das organizações adotarem formalmente uma Política 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 mantido 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 reativa, ou seja, quando surgir os incidentes de segurança. 5.

Conclusão

No presente artigo 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, artigos 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 dispositivos, 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 contí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 noticiados na imprensa levam a crer que nem sempre esses atores aplicam corretamente o conhecimento disponível a fim de proteger adequadamente esses sistemas. Por tal razão, os riscos apenas poderão ser mitigados à medida que um atitude proativa 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 atingir esse ponto, é importante relembrar que a adoção de uma Política de Segurança da Informação é o caminho recomendado e que poderá proporcionar sistemas de melhor qualidade e mais seguros. Tal política deve permear os processos e decisões organizacionais e é de fundamental importância que conte com o comprometimento dos níveis gerenciais e da alta administração. Nos dias atuais, a informação deve ser considerada como um ativo da organização e, sendo assim, deve-se zelar por ela a fim de preservar os interesses de sócios, investidores, clientes, etc. Por fim, 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, verifica-se uma escalada dramática da corrida armamentista entre as pessoas que escrevem o código e aqueles que tentam quebrá-lo”. Referências Bibliográficas ABNT NBR ISO/IEC 27002:2013 – Tecnologia da Informação – Técnicas de Segurança – Código de prática 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 Solutions, 3a Edição. EUA: McGraw-Hill, 2010. DAVIS, Chris; SCHILLER, Mike; WHEELER, Kevin. IT Auditing: Using Controls to Protect a Information Assets, 2 Edição. EUA: McGraw-Hill, 2011.

12

ENGEBRETSON, Patrick. The basics of hacking and penetration testing: ethical hacking and penetration testing 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 Applications: Web Application Security Secrets and Solutions, 3a Edição. EUA: McGraw-Hill, 2011. STUTTARD, Dafydd; PINTO, Marcus. The Web Application Hacker`s Handbook: Finding and Exploiting Security Flaws, 2a Edição. EUA: Wiley Publishing INC, 2011. Tribunal de Contas da União. Boas Práticas em Segurança da Informação , 4a Edição. Brasília: TCU, Secretaria de Fiscalização de Tecnologia da Informação, 2012.

Lihat lebih banyak...

Comentários

Copyright © 2017 DADOSPDF Inc.