Alura > Cursos de Cibersegurança > Cursos de AppSec & DevSecOps > Conteúdos de AppSec & DevSecOps > Primeiras aulas do curso AppSec: Fundamentos de segurança no desenvolvimento de software

AppSec: Fundamentos de segurança no desenvolvimento de software

Introdução ao AppSec e ao SSDLC - Apresentação

Apresentando a instrutora e sua trajetória

Olá! Meu nome é Michelle e estou aqui para apresentar um pouco sobre a disciplina de desenvolvimento seguro e também sobre minha trajetória profissional.

Audiodescrição: Michelle é uma mulher branca, com cabelo castanho claro e liso. Ela veste uma blusa azul e está em um ambiente de escritório, com uma estante de livros ao fundo.

Hoje, vamos iniciar nossa disciplina sobre desenvolvimento seguro. Sou formada em Engenharia de Computação e possuo mestrado na área de Engenharia Biomédica. Minha experiência abrange as áreas de Cybersegurança, Cloud, Arquitetura de Software e Desenvolvimento de Software. Iniciei minha carreira na área de Desenvolvimento de Software e, posteriormente, migrei para a área de Segurança.

Explorando a experiência em segurança e desenvolvimento

Comecei na Segurança Ofensiva, aproveitando meu conhecimento sobre o pensamento das pessoas desenvolvedoras e como as vulnerabilidades podem ocorrer. Em determinado momento, decidi unir meu conhecimento em Segurança Ofensiva com o de Desenvolvimento de Software. Assim, migrei para as áreas de DevSecOps e Application Security, onde atuo intensamente. Meu trabalho envolve implementar controles de segurança na arquitetura dos softwares e aplicações, analisar o pipeline, integrar ferramentas e realizar modelagem de ameaças.

Neste curso, meu objetivo é ajudar a entender, na prática, o que é desenvolvimento seguro, explorando cada uma das camadas e elementos presentes na área de segurança.

Destacando a importância da cultura Maker e a ementa do curso

Por fim, é importante destacar uma forma eficaz de melhorar em programação, que foi a maneira como começamos. Trata-se da ideia da Cultura Maker, utilizando Arduino. Esse foi um dos motivos pelos quais ingressamos na área de Engenharia de Computação. Compreender na prática e observar o funcionamento dessas ferramentas contribuiu para nossa entrada na área de segurança e atuação na Engenharia de Computação.

Esperamos que apreciem a disciplina. Vamos apresentar um pouco da ementa. A ementa abrange desde os princípios do desenvolvimento seguro, passando pela compreensão dos controles de segurança, até chegarmos à parte de cultura, juntamente com Security Enabled e DevSecOps.

Detalhando os tópicos do curso

Iniciamos com a introdução ao que é DevSec e o SSDLC, requisitos de design seguro, desenvolvimento seguro, componentes como a parte de input e quantificação dos componentes, e testes de segurança. Discutiremos sobre o que é SCA, IEC, DASH e SASH, além de segurança na implementação, operação e manutenção. Isso inclui como gerenciar informações e patches em um ambiente antes de ir para a produção. Também abordaremos frameworks de maturidade e a cultura em AppSec, comentando sobre frameworks como o ASP.SAN e explicando o que é a cultura e desenvolvimento seguro, utilizando Security Enabled.

Esperamos que apreciem a disciplina. Vamos em frente. Obrigado a todos!

Introdução ao AppSec e ao SSDLC - A Importancia Do Appsec

Discutindo a relevância da AppSec

Anteriormente, discutimos a importância de um profissional de Application Security (AppSec) em uma organização. Esse papel é fundamental para ajudar as pessoas desenvolvedoras a compreenderem questões de segurança. Agora, vamos aprofundar por que a AppSec é tão relevante.

A AppSec é responsável por proteger softwares e aplicações contra ameaças e vulnerabilidades. No mercado de trabalho atual, o profissional de AppSec é conhecido como engenheiro na área de aplicação e também em Security Production. Esse profissional é essencial para garantir a segurança dos produtos, que incluem softwares.

