Skip to main content

Desenvolvimento seguro no trabalho remoto — dicas e sugestões

Escrito por

31 de março de 2020

0 minutos de leitura

Desenvolvimento seguro no trabalho remoto

À medida que nos preparamos para um período prolongado de trabalho em casa, precisamos reavaliar várias formas de trabalhar — e a segurança não é exceção. A colaboração remota, novidade para muitas pessoas, pode exigir mudanças nas práticas ou prioridades de segurança.

Por isso, reunimos algumas sugestões para adaptar suas políticas de segurança a uma equipe que passou a trabalhar remotamente. Além de serem úteis desde já, essas práticas ajudarão você a ampliar a segurança, mesmo quando as pessoas voltarem a trabalhar no escritório.

Baixe nosso prático guia: Como proteger o desenvolvimento no trabalho remoto.

Dê autonomia aos desenvolvedores (remotos) com diretrizes documentadas

O segredo do desenvolvimento remoto, especialmente quando há crianças correndo pela casa, é permitir que cada desenvolvedor avance por conta própria e manter a comunicação assíncrona. Isso significa menos espera por aprovações e mais poder de decisão. Em termos de segurança, é hora de revisar seus processos de aprovação e avaliar quantas decisões podem ser delegadas aos desenvolvedores. Em vez de esperar uma aprovação, o desenvolvedor pode dar continuidade ao trabalho e manter você informado sobre suas ações e decisões.

Para dar autonomia com sucesso, é preciso alinhar as expectativas: todos entendem o que precisam fazer e o que significa concluir uma tarefa com sucesso? Isso significa investir na documentação das suas práticas e expectativas, facilitando a tomada de decisões corretas pelos desenvolvedores, de forma consistente.

Evite interromper o build (sempre que possível); bloqueie pull requests

“Interromper o build” por causa de uma violação de segurança é uma medida bastante comum em segurança de CI/CD — mas também causa muita interrupção. Sem um build aprovado, o software não pode avançar e os desenvolvedores ficam praticamente parados. Isso é especialmente verdade quando a interrupção é causada por um fator externo, como a divulgação de uma nova vulnerabilidade em uma biblioteca que você já usa.

No trabalho remoto e assíncrono, esse tipo de interrupção causa ainda mais impacto, pois as equipes demoram mais para identificar o problema, designar alguém para corrigi-lo e resolvê-lo. Por isso, limite essas interrupções a casos realmente extremos, como uma vulnerabilidade crítica que justifique parar tudo para corrigi-la.

Para os demais problemas, bloqueie pull requests. Eles oferecem várias vantagens:

  • Permitem testar apenas as novas alterações no código, que devem estar sob o controle do desenvolvedor para serem corrigidas.

  • Ficam mais restritos à branch em que o código está sendo alterado, preservando a autonomia de cada desenvolvedor.

  • Você pode decidir se uma falha impede o merge ou serve apenas como informação, permitindo novamente que os desenvolvedores decidam como prosseguir.

Invista na visibilidade da segurança

A autonomia dos desenvolvedores é ótima, mas também é preciso garantir a segurança. Em vez de criar obstáculos, atenda a essa necessidade com governança e visibilidade. O DevOps nos ensinou que podemos tolerar mais bugs em produção, desde que consigamos detectá-los e corrigi-los rapidamente. Em outras palavras, é pouco provável que alguém explore uma vulnerabilidade assim que ela for implantada. Reagir rapidamente é quase tão eficaz quanto nunca introduzir o problema — e causa menos interrupções.

