Uma vulnerabilidade de dia zero é uma falha de segurança de software descoberta mesmo antes que os desenvolvedores saibam da falha. E ao descobrir a vulnerabilidade que levou ao ataque, eles têm “zero dias” de aviso prévio para corrigir a falha antes que o ataque aconteça.
Um dia zero é um ataque que explora uma falha desconhecida, isto é, o ataque ocorre no “dia zero” da percepção da vulnerabilidade. Isso significa que os desenvolvedores tiveram zero dias para resolver e corrigir a vulnerabilidade.
Muitas empresas antes de um lançamento costumam passar os desenvolvimentos para as equipas de teste para que esses detectem possíveis falhas antes do lançamento. Desse modo, dando ao time de desenvolvimento tempo para corrigir as falhas.
Como funciona um Dia Zero
Um ataque de dia zero acontece quando essa falha, ou vulnerabilidade é explorada e os invasores criam e liberam um malware antes que os desenvolvedores tenham tempo de criar um patch para corrigir a vulnerabilidade. Portanto, chamamos isso de “dia zero”. Vamos analisar as etapas da janela de vulnerabilidade:
- Os desenvolvedores criam um software, mas sem o conhecimento deles ele contém uma vulnerabilidade.
- O software agora lançado pode cair em mãos erradas que identifica essa falha, e o hacker opta por explorar a falha ao invés de reportar a empresa responsável.
- O invasor então cria e distribui código de exploração “malware” enquanto a vulnerabilidade ainda está disponível.
Depois de liberar a falha, o usuário identifica e reporta que houve algum tipo de roubo de informação ou problema gerado a partir do software. Ou a equipa de desenvolvedores detecta e cria um patch de actualização para corrigir o problema.
Depois que um patch é escrito e usado, o exploit não é mais chamado de exploit de dia zero. No entanto, esses ataques raramente são descobertos de imediato. Na verdade, muitas vezes leva não apenas dias, mas meses e alguns casos até anos antes que um desenvolvedor descubra a vulnerabilidade que levou a um ataque.
Como um desenvolvedor pode se prevenir de um Dia Zero:
Primeiramente desenvolvimento em múltiplas camadas fornece proteção independente de serviço e é a primeira linha de defesa caso uma falha em qualquer camada seja descoberta.
O uso de Port knocking, que é um método de abrir portas externamente em um firewall, será realizado uma série de tentativas de conexões em uma sequência já estabelecida. Em outras palavras, esse método funciona como se fosse uma senha de portas fechadas, e depois que esta sequência estiver correcta as regras de firewall são modificadas temporariamente para permitir que o host que “bateu” nas portas tenha acesso.
Do mesmo modo, uma lista de IP’s com permissões protege de certo modo contra ameaças de dia zero.
A lista de permissões só vai permitir que aplicações de confiança acessem um sistema e, portanto, nenhum exploit novo ou desconhecido terá o acesso permitido. Embora a lista de permissões seja eficaz contra ataques de dia zero, uma aplicação de confiança também pode ter falhas. Ou seja, tenha cautela.
Outras empresas optam por uma lista fechada de usuários, estes realizam testes de versão beta. Assim caso haja alguma falha o usuário reportaria as ocorrências.
E por último mas não menos importante! Bug Bounty. Hoje cada vez mais as empresas estão a aderir a plataformas de bug bounty e assim bug hunters ou caçadores de bugs em português, procuram por falhas a fim de receber a sua então merecida recompensa.
Por isso, estar atento a uma série de rotinas ao lançar uma aplicação não só ajuda o sucesso de sua aplicação no mercado. Bem como evita prejuízos e até mesmo processos por parte de usuários que sejam prejudicados.