Autor: Mav Turner, diretor de estratégia de negócios da SolarWinds
Não faltam conversas sobre a segurança na empresa. À luz de alguns incidentes recentes de hacking de alta visibilidade, todo mundo está falando sobre a importância de proteger as redes, os dados e os dispositivos para evitar o pior cenário possível em relação às informações confidenciais do cliente ou da organização, ou para o caso de o IP ficar comprometido. Curiosamente, essas conversas muitas vezes se esquecem de um elemento essencial: os aplicativos que funcionam nesses sistemas e a forma como suas próprias vulnerabilidades podem derrubar toda a estratégia de segurança das organizações.
Apesar da ampla penetração dos aplicativos em nossas vidas corporativas e de consumo, a segurança nativa do aplicativo ainda é um conceito bastante emergente. Não se trata de uma solução que sirva em todos os contextos, e em uma época de tanta “agilidade” os desenvolvedores (internos e externos) estão por vezes priorizando a rápida entrada no mercado em detrimento da tecnologia segura.
Então, como vamos resolver essa questão? Pense na segurança dos aplicativos como algo semelhante à construção de uma casa. A integração dos principais serviços básicos de uma casa, como luz elétrica e encanamento, é muito mais fácil durante a fase de construção, quando se faz do zero, e não quando se precisa fazer uma reforma completa para mudar um banheiro para o outro lado da casa. Os mesmos princípios se aplicam na hora de desenvolver aplicativos. A segurança deve estar incorporada nos aplicativos desde o início, e não como um remendo ou como uma ideia que alguém sugeriu na última hora. Quando aplicada à metodologia e à inovação ágeis, é importante que, em cada fase ou iteração, você pergunte: “Como posso violar isso?”. Afinal, quanto mais tempo você entrar nos estágios iterativos, mais difícil e caro será voltar atrás e corrigir algo que não ficou bem desde o início.
Com isso em mente, aqui vão algumas considerações e estratégias importantes para garantir o desenvolvimento e a implantação seguros de aplicativos corporativos.
Dedicar tempo para definir como é a segurança do aplicativo para você e para sua organização é um primeiro passo natural. Se sua organização estiver desenvolvendo sistemas de controle industrial, por exemplo, você precisa dedicar um pouco mais de tempo e esforço na segurança do que se estivesse construindo aplicativos básicos da Web, como um jogo, que não vão armazenar dados confidenciais ou que permitam a identificação pessoal do cliente.
Eis algumas questões a considerar: que dados formam o armazenamento do aplicativo? Que tipo de dado está passando por esse aplicativo? Qual é o pior cenário possível para a vulnerabilidade? Em que tipos de situações isso poderia ocorrer? Por exemplo, se você fosse fazer uma pesquisa e um hacker realizasse um “dump” de memória completo ou atribua privilégios de acesso mais altos, até que ponto isso seria prejudicial? Da mesma forma, se um funcionário deixa um dispositivo móvel em um táxi, a rede exige uma senha VNP para acesso e será que essa senha está no cache do aparelho? Pense para a frente e implante a política certa para sua empresa. Questionar quem está acessando um aplicativo, e de quais dispositivos, informará diretamente a abordagem que você adota.
Ao codificar para proteger um aplicativo, a chave é fazer isso desde o início. Embora possa parecer uma precaução excessiva no momento, está provado que, ao “negar por padrão” tudo durante todo o processo de design, o aplicativo estará fechado e bloqueado o suficiente. Ao atribuir as permissões quando e como são necessárias, ficará muito mais fácil identificar a fonte da vulnerabilidade se e quando ela ocorrer.
Da perspectiva do projeto, embora a interface e a experiência do usuário sejam considerações importantes na evolução de qualquer aplicativo, elas também são intrínsecas à segurança. O objetivo deve ser sempre remover a carga de responsabilidade do usuário final. Por quê? Porque se pessoalmente é necessário fazer uma escolha entre segurança e conveniência, como regra eles vão acabar recorrendo à conveniência – uma decisão que é quase sempre a errada para uma organização. Nesses cenários em que você é forçado a comprometer a conveniência em nome da segurança, ou seja, fazendo com que os usuários insiram uma senha VPN todas as vezes que usam um aplicativo, certifique-se de que eles entendam claramente a lógica por trás dessa decisão.
Você pode ter todas as políticas que desejar, mas, se não tiver um plano para apresentar essas políticas, ou se ninguém as entender (e se você não estiver educando os testadores, desenvolvedores ou programadores), você vai colocar em risco a organização. Planejar-se para o desastre é essencial, e parte desse planejamento significa assumir a pressuposição de que alguém está sempre observando sua rede, sua infraestrutura e o que passa por ela, interna ou externamente.
Muitos poderiam perguntar por que vale a pena investir em segurança nativa do aplicativo, quando a alternativa mais lógica talvez fosse proteger a infraestrutura básica e as plataformas compartilhadas. A resposta é a seguinte: se você estiver executando aplicativos na infraestrutura compartilhada, você tem que assumir que essas plataformas não sejam seguras, e que a possibilidade de ocorrer vazamento de dados seja muito real. Pense, por exemplo, nas revelações de Snowden: os dados que supostamente só estavam viajando pelos centros de dados, na verdade, estavam sendo vigiados e coletados.
A maioria das organizações não criptografa as comunicações internas, e as revelações de Snowden mostram que, para manter a segurança, é melhor partir do pressuposto de que sua infraestrutura está aberta. Suponhamos que o usuário esteja em uma rede não confiável, e projete e implante aplicativos com isso em mente. Para os desenvolvedores que trabalham junto com uma equipe interna de infraestrutura de TI ou com um provedor de nuvem, entender quais são suas políticas, com que frequência eles as atualizam e validam, e se usam ou não auditores, são elementos importantíssimos para adotar uma abordagem de defesa em camadas para a segurança do aplicativo. Seu aplicativo pode ser seguro, mas as informações que transportam ou a plataforma na qual está instalado podem não ser; portanto, faz-se necessária uma estratégia multifacetada.
Igualmente importante é avaliar o que você sabe e o que você não sabe sobre o histórico de segurança de um fornecedor. Qual é o tempo de resposta dele se um cliente ou ele próprio perceberem uma vulnerabilidade? Que experiências ele já teve? O fornecedor deve ter sua própria política implantada e ter provas de que ela funciona.
Uma política vigorosa de segurança de aplicativos corporativos exige três coisas fundamentais: 1) Um ponto de contato claro para os funcionários da organização, transparência no SLA que determina a rapidez com que um fornecedor e o departamento de TI podem responder; 2) Uma estratégia clara de mitigação se o fornecedor não conseguir responder de forma rápida; e 3) finalmente, linhas abertas de comunicação: o fornecedor deve alertá-lo se for encontrada uma vulnerabilidade, e não o contrário. Implantando esses processos, junto com uma abordagem “de baixo para cima” para a segurança do aplicativo, o projeto e a implantação significam que estamos no caminho certo para o desenvolvimento de aplicativos seguros e protegidos. Neste mundo, os vazamentos de dados serão a exceção, e não a regra.