Protegendo aplicações em um ambiente escalável

O principal objetivo é proteger as aplicações, considerando que, atualmente, os softwares são vistos como produtos escaláveis, seja para aplicações web ou móveis, distanciando-se do ambiente desktop, que antes era de difícil acesso. Com a internet, as aplicações podem ser escaladas, aumentando a superfície de ataque, o que demanda profissionais para manter a segurança nesse ambiente.

O profissional de AppSec tem a função de garantir e proteger as aplicações, considerando a arquitetura, entendendo o código e realizando treinamentos. Além disso, é responsável por assegurar a segurança desde o início do ciclo de desenvolvimento do software, o que chamamos de SSDLC.

Enfatizando o impacto das falhas de segurança

Outro ponto importante é o impacto das falhas na área de segurança. Entendemos que uma vulnerabilidade explorada pode fazer com que as pessoas percam a confiança no produto, resultando em impactos financeiros, legais e danos à reputação. Isso gera insegurança nos clientes finais em relação ao armazenamento de dinheiro e dados nesse ambiente.

Portanto, é crucial manter o ambiente seguro de forma proativa. O profissional de AppSec é vital nesse contexto, pois dissemina a segurança dentro das equipes.

Enfrentando o aumento das ameaças e complexidade das aplicações

Além disso, no contexto das ameaças, entendemos o crescimento dos ataques, principalmente após a pandemia, quando as pessoas ficaram cada vez mais conectadas, usando o computador, acessando a internet e as aplicações. Isso fez com que saíssemos daquele ambiente de desktop e tivéssemos uma superfície maior de exposição. Houve um crescimento, além de um aumento no número de bibliotecas e aplicações em funcionamento.

Existe também a questão de que as aplicações estão cada vez mais complexas, considerando aspectos como escalabilidade e observabilidade, ou seja, aplicações que têm várias pessoas acessando de forma simultânea. Isso aumentou a complexidade. Com isso, precisamos desenvolver as aplicações de forma mais rápida, o que também aumentou os riscos. Tudo isso fez com que as aplicações ficassem mais inseguras, podendo trazer brechas de vulnerabilidade, pois as pessoas desenvolvedoras têm menos tempo para corrigir e pensar em novas funcionalidades, colocando-as em produção sem testar a parte de segurança.

Incorporando segurança desde o início do desenvolvimento

Por isso, é tão importante que os profissionais entendam sobre segurança para, ao desenvolver e pensar na arquitetura da aplicação, já considerarem esse ponto. Outro ponto importante é que, se desenvolvemos uma aplicação com segurança desde o início do software, podemos ver que, se fizermos isso na fase inicial, que são os requisitos, pensando em requisitos de segurança como requisito funcional e não como algo não funcional, conseguimos resolver um problema de segurança de forma mais rápida e também diminuir os custos em comparação a quando está em produção.

Quando uma vulnerabilidade é identificada em produção, é necessário fazer um rollback, ou seja, voltar a aplicação para uma versão anterior, e nessa versão corrigir rapidamente a vulnerabilidade explorada. Isso requer profissionais para fazer essa correção rapidamente, além de profissionais de segurança para explorar a vulnerabilidade e entender se realmente era uma vulnerabilidade de segurança. Tudo isso aumenta o custo e o tempo para lançar a aplicação.

Esses pontos são extremamente importantes quando pensamos em segurança e ameaças. Dessa forma, entendemos que desenvolvimento seguro é incorporar essa cultura nos times. É extremamente importante, pois, se fizermos isso desde o início, como vimos, o custo é muito menor.

Introdução ao AppSec e ao SSDLC - SDLC vs SSDLC

Discutindo o modelo antigo de desenvolvimento de software

Nós discutimos sobre a importância do profissional de AppSec no ciclo de desenvolvimento de software e agora vamos explicar melhor o que é SDLC e SSDLC. Antes de detalharmos essas siglas, vamos abordar o modelo antigo de desenvolvimento de software.

