BLOG

Caro NetOps: A regra de segurança zero se aplica a você também

Miniatura de Lori MacVittie
Lori MacVittie
Publicado em 12 de outubro de 2017

Certo, NetOps. À medida que você vai se automatizando e criando scripts com todo o seu coração, é hora de um lembrete gentil sobre segurança. Não estou falando de firewalls e WAF ou outros serviços de segurança que você pode ser responsável por implantar e gerenciar. Estou falando sobre o script e o código que você fará ao embarcar na jornada da transformação digital.

Hoje eu gostaria de lembrá-los sobre a Regra de Segurança Zero. Para refrescar suas memórias:

REGRA DE SEGURANÇA ZERO: NÃO CONFIARÁS NAS INFORMAÇÕES DO USUÁRIO. SEMPRE. 

Regra bem simples, certo?

Deveria ser, mas não é. Violações e posteriores violações no mundo dos negócios podem ser rastreadas até a violação da Regra de Segurança Zero. Violações dessa regra são comuns no código de exemplo que você vê oferecido aos desenvolvedores enquanto eles pesquisam e aprendem novas linguagens e estruturas e, infelizmente, também estão se infiltrando no novo e empolgante reino do NetOps.

Posso apresentar o Anexo A:

netops viola regra de segurança zero

Agora, para ser justo, pelo menos este script tem a decência de avisá-lo que os dados não são validados. Isso é bom, porque esse script continua fazendo todos os tipos de manipulação remota de configurações do roteador com base na entrada.

Minha crítica a isso é que o código foi criado para ajudar a instruir o NetOps sobre como começar a criar scripts para automatizar dispositivos de rede de produção e apenas faz acenos de cabeça para a validação de dados, sem fornecer nenhuma informação útil sobre como fazer isso.

Para obter alguns bons conselhos sobre como validar endereços IP em Python, confira esta discussão no Stack Overflow .

Mas Lori, isso é script e estamos fazendo coisas de CLI e, vamos lá, quão arriscado é isso?

Maus hábitos são difíceis de abandonar.

Há dois problemas em ignorar a Regra de Segurança Zero.

Primeiro, os dias do CLI estão contados, meu amigo. A API é a nova CLI, e a maioria das estruturas de automação está adotando o uso de APIs RESTful para provisionar e gerenciar dispositivos e serviços de rede. Isso significa pilhas de aplicativos e analisadores. Isso significa dispositivos que são potencialmente vulneráveis à exploração porque sua configuração pode ser alterada por meio de uma API que pode incluir vulnerabilidades.

Ofereço como prova de que não estou exagerando neste aviso da Cisco com relação à amplamente discutida vulnerabilidade do Apache Struts. O consenso é que passar informações não higienizadas para o framework Struts aciona todo tipo de coisa ruim.  

Mas, caso o potencial de exploração não faça você se preocupar em impor a Regra de Segurança Zero, deixe-me salientar que a falha na higienização de entradas pode ter um raio de explosão muito maior do que um único dispositivo. Considere o que sabemos sobre a interrupção do Amazon S3 no início de 2017:  

Às 9h37 PST, um membro autorizado da equipe S3, usando um manual estabelecido, executou um comando cujo objetivo era remover um pequeno número de servidores de um dos subsistemas S3 usados pelo processo de cobrança do S3. Infelizmente, uma das entradas do comando foi inserida incorretamente e um conjunto maior de servidores foi removido do que o pretendido.

-- Resumo da interrupção do serviço Amazon S3 na região do norte da Virgínia (US-EAST-1)

O número que ele inseriu no script foi muito maior do que ele pretendia. Mas scripts que aceitam cegamente tudo o que o operador oferece (ignorando a Regra de Segurança Zero) estão fadados a acabar levando a esse tipo de erro. Uma verificação simples – embora reconhecidamente irritante – pelo script poderia ter evitado que o assunto se tornasse o assunto do Twitter por mais de uma semana.

Na rede, na produção, muitas vezes vemos a segurança através das lentes da autorização. Bob tem autoridade para executar esta ação? Alice consegue executar esse script? E precisamos disso, ainda é crítico.

Mas, à medida que aceleramos nossa jornada de transformação digital (interna) e adotamos mais estruturas e usamos APIs e scripts para automatizar completamente o provisionamento e o gerenciamento, precisamos considerar a segurança também de uma perspectiva de desenvolvimento.

E a primeira dessas regras é a Regra de Segurança Zero: NÃO CONFIARÁS NAS INFORMAÇÕES DO USUÁRIO. SEMPRE. 

Sempre valide a entrada. Isso não só fornece segurança adicional como também pode evitar que uma boa automação dê errado.