Uma vulnerabilidade 'Zero-Day' (traduzido para português: Dia-Zero) é uma falha no código ou no hardware
desconhecida por parte dos criadores desse mesmo código. O termo
'Zero-Day' pode se referir à vulnerabilidade em si ou ao ato de
aproveitar essa vulnerabilidade para atacar os sistemas, também
conhecido como um 'Zero-Day Exploit'. Este nome deriva do facto de, em
geral, os ataques a sistemas ocorrem na dia em que esta falha é
conhecida pelo público. Assim, há 'zero dias' entre a descoberta e o
aproveitamento.
Vulnerabilidades deste tipo são muito difíceis de
corrigir porque, por definição, o criador ou a pessoa responsável pela
manutenção do código desconhecem da sua existência, e não se consegue
corrigir um bug que não se conhece. Na maioria dos casos, estas
vulnerabilidades são descobertas quando um utilizador ou revendedor do
sistema dá-se conta da falha. Aí, avisa os criadores para poderem
remediar o erro. Contudo, também há pessoas que ganham dinheiro a
procurar vulnerabilidades 'Zero-Day' para depois vendê-las às empresas
por detrás do código. É possível ganhar relativamente grandes
quantidades de dinheiro pois, dependendo da gravidade da falha de
segurança, a correção dessa falha pode ser fulcral para a empresa.
Existem empresas de segurança de software
responsáveis por colaborar na procura de vulnerabilidades deste género,
geralmente dando algum tempo para os criadores poderem corrigir o
código antes de libertar a informação para o público. A título de
exemplo, a Google tem um projeto, chamado 'Google Project Zero', e,
através dele, permite 90 dias aos vendedores para corrigir o código
antes de publicar a informação. Contudo, para vulnerabilidades
'críticas', apenas dão 9 dias e, se a vulnerabilidade estiver atualmente
a ser aproveitada, menos de 7. A maioria dos casos de 'Zero-Day
Exploits' ocorrem para roubo de informação sensível, hacking ou cyber-crime.
Estas vulnerabilidades podem ocorrer em empresas de grande calibre tal como em pequenas start-ups.
Por exemplo, a Microsoft Windows e a Adobe Flash Player sofreram
ataques deste género em 2016. Isto mostra que ninguém está isento de
cometer erros.
Esta entrada pretende mostrar a importância de
programação correta. Para os alunos deste ano em AIB (que estão agora a
começar programação), pode parecer tudo muito complexo e diferente e têm
medo de fazer erros. E isso é normal. Mas é importante explorar,
treinar e não ter medo de errar, porque se até multinacionais fazem
erros que as deixam completamente vulneráveis, nós também podemos. Para
além disso, também pretendo acentuar a importância de um código limpo,
legível e funcional pois, na minha opinião, penso que alguns erros podem
ter advindo de porções difíceis de compreender que foram desprezadas.
Comentários e indentação (pode ser chato mas é importante)!!!