sábado, 24 de setembro de 2011

Segurança Web

Um dos pontos fundamentais relacionados à internet é a questão de segurança das aplicações, com certeza a tendência no desenvolvimento de sistemas de informação é a migração para esse ambiente.  Muitas empresas estão reprogramando seus sistemas Windows para Web em busca de novos recursos de integração, mas a questão fundamental que se coloca é: Será que o investimento em segurança compensa tanto esforço?   E agora com o os novos geradores Smartdevices que também apresentam suas próprias vulnerabilidades, o que fazer? 

Nesse sentido algumas palestras no XXI Encontro Genexus foram fundamentais e esclarecedoras na apresentação desse tema:



OWASP Mobile TOP 10 Security Risks
Alberto Wilson, Mauro Flores - Deloitte

Desenvolvendo aplicações seguras com GeneXus
Alejandro Silva - Artech
http://www.genexus.com/encontro2011/palestra-materiais?pt,0,,2382

Para que serve e como usar a Segurança Integrada a GeneXus?
Alejandro Zeballos – Artech

  

O que é OWASP?
É uma organização sem fins lucrativos com foco nos temas de desenvolvimento de aplicações seguras, conscientizando os desenvolvedores quanto às principais situações de inseguridade.

Essa organização possui um check list com todas as vulnerabilidades atuais em aplicações web, smartdevices, e outros dispositivos na rede.  



Genexus é seguro?
Assim como todo ambiente de desenvolvimento, Genexus está sujeito a algumas vulnerabilidades importantes, não porque a plataforma é insegura, mas porque muitas das iniciativas de segurança devem partir do próprio desenvolvedor que a utiliza.

Isso quer dizer que grande parte da responsabilidade da melhoria de segurança depende do próprio desenvolvedor, não de Genexus.

Uma pequena lista de nossa responsabilidade no desenvolvimento é a seguinte:

1.      Os parâmetros são encaminhados nas chamadas entre scripts de forma encriptada ou não?
2.      Nossa conexão com o servidor é HTTPS ou não?
3.      Estamos permitindo aos usuários entrarem com informações em formato HTML?
4.      Estamos armazenando nos cookies os logins completos dos usuários com sua senha? Não encriptados?
5.      Os webservices programados encontram-se seguros com segurança de acesso? 

O mais interessante é que Genexus vem implementando em seus upgrades as correções de segurança que podem ser tratadas de forma automática pela própria ferramenta, e na versão Evolution 2 implementou-se um mecanismo muito interessante de controle chamado de GAM (Genexus Access Manager).  

GAM realiza controles de autorização e autenticação de usuários, ou seja, permite o ingresso e determina quais ações podem ser realizadas por determinada pessoa, de forma totalmente automática, ou seja, sem necessidade de intervenções dos desenvolvedores.  GAM permite o ingresso validado por diversos mecanismos como o Facebook, Twitter, web services, e outros, ou seja, é flexível e interessante. 

O que devemos fazer? 
Creio que a principal ação é a consciência da equipe de desenvolvimento para esse tema tão importante, principalmente porque qualquer objeto pode ser fonte de vulnerabilidade em nossa aplicação.
Em seguida compreender cada um dos mecanismos de ataque e vulnerabilidades que nossos sistemas podem sofrer e em seguida desenvolver os padrões necessários para que toda equipe de desenvolvimento programe da mesma forma.  Se de acordo com o check list da OWASP, melhor ainda.
Teremos uma aplicação totalmente segura? Se considerar que o FBI foi invadido recentemente, talvez isso responda a essa pergunta.

