Treinando desenvolvedores para proteger softwares contra ataques

Ao analisar algumas das violações de segurança mais famosas de 2017, descobrimos que foram causadas por bugs de software.

O ataque WannaCry, que afetou computadores em 150 países e custou cerca de US$ 4 bilhões, usou uma falha na memória do protocolo de compartilhamento de arquivos do Windows.

A violação Equifax, que expôs os dados pessoais de 143 milhões de americanos, foi realizada através de uma vulnerabilidade de de-serialização na biblioteca Apache Struts.

O desafio dos bugs de segurança é que muitas vezes não são vistos como um problema de qualidade, pois, do ponto de vista do desenvolvedor ou testador, o software está funcionando. Um comportamento inesperado é descoberto por um agente de ataque, causando então a vulnerabilidade.

Essa característica dos bugs de segurança pode fazer com que alguns desenvolvedores ainda contestem que os problemas de segurança são defeitos. Para melhor entender esse ponto de vista, uma analogia pode ser feita ao transformar os desenvolvedores em construtores de casas e um recurso de software em uma janela adicionada à casa. A janela funciona bem, abre e fecha, isola a casa do frio ou do calor. Um ladrão invade a casa através da janela. É culpa do ladrão, não do construtor.

“Se Coloque no Lugar do Hacker”

Para proteger o software contra ataques os desenvolvedores precisam pensar em como o software pode ser usado. Essa técnica é conhecida como modelagem de Ameaças.

Os hackers são categorizados com base em cores de chapéus, chapéus pretos são os maus, chapéus brancos são bons.

Para evitar ataques, os desenvolvedores devem se colocar no lugar dos hackers e “usar esse chapéu”. Para fazer isso, eles precisam de alguns conhecimentos básicos:

Quais são as falhas comuns de software?
Como o software pode ser usado?
Como o software pode ser protegido?


Há duas listas bem conhecidas que descrevem falhas comuns de software e categorias de ataqueO que são as “Principais Falhas”

O MITRE Top 25, também conhecido como SANS Top 25, é um inventário de Falhas Comuns (CWEs).

O OWASP Top 10 é uma lista de categorias de ataque que afetam aplicativos web. A maior parte dos pontos fracos do MITRE Top 25 e as 10 principais categorias da OWASP se cruzam.

Capacitação Através de Jogos

É provável que sua equipe de desenvolvimento não aproveite muito uma sessão de uma hora apresentando os 25 maiores pontos fracos do software. Alguns podem até cair no sono durante a reunião.

A capacitação através de jogos comprovadamente produz melhores resultados, é atraente e divertido, desenvolve habilidades práticas e a configuração competitiva leva ao aproveitamento.

Existe uma maneira comum de capacitar os testadores de segurança conhecidos como CTF (Capture the Flag).  Na Trend Micro, usamos uma abordagem semelhante para capacitar nossos desenvolvedores em princípios básicos de segurança de software.

O código da plataforma de treinamento foi disponibilizado para todos no no GitHub, no projeto Secure Coding Dojo.

Escola de Treinamento de Codificação Segura

Como os desenvolvedores aprendem a se defender de ataques de software, o treinamento é inspirado nas artes marciais. O treinamento inclui 21 desafios em 7 níveis diferentes de Faixa Branca para Faixa Preta.

A capacitação é baseada no MITRE Top 25+, uma das categorias recém-adicionadas de ataque da OWASP Top 10, a XML External Entity. Você pode conferir a grade curricular completa neste link.

Cada desafio detalha uma ou mais falhas de segurança. Para passar de fase, o participante deve usar as falhas de segurança para explorar um aplicativo vulnerável. Por fim, o participante aprende sobre as defesas do software (“blocos de código”) que poderiam ter sido usadas para prevenir o ataque.

A captura de tela abaixo mostra a descrição do desafio SQL Injection.

A captura de tela abaixo mostra a etapa de exploit do desafio do Buffer Overflow, na qual os participantes devem ignorar um programa de verificação de senha e escrever dados arbitrários em um buffer de memória.

A captura de tela abaixo mostra a seção “bloco de código” que descreve como se defender contra ataques do Cross-Site Scripting.

O portal de treinamento se integra com o Slack e o Google e pode trabalhar com uma autenticação local na qual cada participante registra uma conta. Há informações sobre como instalar e implementar na seção wiki do projeto.

Esperamos que o projeto possa ajudar a treinar os desenvolvedores e aumentar a conscientização sobre as práticas seguras de codificação em um mundo cada vez mais impulsionado por softwares.

 

Categorias

Veja outras publicações

Menu