O modelo antigo começava com a fase de requisitos, que incluía requisitos funcionais e não funcionais. Os requisitos funcionais são aqueles essenciais para a aplicação. Por exemplo, em um e-commerce, seriam necessários uma tela de login, uma tela para checkout, opções de pagamento e seleção de produtos. Após definir os requisitos, havia uma fase de planejamento do tempo de desenvolvimento, seguida pela definição da arquitetura da aplicação e, finalmente, o desenvolvimento em si.

Explicando o modelo em cascata

Esse modelo antigo é conhecido como modelo em cascata. Nele, a fase de requisitos até o desenvolvimento podia levar um ano, sem interação com o cliente para verificar se o produto atendia às expectativas, nem com o time de testes. O desenvolvimento era concluído antes de passar para o time de QA (Quality Assurance), e qualquer problema identificado exigia um retorno ao desenvolvimento, sem divisão em etapas, o que tornava o processo mais demorado.

No modelo em cascata, após o desenvolvimento, o código era entregue ao time de QA para testes. Se aprovado, seguia para produção através do deploy. Já no modelo DevOps, o processo é mais fragmentado, utilizando a metodologia Agile. Agora, o desenvolvimento é dividido em sprints, permitindo interação com o cliente e o PO (Product Owner) a cada duas semanas, para garantir que as funcionalidades atendem às necessidades do software.

Comparando com o modelo DevOps

Nesse modelo, vários programadores trabalham em suas próprias branches, e em algum momento, o código precisa ser integrado. No modelo em cascata, essa integração ocorria apenas após o desenvolvimento completo, o que podia resultar em muitos erros. No modelo DevOps, a integração e os testes são realizados por etapas, permitindo uma abordagem mais ágil e eficiente.

Os testes que conhecemos como parte da integração contínua e entrega contínua são conhecidos como CICD. Esses testes são realizados dentro de uma esteira, onde são aplicados testes de segurança e qualidade para garantir que a aplicação se mantenha segura e com qualidade, alinhada com a ideia do DevOps.

Implementando segurança no ciclo de desenvolvimento

O processo é dividido em sprints, permitindo que a aplicação seja analisada de forma anônima para verificar se possui todos os requisitos necessários para funcionar corretamente. Após essa verificação, é realizado o merge para a branch principal. O DevOps possibilita uma maior qualidade, pois permite a realização de testes durante a etapa de desenvolvimento, quebrando o código e testando-o em uma pipeline, que é uma esteira onde todos esses testes são realizados de forma integrada.

No modelo antigo, sem a ideia de segurança, como no modelo cascata, o desenvolvimento era feito antes dos testes. Isso dificultava a identificação rápida de vulnerabilidades, pois o foco estava em desenvolver toda a aplicação para depois testá-la. Esse método resultava em uma identificação tardia das vulnerabilidades, aumentando os custos devido à necessidade de correção e ao tempo gasto. Além disso, havia um maior risco de não encontrar todas as vulnerabilidades no código, já que os testes não eram contínuos e integrados.

Integrando segurança com SDLC e SSDLC

Com isso, surgiu a ideia de incorporar a segurança no ciclo de desenvolvimento do software. O SDLC significa ciclo de desenvolvimento de software, enquanto o SSDLC é o ciclo de desenvolvimento de software seguro, onde a segurança é integrada ao ciclo de desenvolvimento. Isso ocorre porque o software está sempre em aprimoramento, sem um início, meio e fim definidos. A ideia é integrar práticas de segurança em todas as fases do desenvolvimento, reduzindo o tempo e o custo de correção de vulnerabilidades. Ao fazer isso desde o início, o custo das falhas é significativamente reduzido.

Sobre o curso AppSec: Fundamentos de segurança no desenvolvimento de software

O curso AppSec: Fundamentos de segurança no desenvolvimento de software possui 161 minutos de vídeos, em um total de 53 atividades. Gostou? Conheça nossos outros cursos de AppSec & DevSecOps em Cibersegurança, ou leia nossos artigos de Cibersegurança.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda AppSec & DevSecOps acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas