App Security

Os elementos mais importantes da segurança de aplicativos

Este artigo é um consolidado de anotações e pontos importantes que eu imagino muitos de nós tratando como elementos importante da segurança de aplicativos, ou AppSecurity

Inicio pelos quatro pontos que considero mais importantes:

  1. Conscientização, treinamento, educação;
  2. Autenticação de dois fatores;
  3. Teste integrado com desenvolvimento;
  4. Investimento sério em segurança.
  5. Autenticação de dois fatores é a chave. Solicite que os usuários façam login com token habilitado. Não implemente sua própria autenticação.
  6. Você usou a criptografia corretamente? Quando você armazena a senha, você está comparando as criptografias para autenticar o usuário? A criptografia não é fácil.

Comportamento do desenvolvedor.

Você pode fornecer as ferramentas, os processos e os procedimentos, mas seu comportamento precisa ser orientado para a segurança. Os desenvolvedores precisam estar cientes dos problemas de segurança e de como o que eles desenvolveram pode ser atacado. Ao escrever software, você precisa de bibliotecas adequadas e homologadas.

O comportamento dos desenvolvedores não mudou nestes anos. Há uma ênfase na criação de código restrito e aplicativos escalonáveis. A segurança ainda está atrasada, ela precisa ser incorporada para fazer as coisas por padrão. Precisamos treinar regularmente nos principais tópicos conhecidos como injeção de sql e como as pessoas exploram código e aplicativos. Os desenvolvedores precisam saber como estão sendo invadidos. Faça uma revisão de código-fonte para poder ver os buracos em Java ou C-Sharp.

Incentive os desenvolvedores a trabalhar com as coisas que eles criaram. Os desenvolvedores são inteligentes e lógicos, eles precisam entender por que antes de serem ensinados como e o quê. Trabalhe de forma colaborativa para ajudá-los a entender como a segurança funciona e como os hackers funcionam.

O teste de aplicativos não foi necessário até a última década. Ainda hoje, os testes de segurança são uma reflexão tardia. O teste deve ser parte integrante do processo de desenvolvimento como parte de testes seguros de codificação e segurança de aplicativos.

Como proteger produtos para uma empresa.

Há diferentes e novas tecnologias sendo constantemente desenvolvidas. Tudo precisa ser integrado e seguro. Pode ser difícil usar a tecnologia antiga com a nova. Precisamos de uma solução para aplicativos de negócios corporativos mais orientada para processos de negócios. Um desenvolvedor escreve código e precisa gravar a autorização de verificação para que todos possam usar.

O mesmo é verdadeiro para o controle de acesso. Desenvolvimento tradicional do módulo de controle de acesso a aplicativos da Web em desenvolvimento – como o desenvolvimento da API, construí-lo uma vez e funciona. Precisamos de diferentes controles de acesso:

1) como analisar a segurança da própria plataforma, o servidor de aplicativos com uma abordagem passo a passo da segurança;

2) como gravar com segurança o código-fonte desses aplicativos. As nove áreas mais críticas são descritas no Enterprise Application Security Project.

Nós vemos o mundo em três áreas:

1) infraestrutura de rede;

2) pontos finais, como aplicativos de software e telefones celulares; e,

3) segurança de aplicação que costumava ficar atrás da parede e segura, mas agora está em frente à parede exposta dentro e fora da empresa por causa da produtividade e das demandas de experiência do cliente.

Algumas empresas entendem a importância da segurança e a importância de dados seguros para seu sucesso, mas não há muitas. Existem dois silos em uma empresa – empresa e segurança.

A segurança defende ativos enquanto a empresa constrói ativos – eles não funcionam juntos. A segurança do aplicativo é independente do desenvolvimento (criação de ativos). Um firewall de aplicativo da Web permite que as pessoas entrem e saiam com base em pouca segurança. Isso não fornece segurança para aplicativos.

As verificações vêm da equipe do AppSec que usa scanners para encontrar possíveis falhas. Os desenvolvedores devem corrigir e reenviar para o AppSec; no entanto, os desenvolvedores não são especialistas em segurança e não têm tempo nem disposição para corrigir todos os buracos antes da data de lançamento.