9 comentários:

  1. como ter segurança em uma aplicação GeneXus se o código é todo é gerado por ele?? Ou seja, se há uma falha a ferramenta irá gerar sempre o código com falha e o desenvolvedor não poderá fazer nada. Não acho legal esses códigos pré-prontos como o GAM, para mim soa como um conjunto de gambiarras para ir entegrando na ferramenta que por si só já tem muita bagunça.
    Trabalho com Genexus e já notei que no código HTML ele deixa várias informações, por exemplo, tudo que está em SDT, os dados que vão ser exibidos na tela ficam num input hidden, excesso de chamadas AJAX...etc

    ResponderExcluir
  2. Caro Anônimo,
    Acho interessante suas colocações, mas me permita discordar, pois o fato do Genexus ser uma ferramenta que gera o mesmo código torna-se muito mais fácil corrigir as inseguranças que se fosse por um mecanismo de programação manual, mesmo porque caberia ao desenvolvedor lembrar-se das implementacões necessárias.
    Que o Genexus vem evoluindo na questao das inseguranças isso é um fato, acredito que o próprio GAM é o resultado de necessidade de algumas correções, mas não conheço profundamente para avaliar se são apenas gambiarras.
    Acredito que o pessoal da Artech tem o maior interesse em compreender melhor as falhas e corrigí-las, fique a vontade no Post para externar suas experiências.
    Grande abraço

    ResponderExcluir
  3. Anônimo,
    Pelo contrario o que você esta indicando o GX intenta ocultar a grande complexidade que implicar desenvolver hoje aplicações seguras, mas são alternativas que você pode adotar no seu desenvolvimento o não, como o caso do modulo GAM.

    Complementando os links de este post respeito a palestras que tratam o tema de segurança de hoje, veja este links que resume alguns dos assuntos que tem que considerar na hora de desenvolver app web seguras e as facilidades que tem com GX:

    http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?12642

    Gostaria também conhecer os principais problemas que você tem se encontrado.

    Atenciosamente,
    Pablo Mazzilli

    ResponderExcluir
  4. Anônimo, é muito fácil criticar sem nem conhecer direito a ferramenta e nem dar um feedback com relação aos problemas que está tendo.

    Se és um bom programador e tens grande experiência, sabes muito bem que desenvolver na mão uma aplicação segura é impossível! Assim como é impossível também no Genexus, porém há um grande diferencial: Genexus tem evoluções... trás novos recursos e melhorias a cada update que a Artech desenvolve.

    Acho muito mais fácil implementar uma aplicação com uma API como a GAM, que já me trás 99% da segurança necessária implementada e me garante que o 1% restante será liquidado aos poucos com atualizações e melhorias de seus recursos.

    É claro que jámais conseguirá chegar a 100%, pois sabemos muito bem que a cada dia se consegue inventar muitas novas formas de se invadir um servidor web, por exemplo, e até que essas formas sejam descobertas e estudadas para que se implemente correções, toda e qualquer aplicação ficará vulnerável... até o FBI.

    Por que não nos diz quais os problemas que já encontrou com a segurança do GAM/Genexus?

    Abs.

    ResponderExcluir
  5. Utilizar uma ferramenta pronta como o GAM, sem saber o seu funcionamento é algo arriscado, assim como tudo no Genexus, e é possível sim fazer uma ferramenta segura utilizado uma linguagem de programação convencional, basta saber programar.

    ResponderExcluir
  6. Anônimo,
    Seguindo a sua linha de pensamento você não poderia utilizar um compilador pois não sabe intimamente como funciona (teria que escrever em código de maquina), teria que escrever o seu próprio sistema operacional, web server, application server, pilha de rede, database server, etc.

    ResponderExcluir
  7. Caro Anonimo,

    Essa discussão envolve diversas visões e pontos de vista, e claro, respeitando-se a todos, podemos muito bem atender às expectativas de certo público enquanto que outros com certeza sentir-se-ão incomodados (até ofendido) com esses pontos de vista. O Blog não tem o objetivo de gerar esse tipo de discussão, e nem tampouco ferir o orgulho das pessoas, e sim difundir técnicas de programação, mas como chegamos a esse ponto, porque não tentar ajudar um pouco.

    Vou tentar ser mais claro, me desculpe se não conseguir.

    Existem duas correntes fundamentais: a visão do gestor e a visão do programador, e muitas vezes ocorrem grandes divergências nas metas e objetivos de cada um. O gestor busca garantir padrões de funcionamento seguros da aplicação, prazos, custos, e o programador buscam (entre outras coisas) produzir seus programas cada vez melhores e com mais técnica embarcada.

    Na medida em que utiliza uma ferramenta como Genexus, que gera código automático, todos os seus programas executam dentro de um determinado padrão de funcionamento, desta forma quando o próprio gerador já programa mecanismos que ajudam a proteger a aplicação nas questões da insegurança web, acaba resultando num processo mais seguro que a programação manual. Visto que caberia a decisão do próprio programador incluir ou não tais recursos, quer por desconhecimento, por vontade ou mesmo por falta de interesse. Claro que se um dos programas falha por causa do código gerado pela ferramenta todos falham, mas por outro lado, se o processo dificulta o acesso, todos dificultam. De certa maneira isso agrada mais aos gestores e não muito aos programadores.

    Genexus programou o GAM na versão Ev2 de forma a minimizar o impacto da segurança nos programas por ele gerados, tornando o modelo de certa forma mais simples de se alcançar segurança. E de certa maneira ajudando bastante nas questões mais fundamentais envolvidas como a autenticação e a autorização sobre os objetos da aplicação. Esse mecanismo, no entanto, não é totalmente inviolável, ou seja, requer que ainda tenhamos todo cuidado para publicar qualquer coisa na web, e acredito que não exista nenhuma aplicação na web que seja totalmente inviolável, ou mesmo, analisemos que para se chegar a inviolabilidade muito esforço físico e mental, além dos recursos financeiros devem ser incluídos nesta conta.

    Genexus busca contribuir um pouco nessa questão. E isso a partir da versão Ev2, e devido à necessidade de permitir que dispositivos smartdevices pudessem também acessar os dados da aplicação web. E atendendo a uma demanda da própria comunidade.

    Por outro lado é claro que um excelente programador, que domine não apenas todos os recursos das linguagens de programação, mas também as características do banco de dados, e a teoria de modelagem da base na terceira forma normal, da estrutura e linguagem dos dispositivos smartdevices, web e Windows, da configuração do servidor web, das questões de segurança das aplicações, do atendimento rápido às demandas do cliente, da agilidade na entrega de sistemas, poderá fazer a mesma coisa ou até muito melhor que o próprio Genexus. E, diga-se de passagem, o próprio Genexus é desenvolvido e utilizado diariamente por programadores. Entendo que você se enquadre nesse grupo.

    Caso queira conhecer um pouco mais sobre esses recursos e inclusive contribuir apontando as eventuais falhas que venha a detectar, pode baixar o Ev2 Trial e instalar em seu computador.


    Grande abraço

    ResponderExcluir
  8. Olá Douglas Hamilton, eu sou novo no genexus, e queria algumas dicas de como utilizar corretamente o GAM?
    Certo, eu posso estar criando todas as minhas transações e depois eu o importo, ou isso tanto faz, porque a hora que eu faço tal coisa o GAM, não cria as transações e nem as tabelas.

    abraço

    ResponderExcluir
  9. Thiago,
    Para usar o GAM você precisa apenas aplicar a propriedade Enable Integrated Security=Yes, na sua kb (essa propriedade encontra-se em Preferences).
    Todos os objetos Transações, WebPanel, Procedures tipo WebService, entre outras, serão protegidas por um processo de autenticação com usuário e senha.
    Para ingressar no GAM Home, precisa da senha do administrador (admin/admin123).
    ab

    ResponderExcluir