Apesar de ser uma prática não tão apreciada por muitos usuários e administradores, os updates são parte fundamental da saúde de um ambiente, seja ele corporativo ou doméstico.
Desde o princípio do desenvolvimento de software boa parte dos programas recebem atualizações em seus códigos e essa falta de apreço por realizar updates regularmente vem dos primórdios da computação e do surgimento da expansão da internet para fins não militares. Há muito tempo, na época da internet discada e dos computadores com capacidade de hardware baixíssimas qualquer tipo de atualização, seja ela baixada da internet ou não, era uma tarefa extremamente trabalhosa para o computador. Aos leitores mais jovens, vale lembrar que baixar um arquivo de 10Mb em uma conexão da época, que tinha em média 56k de velocidade era uma tarefa que levava quase meia hora para ser concluída, fora o tempo para processá-la e instalá-la.
Mas já há muitos anos isso não é mais uma realidade, as conexões com a internet estão bem mais velozes e os computadores são capazes de processar tarefas simultâneas de forma muito mais adequada, mas ainda assim essas “lembranças dos tempos ruins” ainda pairam sobre os dias de hoje, mesmo em pessoas que sequer vivenciaram essa época.
Para que entendam a importância e necessidade da atualização periódica de softwares, listarei alguns dos itens presentes no dia a dia de boa parte das pessoas e que já tiveram falhas de segurança identificadas.
- Sistemas operacionais, como Windows, Linux, Mac, Android, iOS, entre outros
- Programas para compactação de arquivos
- Editores de texto, planilhas e apresentações
- Navegadores
- Modems
- Roteadores
- Aplicativos para smartphone
Certamente, a severidade de cada um dos itens acima é diferente, assim como existem diferenças de severidade em cada uma das vulnerabilidades identificadas neles. O ponto é, mesmo que ainda não tenha sido descoberta uma vulnerabilidade crítica em determinada versão de software isso nem sempre significa que ela não exista, por isso, todos sem exceção devem ser tratados com a mesma cautela. O número de vulnerabilidades tem aumentado nos últimos anos. Segundo dados levantados pelo NIST, é o quarto ano seguido em que a quantidade de vulnerabilidades reportadas bate record, apenas em 2020 foram mais de 18 mil, o que equivale a aproximadamente 49 vulnerabilidades descobertas por dia.
Falando sobre 2021, estamos no fim do primeiro trimestre do ano (no momento que escrevo este artigo) e a Microsoft, fabricante do sistema operacional mais usado no mundo, lançou duas grandes atualizações, uma em janeiro e outra em março, corrigindo mais de 80 vulnerabilidades cada. Dentre elas, havia correções de ameaças conhecidas como zero day, capazes de prejudicar mais seriamente os sistemas. Vulnerabilidades que afetam o Windows ou seus componentes merecem muita atenção exatamente por estar presente em quase todos os ambientes, seja no meio empresarial ou doméstico. Como citei, as vulnerabilidades acometem todos os softwares, em uma lista bem maior do que a que mencionei, e é interessante que todos esses fabricantes de software possam corrigi-las o quanto antes para que seus usuários não sejam impactados negativamente, e um grande esforço por parte das empresas é feito nesse sentido. O fato de ter uma boa gestão sobre as atualizações de softwares, todos os presentes no computador sem exceções, já confere uma camada de segurança valiosíssima ao ambiente.
Além dos benefícios há uma outra verdade sobre as atualizações de software, quando não gerenciadas por soluções que automatizem o processo de distribuição e controle, elas são bem trabalhosas. Imagine uma empresa que tenha 15 estações de trabalho para seus funcionários. Cada funcionário tem um conjunto específico de softwares em seu equipamento, totalizando 15 softwares por equipamento. Seriam 225 softwares para atualizar, fora o sistema operacional, os servidores, roteadores... acredito que você já tenha entendido que é trabalhoso.
Quando não é possível fazer investimentos para cobrir uma necessidade, sempre é possível adaptar. Fazer automações para as tarefas de update com um pouco de programação e alguns testes, traz excelentes resultados e com toda certeza isso vale muito a pena.
Certo, consegui ter uma estrutura de update de software barata e agora meu ambiente está atualizado e continuará assim. Não preciso me preocupar com mais nada, certo?
Errado!!! Quando me referi a “se não puder fazer mais nada, faça update” o que eu quis dizer foi literalmente que, se não houver possibilidade de tomar nenhuma outra medida de segurança para o ambiente no momento, os updates são uma excelente forma de começar.
Com certeza serão necessários passos adicionais para que o ambiente esteja adequadamente protegido. Apesar de perigosas, as vulnerabilidades são apenas um dos caminhos de entrada que os criminosos utilizam para acessar um ambiente, por isso reforçamos tanto o conceito de proteção em camadas. Não existe nem existirá nada que deixe um ambiente 100% seguro, por isso é necessário se cercar do maior número de cuidados possíveis.
Pontos de atenção
Quanto maior o ambiente, mais particularidades ele tem, quanto mais particularidades mais compatibilidade ele necessita, e em alguns casos os updates feitos de forma inadequada podem causar paradas desastrosas por longos períodos.
Esses tipos de problema costumam acontecer com maior frequência em empresas que possuem softwares desenvolvidos internamente, que uma vez alguém fez e nunca mais ninguém atualizou, afinal ele está funcionando, ou empresas que usam softwares muito antigos.
Esses tipos de software costumam precisar de um tipo de resposta específico de um serviço, ou precisam interagir de determinada forma com alguma DLL, se algo muda referente a isso, mesmo que seja um único caractere, as aplicações podem parar de funcionar. Como updates costumam trazer mudanças significativas há chances de acontecerem problemas nele.
A solução para esse tipo de problema tem uma abordagem bem direta, manter os softwares desenvolvidos internamente também atualizados e não utilizar sistemas legados. Claro que apesar de direta essa abordagem não é nada simples, principalmente se “o software sempre foi assim e sempre funcionou”, “foi feito há muitos anos, quem o fez não está mais na empresa”, e outras resposta similares a essa. Se realmente não houver opção de adequação, cabe as áreas utilizadoras aceitarem o risco. E minha sugestão é que esse aceite de risco seja formalizado por e-mail com aceites dos gestores de cada área em cópia para os responsáveis das áreas de negócio que terão que lidar com uma eventual crise em caso de incidente.
Em geral uma postura de update de software que envolva também programas internos e programas legados funciona perfeitamente bem, principalmente se adotada dede o início da concepção ou utilização desses softwares. Mas, como todos nós sabemos, nem sempre é isso o que acontece na prática, então cabe aos responsáveis adaptar processos e criar controles de contingência para evitar que a carta de aceite de risco seja usada para efetivamente atribuir responsabilidades.
Um ponto de auxílio nessa etapa de contingência é a criação de ambientes de desenvolvimento e de homologação, ou ao menos um de homologação, e que sejam fiéis ao ambiente produtivo. Assim será possível testar os recursos antes que o update vá para as máquinas reais do ambiente e cause eventuais paradas. É possível produzir ambientes de testes com baixo custo, poucas máquinas ou até mesmo máquinas virtuais, o importante é torná-lo um espelho do que é usado em produção.
Caso tenha ficado com alguma dúvida ou tenha sugestões de temas relacionados à segurança da informação que gostaria que abordássemos nas próximas publicações, conte-nos nos comentários.