Muitos dos buracos podem ser falsos positivos. Na maioria das empresas, a data de lançamento é mais importante que a segurança. Dezenas de milhares de aplicativos foram desenvolvidos nos últimos 10 anos sem nenhum teste e esses aplicativos são expostos a todos por meio da nuvem. Eles são vulneráveis ​​porque não há camada protetora nem AppSec. De acordo com pesquisas recentes, mais de US$ 80 bilhões são gastos anualmente em segurança eletrônica, mas apenas US$ 1 bilhão é gasto em segurança de aplicativos.

70% de todos os ataques ocorrem na camada de aplicativos, mas menos de 2% do orçamento de segurança é gasto na segurança dos aplicativos.

Tudo é baseado em rede, o que envolve pessoas de operações, não pessoas de software e as duas não falam. Menos de 5% das pessoas de segurança são treinadas em software. AppSec é o mais procurado. Precisa dar o mesmo idioma e visibilidade aos desenvolvedores e especialistas em segurança para ver a segurança dos aplicativos. Se os desenvolvedores puderem ver algo sob ataque, poderão ver a importância de corrigi-lo ou a necessidade de impedir que ataques maliciosos explorem uma vulnerabilidade. Dar visibilidade a todos para onde estamos indo. As pessoas não estão alinhadas e o AppSec é inexistente.

Certifique-se de que o usuário certo possa acessar os aplicativos – uma forte metodologia de identificação do usuário. Verifique se os dispositivos que o usuário está usando para acessar também estão seguros. Isso é crítico, pois o BYOD se torna a norma atualmente.

Saiba quem não é seu cliente. Por exemplo, um hospital tem uma máquina de raio-x que acessa a internet, você não quer que o técnico de raio-x possa visitar o Facebook com a máquina de raio-x. Como somos móveis, estamos muito preocupados em proteger os dados do usuário. Não podemos comprometer os dados dos clientes ou perdemos a confiança de nossos clientes. Colete os dados certos, não colete os dados de que você não precisa. Criptografar todos os dados ao transferir de um local para outro é sempre uma boa prática.

A segurança está se movendo na direção da borda integrada, WAF, controles em nuvem e firewall local mais tradicional, segurança no aplicativo e governança, regulamentos e certificações em evolução para processos e pessoas.

Conscientização e treinamento.

Nós tornamos mais difícil do que realmente é. Ajude as pessoas a entender o que fazer e como fazê-lo. Abordagem baseada em risco – trate como um negócio, compreenda todo o portfólio e identifique os riscos mais altos. Forneça mais orientações para desenvolvedores e equipes de TI sobre como corrigir problemas. Como lidar com velocidade e escala é sempre um problema com empresas da Fortune 100. A mudança para o ágil e o DevOps é um desafio para a AppSec se a empresa não priorizar a segurança no mercado.

Política e bom código.

As ferramentas não ajudam a proteger a segurança de aplicativos da web. Boa codificação e bom patches sim. O desenvolvedor deve trabalhar com a equipe de segurança.

Os desenvolvedores precisam manter os elementos que podem impactar em mente. Tornar difícil para alguém hackear, para que ele passe para outra coisa que seja mais fácil. A criptografia personalizada é mais fraca que a criptografia padrão. Fornecer recursos educacionais é sempre util caso seu time tenha alguma dificuldade. Todos querem inovar e a segurança não pode retardar o processo de inovação. Crie testes de segurança no começo. Torne fácil testar com antecedência e com frequência. Teste por toda parte – atinja o mercado mais rapidamente com um produto mais seguro.

Autenticação e autorização fortes.

O elemento mais importante é a educação – em todos os lugares, nas universidades, on-line, no Google Alerts. As pessoas não sabem ao que estão protegendo. Vulnerabilidades como phishing, usando a mesma senha, e sua rede pública não conectada por um SSL. As pessoas precisam saber como evitar vulnerabilidades e o que proteger. VPN é uma tecnologia de baixo nível que protege a tecnologia de nível de usuários. As pessoas precisam saber mais sobre as vantagens de segurança da VPN.

Integrações baseadas em API evoluíram além do navegador web. No mundo da mobilidade, o usuário final está a um passo de onde o aplicativo pode fazer as coisas em nome do usuário. Há uma nova área de segurança com permissões para fazer as coisas em seu nome.

Siga os princípios do código de segurança. OWASP, testes estáticos e dinâmicos para segurança, não apenas o caso de uso. Eduque quem é o licenciado para continuar testando o aplicativo depois que ele for adicionado à web. Vulnerabilidades ambientais estão mudando constantemente.