AppSec é difícil

Jan 17 2023
Assim são os programas...
Os programas de segurança de aplicativos são difíceis. Há muitas partes móveis.

Os programas de segurança de aplicativos são difíceis. Há muitas partes móveis. Mas é necessário garantir que o software seja projetado, construído e implantado de forma a minimizar as vulnerabilidades de segurança, protegendo assim os usuários e seus dados de possíveis ataques cibernéticos. Um programa AppSec robusto terá uma abordagem abrangente que envolve a integração de várias práticas em todo o processo de desenvolvimento de software para minimizar o risco de vulnerabilidades e violações de segurança. Esta não é uma lista completa, mas lhe dará uma noção do escopo.

A modelagem de ameaças é o processo de identificação e avaliação de possíveis ameaças de segurança e vulnerabilidades no software antes que possam ser exploradas. Isso pode ser feito analisando a arquitetura e o design do software, identificando dados confidenciais e identificando possíveis vetores de ataque. A modelagem de ameaças baseada em agilidade é uma metodologia que combina os princípios do desenvolvimento ágil de software com a modelagem de ameaças. Essa abordagem permite que as equipes identifiquem e resolvam possíveis ameaças e vulnerabilidades de segurança no início do processo de desenvolvimento, ao mesmo tempo em que respondem rapidamente aos requisitos em constante mudança.

A codificação segura é outra prática importante no desenvolvimento de software seguro. Isso envolve escrever código livre de falhas e vulnerabilidades de segurança comuns. Isso pode ser auxiliado pelo uso de diretrizes de codificação segura, como o material OWASP . Esses tipos de recursos fornecem aos desenvolvedores um conjunto de práticas recomendadas para escrever código seguro e os ajudam a evitar erros comuns que podem levar a vulnerabilidades de segurança.

Manter o software corrigido é outra prática importante. Isso inclui não apenas o software em si, mas também quaisquer bibliotecas e dependências de terceiros. Isso garante que quaisquer vulnerabilidades de segurança conhecidas sejam abordadas em tempo hábil, reduzindo o risco de exploração por invasores.

Claro, há testes de penetração e varredura de vulnerabilidade são técnicas usadas para identificar e lidar com vulnerabilidades de segurança em software. Essas técnicas simulam ataques do mundo real ao software, permitindo que os desenvolvedores identifiquem e resolvam quaisquer vulnerabilidades antes que possam ser exploradas pelos invasores. Ferramentas automatizadas, como análise de composição de software (SCA), teste de segurança de aplicativo estático (SAST), teste de segurança de aplicativo dinâmico (DAST), teste de segurança de aplicativo interativo (IAST), teste de segurança de aplicativo móvel (MAST) e autoproteção de aplicativo em tempo de execução ( RASP) pode ser usado para automatizar a identificação e correção de vulnerabilidades de segurança. Além disso, a segurança da API é um aspecto crítico do desenvolvimento de software moderno.

Outro aspecto importante do desenvolvimento seguro de software é a prevenção de perda de dados (DLP). As soluções DLP podem ser usadas para detectar e impedir a exposição não autorizada de dados confidenciais, como informações de identificação pessoal (PII), segredos e assim por diante.

Educação e treinamento também são importantes para o desenvolvimento seguro de software. Programas de campeões de segurança e programas de educação para desenvolvedores podem ajudar a garantir que todos os membros da equipe de desenvolvimento tenham o conhecimento e as habilidades necessárias para escrever código seguro. Isso inclui entender o OWASP Top 10, uma lista dos riscos de segurança de aplicativos da Web mais críticos, e o Common Weakness Enumeration (CWE) Top 25 , uma lista de pontos fracos comuns de software.

A metodologia Shift-left e os portões automatizados nos pipelines também são essenciais para o desenvolvimento seguro de software. Essas práticas permitem que os desenvolvedores identifiquem e resolvam possíveis vulnerabilidades desde o início, antes que se tornem parte da base de código e sejam implantadas na produção, integrando ferramentas em pipelines de integração e entrega contínuas (CI/CD), além de obter a saída dessas ferramentas em algum lugar onde você pode rastrear os principais indicadores de desempenho (KPIs) e também triar possíveis vulnerabilidades integrando-se a algo como o JIRA para gerenciamento ágil do trabalho.