A visibilidade pode assumir muitas formas. Veja algumas sugestões:

  • Instrumente os builds para registrar as dependências incluídas no seu app. Isso é conhecido comoSoftware Bill of Materials, ou SBOM. Com uma SBOM, você saberá se uma vulnerabilidade recém-divulgada afeta seu projeto.

  • Divulgue as vulnerabilidades encontradas no build (que não foram graves o suficiente para interrompê-lo). Um canal no Slack ou e-mails de notificação podem ajudar os membros da equipe de segurança a acompanhar os problemas regularmente.

  • Crie rankings para mostrar como as diferentes equipes estão lidando com os problemas de segurança. As conquistas em segurança (por exemplo, o tempo para corrigir uma vulnerabilidade) podem ser compartilhadas entre as equipes. Isso ajuda a tornar o processo mais envolvente e a criar um impulso coletivo para melhorar. As equipes também podem acompanhar a própria evolução ou corrigir o rumo quando não estiverem progredindo como gostariam. Mantenha esses rankings apenas como fonte de informação e evite usá-los para avaliar o desempenho. Isso pode ser contraproducente para criar uma cultura aberta de valorização da segurança.

Aprimore suas habilidades, seja você da área de segurança ou de desenvolvimento

Trabalhar remotamente pode exigir bastante autonomia, o que pode ser intimidador no começo. No entanto, muitas pessoas que trabalham remotamente descobrem que têm mais tempo no dia — antes gasto no deslocamento — para aprender. Aproveite essa oportunidade para desenvolver suas equipes, tanto de desenvolvimento quanto de segurança.

Para os desenvolvedores, invista em educação sobre segurança. Você pode usar conteúdo online, como MyDevSecOps, vídeos de conferências da OWASP ou da DevSecCon, ou ferramentas comerciais como SecureCodeWarrior. Confira também o próximo evento online AllTheTalks, cuja renda será destinada a instituições beneficentes que combatem a COVID-19!

Para a equipe de segurança, aproveite esse período para desenvolver ou aprimorar as habilidades de programação. Elas serão indispensáveis à medida que avançamos para um mundo DevSecOps. Aprender mais sobre programação também ajudará você a entender melhor os desenvolvedores. Veja alguns recursos para começar:

Comemore as conquistas em segurança

Não deixe de reconhecer virtualmente os desenvolvedores quando contribuírem para melhorar a segurança. Desenvolvedores são pessoas e, como todo mundo, precisam de reconhecimento para continuar fazendo um bom trabalho. Além disso, eles merecem!

No trabalho em casa, isso é ainda mais importante. Gestos como uma palavra gentil no escritório ou um cumprimento (ou talvez um toque de cotovelos…) não são possíveis, então é preciso encontrar alternativas virtuais. Trabalhar em casa pode ser solitário e isolador, e dar um incentivo às pessoas quando elas fazem um bom trabalho pode fazer toda a diferença.

Como reconhecer um bom trabalho? Há muitas maneiras — use a criatividade! Veja algumas sugestões:

  • Uma palavra gentil no Slack ou em um e-mail para a equipe. É algo simples, mas importante. Pode ser um reconhecimento pontual ou uma iniciativa como “Destaque de segurança do mês” — desde que você mantenha a frequência. Se o trabalho merecer, você também pode reconhecê-lo publicamente nas redes sociais da empresa.

  • Brindes especiais, de adesivos a camisetas e moletons, reservados para quem os merece. Há muitos exemplos no podcast The Secure Developer.

  • Um presente com valor monetário, como um dia em um spa ou uma viagem com ingresso para a DefCon (se os eventos ainda acontecerem depois que a situação se normalizar).

Aproxime os parceiros de segurança das equipes de desenvolvimento e mantenha contato frequente

Construir um relacionamento já é difícil; fazê-lo ou mantê-lo remotamente é ainda mais. Para que os desenvolvedores remotos saibam a quem recorrer quando tiverem uma dúvida de segurança, é preciso conectar claramente as equipes de desenvolvimento e seus pares da área de segurança.

Essa aproximação não exige mudanças na estrutura organizacional: basta conectar as pessoas nas práticas diárias de trabalho. Para cada integrante das equipes de Application Security, Product Security ou Cloud Security (seja qual for a sua divisão), faça uma conexão com líderes ou diretores das equipes de desenvolvimento. Agende reuniões recorrentes entre essas pessoas e inclua o parceiro de segurança nas reuniões diárias virtuais e em outras atividades das equipes de desenvolvimento. Essas reuniões complementam os encontros da equipe de segurança, nos quais você pode ter uma visão mais ampla da organização. Ouça Sara explicar como a Invision faz isso no podcast The Secure Developer.

