Beruflich Dokumente
Kultur Dokumente
ndice
1. INTRODUO.................................................................................................................................3 1.1 1.2 1.3 2 2.1 2.1.1 2.2 2.2.1 2.3 2.3.1 2.4 2.4.1 2.5 2.5.1 2.6 2.6.1 2.7 2.7.1 3 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 4 CONTROLE DE VERSO ..............................................................................................................3 OBJETIVO ...................................................................................................................................3 PBLICO - ALVO ........................................................................................................................4 INJEO DE SQL........................................................................................................................4 Recomendaes ....................................................................................................................5 CROSS SITE SCRIPTING...............................................................................................................5 Recomendaes ....................................................................................................................5 ATAQUES A SISTEMAS DE AUTENTICAO .................................................................................6 Recomendaes ....................................................................................................................7 SEQESTRO DE SESSES .............................................................................................................7 Recomendaes ....................................................................................................................8 VISUALIZAO DE ARQUIVOS INDEVIDOS ..................................................................................8 Recomendaes ....................................................................................................................8 EXECUO DE COMANDOS NO SISTEMA OPERACIONAL .............................................................9 Recomendaes ....................................................................................................................9 ELEVAO DE PRIVILGIOS ......................................................................................................10 Recomendaes ..................................................................................................................10 UTILIZAO DO PROTOCOLO HTTPS.......................................................................................10 POLTICA DE SENHAS ................................................................................................................11 UPLOAD DE ARQUIVOS .............................................................................................................11 PRIVILGIOS MNIMOS NO BANCO DE DADOS ...........................................................................12 CRIPTOGRAFIA DAS SENHAS .....................................................................................................12 CAMPOS HIDDEN NO CDIGO HTML........................................................................................12 ATUALIZAO DE SOFTWARES .................................................................................................13 CONFIGURAO DE SOFTWARES ..............................................................................................13
REFERNCIAS..............................................................................................................................13
1. Introduo
As aplicaes web disponibilizadas na rede, sejam elas sites, webservices ou sistemas acessveis via rede, podem ser acessadas por quase quaisquer usurios que possuam conexo com a Internet. Essa facilidade de acesso possibilita o ataque indiscriminado a tais servios, ocasionando, em determinados casos, diversos problemas, tais como: divulgao de dados confidenciais, indisponibilidade do servio por tempo indeterminado, denigrao da imagem da organizao, etc. Ainda baseado na afirmativa do Gartner Group, que informa que mais de 70% dos cyber ataques ocorrem em aplicaes web, e baseado na afirmativa do WhiteHat Security, onde 8 em 10 sites da web possuem srias vulnerabilidades, a necessidade de aumentar a segurana de tais aplicaes torna-se essencial. Infelizmente, a maioria dos desenvolvedores s se preocupa com a segurana da aplicao aps algum problema relacionado mesma, querendo aplicar todas as medidas preventivas somente depois que o software est desenvolvido. Dessa forma, infringe-se uma das primeiras premissas para aumentar a segurana da aplicao: pensar em segurana desde o incio do desenvolvimento do software. Pensando nisso, foi desenvolvido este documento para servir de guia bsico na tarefa de garantir nveis de segurana maiores para sistemas web.
1.2 Objetivo
O propsito principal deste documento dar uma viso geral das principais falhas encontradas em aplicaes web e apresentar contramedidas para solucionar cada um dos problemas listados. Dessa forma, foge do escopo deste documento entrar em detalhes sobre cada uma das falhas apresentadas ou ainda servir como um manual para realizao de ataques. Na seo de referncias existem vrios links para documentos que tratam com maiores detalhes as vulnerabilidades aqui apresentadas.
2 Vulnerabilidades Comuns
Nesta seo so apresentadas as falhas comumente encontradas em aplicaes web, exibindo a sua descrio e as respectivas recomendaes para evit-las.
O atacante poderia inserir nos campos login e senha os seguintes valores respectivamente, ' or 1=1 -- e 123, resultando no cdigo:
Select * From Usuario Where login='' or 1=1 -- ' And senha = '123';
Dessa forma, a aplicao executar uma consulta SQL que retornar um conjunto com todos os usurios do sistema, pois a expresso or 1=1 torna o comando verdadeiro e a expresso -- comenta o restante do cdigo. Como vrios sistemas de autenticao utilizam apenas o primeiro usurio da lista retornada, que freqentemente um administrador do sistema, o atacante ento seria autenticado no sistema com as credencias deste super-usurio.
2.1.1 Recomendaes
Para contornar esse problema, a principal recomendao realizar uma validao de todos os dados de entrada, principalmente no lado do servidor, a fim de evitar a utilizao de caracteres maliciosos. A validao de dados realizada somente no lado do cliente pode ser facilmente contornada copiando a pgina e removendo o cdigo de validao, geralmente feito em javascript. A poltica de validao recomendada a ser implementada a de permitir somente caracteres previamente selecionados e negar todo o resto das entradas. Isso pode ser alcanado, por exemplo, atravs do uso de expresses regulares. Finalmente, recomenda-se utilizar Prepared Statement ou Stored Procedures nos comandos SQL. O principal objetivo impedir que os dados de entrada afetem a sintaxe do comando SQL, separando a lgica do cdigo dos dados informados. Alm de aumentar a segurana, a aplicao tambm beneficiada com um aumento no desempenho do comando a ser executado.
2.2.1 Recomendaes
O ponto principal para prevenir esta vulnerabilidade nas aplicaes a confirmao de que o contedo de pginas dinamicamente geradas no contenha scripts indesejados. Isso pode ser alcanado filtrando-se toda a entrada do usurio na aplicao, incluindo cookies, urls e dados transmitidos via POST e GET. Alm disso, interessante tambm filtrar a sada do servidor web para o usurio, pois um atacante poderia inserir um script hostil diretamente no banco de dados ou em um momento em que a aplicao no possua filtragem dos dados. Dessa forma, qualquer dado persistente que seja transmitido entre o navegador e o servidor web deve ser filtrado, a fim de atingir todo o escopo do problema. Para realizar a filtragem dos dados recomenda-se utilizar uma abordagem positiva, que consiste em negar todas as entradas com exceo
dos dados previamente escolhidos. Por exemplo, no h necessidade de um campo do tipo data no formulrio receber entradas com valores diferentes de nmeros e talvez barras / (para separar dia, ms e ano). Dessa forma, o desenvolvedor no ter que adivinhar ou atualizar todas as formas de entradas maliciosas para negar todos os caracteres especficos. A abordagem positiva da filtragem de dados a recomendada pois existem vrias formas de representar o mesmo caractere. Por exemplo, a seguinte tabela abaixo lista algumas formas de representar o caractere <, que dependendo do contexto pode ser hostil. Representao do caractere < %3C < < < < < < < < < < < < < < < < < < < < < <
2.3.1 Recomendaes
O primeiro passo evitar mensagens de erros detalhadas, como nos caso exibidos. As mensagens de erros devem ser especficas o suficiente para informar o problema ao usurio, e restritas o mximo para no disponibilizar informaes que facilitem o ataque de pessoas mal intencionadas. Para que sejam evitados ataques de dicionrio ou de fora bruta, pode-se utilizar um controle de logins mal sucedidos, estipulando-se um limite na quantidade de erros de login, bloqueando o usurio por um perodo de tempo ou pode-se utilizar CAPTCHA1. Abaixo exibido um exemplo do uso de CAPTCHA, na qual s aparece aps algumas tentativas erradas.
caso do identificador estar associado a um usurio ou negando o acesso em caso contrrio. O ataque pode surgir quando captura-se ou adivinha-se o cookie de outro usurio. Ento, torna-se possvel acessar a aplicao e se passar pelo usurio que est associado quele cookie capturado. Isso pode acontecer de vrias maneiras: Atravs de outros ataques que consigam capturar o cookie, como por exemplo, Cross Site Scripting. Caso a comunicao dos dados no seja criptografada, ou seja, caso seja utilizado HTTP ao invs de HTTPS (HTTP sobre SSL). Se o cookie estiver armazenado no cache do navegador.
2.4.1 Recomendaes
Apesar do uso de HTTPS garantir a criptografia dos dados transmitidos entre o cliente e o servidor, ainda possvel capturar o cookie dos usurios atravs de outro ataque, neste caso, o Cross Site Scripting. Portanto, a eliminao dessa vulnerabilidade j diminui consideravelmente o risco de ocorrer um seqestro de sesso. Alm disso, ainda so recomendados alguns itens: Utilizao de um valor pequeno para o tempo de expirao do cookie. Evitar utilizar cookies persistentes, impedindo assim que um atacante o roube, caso tenha acesso fsico ao computador do usurio. Separar os cookies de autenticao dos cookies de personalizao, que so utilizados para armazenar as preferncias dos usurios.
2.5.1 Recomendaes
A recomendao mover os arquivos de configurao (ex: .cfg, .conf, .ini, etc.), de backup (ex: .bak, .old, etc.) e sigilosos (ex:, .class, .log, .xls, .pdf, .mdb, .tar.gz, etc.) para uma pasta que no seja acessvel pela web e implementar na aplicao um controle de acesso aos arquivos sigilosos.
Caso a disponibilizao de arquivos sigilosos seja necessria, recomenda-se que a prpria aplicao oferea essa funcionalidade, respeitando a autenticao e a autorizao do usurio solicitante. Os demais tipos de arquivos, configurao e backup, no devem ser acessados via web.
Alterando-se o valor para ; rm r *, o atacante consegue remover todos os arquivos e diretrios do diretrio corrente e abaixo dele.
http://exemplo/teste.php?id=15&arquivo=; rm r *
Um outro modo, que algumas aplicaes web utilizam so as funes exec, que permitem a execuo de comandos do sistema operacional. Caso a aplicao permita a introduo de dados pelo usurio que sejam usados em tais funes sem a devida validao, um atacante poderia executar comandos do sistema operacional remotamente.
2.6.1 Recomendaes
Como estas funes podem oferecer falhas crticas infra-estrutura da empresa, recomenda-se que todos os dados provindos do usurio e utilizados como parmetro nestas funes sejam validados antes de serem executados. Tambm utilize, se possvel, chamadas a bibliotecas ao invs de processos externos (exec(), system(), etc.) com a finalidade de recriar a funcionalidade desejada. Alm disso, certifique-se que a aplicao executada com o mnimo
de privilgios possvel para funcionar corretamente, a fim de restringir o efeito da execuo de cdigos maliciosos. Caso a aplicao no faa uso de tais funes e caso seja possvel, recomenda-se o bloqueio da execuo das chamadas de sistema atravs da configurao do servidor web.
2.7.1 Recomendaes
Todo controle deve ser validado, no mnimo, no lado do servidor, podendo tambm ser validado no lado do cliente, para efeito de apresentao e otimizao da aplicao. Qualquer recurso protegido do sistema s poder ser acessado atravs de usurios devidamente autenticados e autorizados. Portanto, revise o cdigo da aplicao e verifique se todos os recursos protegidos possuem tal controle implementado. Utilize ainda o conceito do privilgio mnimo2, para executar os processos que mantm a aplicao.
3 Outras Recomendaes
Alm dos itens apresentados anteriormente, outros itens com o mesmo grau de importncia devem ser levados em conta. Abaixo, so exibidos os pontos a serem verificados com sua respectiva descrio.
2 Privilgio mnimo representa o conceito que utiliza o mnimo de permisses necessrias para efetuar o servio requisitado.
10
de trfego de dados seguros, foi implementado HTTPS3 para prover vrios servios de segurana para as aplicaes e usurios das mesmas. Os principais servios oferecidos so: confidencialidade4 da informao entre o servidor e o cliente atravs da criptografia e a autenticao5 do servidor para o cliente atravs de certificados digitais.
3 HTTPS (HyperText Transfer Protocol Secure) o protocolo HTTP sobre SSL ou TLS. 4 A confidencialidade diz que a informao s est disponvel para aqueles devidamente autorizados. 5 Autenticao a capacidade de garantir que um usurio de fato quem ele diz ser.
11
O algoritmo de hash gera, a partir de uma entrada qualquer, uma mensagem de tamanho fixo, nica e irreversvel. Por nica, entende-se que duas entradas diferentes dificilmente tero o mesmo hash (resultado do algoritmo).
12
4 Referncias
Tempest technologies http://www.tempest.com.br/ OWASP (The Open Web Application Security Project). Vrios artigos, ferramentas, etc. sobre segurana em aplicaes web. http://www.owasp.org/ Spett, Kevin. SQL Injection: Are your web applications vulnerable? http://www.spidynamics.com/papers/SQLInjectionWhitePaper.pdf#search =%22white%20paper%20sql%20injection%22 Friedl, Steve. SQL Injection Attacks by Example http://www.unixwiz.net/techtips/sql-injection.html Spett, Kevin. Blind SQL Injection: Are your web applications vulnerable? http://www.spidynamics.com/whitepapers/Blind_SQLInjection.pdf#search =%22spi%20dynamics%20blind%20sql%20injection%22 Cross Site Scriptting FAQ
13
http://www.cgisecurity.com/articles/xss-faq.shtml Ollmann, Gunter. Paper: HTML Code Injection and Cross-site scripting http://www.technicalinfo.net/papers/CSS.html Denial of Service Attacks http://www.cert.org/tech_tips/denial_of_service.html The CAPTCHA Project http://www.captcha.net/
14