Ganchos git pré-confirmados também são uma ferramenta útil para o desenvolvimento seguro de software. Esses ganchos podem ser usados ​​para verificar automaticamente a insegurança do código ii antes de ser confirmado no repositório ou impedir que você cometa segredos.

Outro aspecto importante do AppSec é a triagem de vulnerabilidades. Este é o processo de identificação e priorização de vulnerabilidades com base em sua gravidade e impacto potencial. Essa abordagem permite que as organizações concentrem seus recursos nas vulnerabilidades mais críticas e as resolvam em tempo hábil. Fatores como probabilidade de exploração, impacto potencial e facilidade de exploração são levados em consideração na triagem de vulnerabilidades. Em alguns casos, aplicar patches pode não ser o melhor curso de ação, e alternativas como monitoramento, segmentação de rede e controles de acesso podem ser consideradas.

Para gerenciar um programa AppSec robusto, é importante ter as ferramentas e plataformas certas. Algumas opções populares incluem Esno para ganhar visibilidade e coordenar as ferramentas, pessoas e processos. Checkmarx e Veracode fornecem muita cobertura de recursos para varredura estática e dinâmica, e Snyk é respeitável por seus recursos de segurança de código aberto e, como uma plataforma inteira, é muito apreciada por sua facilidade de uso e foco no desenvolvedor, mas Black Duck tem uma forte reputação na SCA. Invicti é bom para IAST, Wiz está se tornando popular para CSPM. Aqua para segurança de contêiner é testado e comprovado, SpectralOpspara DLP, NoName Security ou Salt para API Security, NowSecure para Mobile AppSec, Irius Risk para modelagem de ameaças ou Bionic para uma abordagem de gerenciamento de postura e modelagem de ameaças mais automatizada. Há também o fuzzing, que é um tipo de teste dinâmico baseado em comportamento que testa o desconhecido e tenta encontrar vulnerabilidades; um exemplo muito moderno de plataforma neste espaço é o Mayhem .

Para acompanhar o risco de código aberto e de terceiros, também é importante manter uma lista de materiais de software (SBOM). Algumas dessas ferramentas podem gerá-los para você (Veracode, Black Duck, etc).

Alguns podem não considerar isso parte de um programa AppSec, mas acredito que a tecnologia Deception Engineering deva fazer parte de um programa maior de segurança de produtos, destinado a tentar desperdiçar os recursos dos invasores e forçá-los a passar para alvos mais fáceis e menos caros. Um exemplo de ponta neste espaço é o CounterCraft. Pense na tecnologia honeypot com esteróides.

Além disso, treinamento e educação são essenciais para o desenvolvimento seguro de software. As opções de treinamento Secure Code Review incluem Secure Code Warrior , Security Journey , Immersive Labs e Avatao . Programas de Divulgação de Vulnerabilidade (VDP) podem ser gerenciados por meio de plataformas como HackerOne e Programas de Recompensas de Bugs podem ser configurados e gerenciados por meio de plataformas como Intigriti.

Há mais coisas que poderíamos abordar, como o papel da política como código e como automatizar totalmente os portões e como os fluxos de trabalho de aprovação devem funcionar em contextos altamente regulamentados, mas teremos que deixar isso aqui por enquanto.

Resumindo, o desenvolvimento de software seguro requer uma abordagem abrangente e multifacetada que envolve a integração de todas as práticas mencionadas acima em todo o processo de desenvolvimento de software. Ao fazer isso, os desenvolvedores podem garantir a segurança dos usuários e de seus dados e criar um software robusto, confiável e seguro. É importante observar que o cenário de segurança está em constante mudança, portanto, revisão e pesquisa contínuas são necessárias para acompanhar.