Priorize os fundamentos de segurança

Nossa nova realidade exige foco para garantir que o mais importante seja feito. Em segurança, isso significa priorizar o básico antes dos ataques mais incomuns. Para a grande maioria das empresas, deve ser prioridade ampliar a capacidade de lidar com componentes vulneráveis, erros de configuração e tokens expostos, antes de se preocupar com ataques sofisticados.

Depois de estabelecer boas práticas de segurança nas equipes de desenvolvimento remoto, você pode voltar a ampliar seus horizontes. Para usar os termos da COVID-19: garanta que todos lavem as mãos com frequência antes de começar a comprar roupas de proteção.

Ajuste suas defesas de infraestrutura crítica

Se você ainda dependia de redes privilegiadas, agora é a hora de parar. Embora os funcionários possam usar VPN, as redes domésticas (e os equipamentos) são muito menos seguras do que o ambiente corporativo. Por isso, espere mais ataques vindos delas.

Invista ou amplie o uso da autenticação multifator

Aproveite esta oportunidade para começar a investir em uma infraestrutura de autenticação de dois fatores. Proteger a autenticação dos funcionários remotos será fundamental durante esse período, tanto em ambientes de nuvem quanto quando eles se conectarem à infraestrutura corporativa por VPN. A boa notícia é que esses investimentos, mesmo não planejados, trarão benefícios no futuro: você poderá estender esse recurso a outros sistemas da sua rede ou do seu ambiente de nuvem.

Reforce a segurança do SSH

Você pode reforçar a segurança das conexões SSH habilitando a autenticação mútua e reduzindo o tempo das sessões. Muitas vezes, os desenvolvedores recebem acesso às máquinas de produção via SSH, e esses endpoints são autenticados com chaves privadas estáticas que permanecem sempre nas máquinas.

À medida que mais dessas máquinas passam a ser acessadas remotamente, o risco de ataque aumenta. Por isso, reforçar a autenticação nessas interfaces se torna fundamental. Reduzir o tempo limite das sessões também garante que as estações de trabalho dos desenvolvedores não permaneçam conectadas a sistemas críticos ou repositórios de código quando estiverem inativas.

Para reforçar ainda mais a segurança, considere usar sistemas de código aberto, como BLESS, da Netflix, ou SmallStep, ou opções comerciais, como Okta, para habilitar uma autenticação mais robusta baseada em identidade. Saiba mais na minha palestra no InfoQ: “Developer as a Malware Distribution Vehicle”.

Programas de recompensa por bugs

Com algumas empresas suspendendo temporariamente as atividades, muitas pessoas buscarão oportunidades de trabalho no mercado freelance. Essa é uma ótima oportunidade para fortalecer sua estratégia de avaliação de segurança por meio de um programa de recompensa por bugs. Você ajuda a criar trabalho para quem precisa de emprego e torna seu software mais resiliente.

Programas de recompensa por bugs são uma boa maneira de ampliar a capacidade de avaliação de segurança e dar orientações claras aos pesquisadores sobre como reportar vulnerabilidades à sua organização. Considere plataformas como Hacker One ou BugCrowd. Elas podem orientar você em boa parte do processo de criação do programa. Se tiver algum tempo livre, você pode até participar como hacker!

Conclusão

À medida que muitas organizações se adaptam à nova realidade do trabalho remoto, é importante considerar como as pessoas costumam trabalhar e estruturar nossas defesas de segurança para lidar diretamente com esses hábitos. Entender as atividades diárias dos desenvolvedores e criar controles de segurança que os protejam sem impedir que realizem seu trabalho será fundamental para atravessarmos esse período desafiador.

Comece a participar de desafios de Capture the Flag

Aprenda a resolver desafios de Capture the Flag assistindo sob demanda ao nosso workshop virtual introdutório.

Publicado em: