PartnerSales


Imprimir

Opinião

Segurança em aplicativos com conectividade

Publicado em 19/09/2012 às 09:50


Armin Bachmann é coordenador de suporte de usuários para GeneXus



Com a evolução na adoção de TI, a complexidade dos aplicativos que desenvolvemos também aumentou. Mas não só isso (ou inclusive por causa disso), aumentou o grau de exposição das empresas aos ataques via web. Parece que cada vez temos mais portas por onde os ladrões podem entrar. Se na década de 1980, os ladrões entravam pela porta, com o advento da internet nos anos 1990 tornou-se possível entrar pela rede usando o e-mail e, depois, por programas de mensagens. Os riscos continuam aumentando, e nós também continuamos aprendendo a nos proteger.



No ano de 2010, como mostra o estudo Charles Henderson de Trustwave, devíamos nos proteger de ataques que chegavam por via física, pela rede, por e-mail, nos aplicativos, via wireless, do client-side, através dos celulares e pelas redes sociais. O estudo conclui, entre outras coisas, que a velhas ameaças nunca desaparecem, que as novas apontam para o usuário e que as ferramentas maliciosas são cada vez mais sofisticadas.



Os números que as estatísticas mostram são desastrosos. Pareceria que na área de TI os profissionais de infraestrutura e desenvolvimento não sabem colocar no ar aplicativos seguros o bastante. E não estamos falando de desejar aplicativos sem vulnerabilidades: o Projeto de Estatísticas de Segurança de Aplicativos Web 2008, do Web Application Security Consortium (WASC), entre outras coisas, conclui que a probabilidade de detectar um erro crítico ou urgente em um aplicativo web dinâmico é de 49% escaneando-o automaticamente e 96% depois de uma análise por especialistas.



Outro estudo mostra as vulnerabilidades por setor (bancos, educação etc.) e também confirma os números. Por que esses problemas não são corrigidos? Essa última análise esforça-se para responder à pergunta: faltam responsáveis para manter o código e evitar vulnerabilidades; e mais: os desenvolvedores não sabem nem entendem de “vulnerabilidades”.



A tarefa de garantir a segurança de um aplicativo não é fácil, a arquitetura é cada vez mais complexa. Há que se tomar cuidado no software e no ambiente que este executa. Falemos sobre o software hoje: aplicativos que tem seus dados em algum DBMS, sua lógica de negócios em um servidor de aplicativos, servidores web Java ou .NET, por exemplo, servindo páginas dinâmicas. Entry points para páginas, serviços AJAX, serviços REST e SOAP. JavaScript e HTML 5 rodando no browser, nos smart devices aplicativos nativos – ou não – que se conectam a esses serviços.



Tudo isso acrescenta aos pontos de acesso – e de vulnerabilidade – existentes nos servidores as vulnerabilidades do tráfego de dados pelo canal, do código executado no dispositivo e dos dados em cache ou armazenados com localmente em momentos distintos. Um banquete para o hacker e uma dor de cabeça para quem desenvolve.

Tentar solucionar isso enquanto desenvolvemos com equipes que implementam manualmente módulos de segurança e equipes que supervisionam manualmente o cumprimento das políticas de segurança é simplesmente uma tarefa entediante e que já demonstrou ser insuficiente, além de pouco eficaz.



É mais prático e adequado aplicar a segurança no desenvolvimento de software através de um desenvolvimento de software orientado a modelos (Model driven development) e, além disso, baseado em conhecimento (Knowledge-based development), combinado com um ciclo de desenvolvimento seguro. Isso, aliás, ajuda a diminuir os custos de desenvolvimento e manutenção.



Nesse tipo de desenvolvimento, abstraímos o conhecimento das intenções do desenvolvedor e centralizamos a necessidade do especialista em segurança que se requer para escrever aplicativos, pois é o responsável pela ferramenta de geração de código e conta com uma equipe de especialistas de segurança de alto nível. Eles se encarregam de que, quando o gerador escrever o código, faça o programa mais seguro e, dessa maneira, os desenvolvedores não terão que ser especialistas em segurança para poder entregar aplicativos robustos.



As ferramentas costumam contar com módulos pré-fabricados aos quais os desenvolvedores podem se conectar e que garantirão que quando o aplicativo for gerado apresente todas as rotinas e checagens de segurança que permitam cumprir com as normas básicas de segurança e minimizar as vulnerabilidades a níveis muito menores que se se programasse sem os conhecimentos de segurança adequados.



É preciso destacar que não existe um aplicativo totalmente seguro, já que sempre existem detalhes que escapam ao modelo, mas com essas facilidades tiramos do desenvolvedor a responsabilidade de ter que ser praticamente um hacker para fazer um aplicativo seguro e deixamos pendente apenas a etapa de supervisão.



Desta maneira, uma ferramenta de desenvolvimento orientado a modelos e baseado em conhecimento fornece uma forma para que aqueles que desenvolvem não tenham que separar recursos para desenvolver módulos de segurança, nem tenham que ter a expertise de um hacker ou ser especialista de segurança para fazer seus aplicativos. Com ele, consegue-se detectar e corrigir as vulnerabilidades durante o próprio ciclo de desenvolvimento em vez de fazê-lo quando o aplicativo é executado.