Seginfocast #84 – Desenvolvimento Seguro

SegInfocast #84 – Faça o download aqui

Neste episódio do SegInfocastLuiz Felipe Ferreira recebe Raphael Machado que nos contará tudo sobre o tema de desenvolvimento seguro. 

Muito tem se falado sobre Desenvolvimento Seguro. Trata-se de uma novidade?

Raphael comenta que, embora haja iniciativas esporádicas relacionadas a Segurança de Software ao longo do desenvolvimento da Computação – como os mecanismos de proteção de dados implementados do projeto MULTICS na década de 1970 – é apenas na virada do milênio que o desenvolvimento seguro passa a se consolidar como um tema relevante para a segurança de computadores. Neste período de virada do milênio, dois movimentos relevantes começam a trazer as preocupações com Segurança da Informação para dentro dos processos de desenvolvimento. No primeiro movimento, Gary McGraw (com colaboradores) inicia uma série de estudos que culminariam no estabelecimento de um modelo de desenvolvimento conhecido como “Security Touchpoints”. O segundo importante movimento envolveu a Microsoft, que a partir de 2001, começou a tratar de forma sistemática os aspectos de segurança ao longo do processo de desenvolvimento de seu software – que, na época, possuíam uma imagem bastante negativa em relação a segurança e confiabilidade Como resultado concreto, além de uma mudança de mentalidade da empresa no que diz respeito à segurança de suas aplicações, o movimento Trustworthy Computing deu origem a um modelo de desenvolvimento seguro que ficou conhecido pela sigla SDL (Secure Development LifeCycle), o qual viria a ser disponibilizado ao público, alguns anos depois.

Há outros modelos de desenvolvimento seguro além dos clássicos já citados?

Raphael destaca o SAFECode e o Secure Software Development Framework como evoluções dos primeiros modelos de desenvolvimento seguro. Nestes modelos mais recentes, também são considerados aspectos de “suporte ao desenvolvimento seguro”, tais como a proteção do ambiente de desenvolvimento e questões organizacionais.

Como as atividades de desenvolvimento seguro se distribuem ao longo do ciclo de vida do software?

A maioria dos modelos de desenvolvimento seguro busca flexibilidade em relação ao processo de desenvolvimento, sendo aplicáveis a processos clássicos, tipo “waterfall”, mas também aos modernos processos “agéis”. Tipicamente, esses modelos de desenvolvimento seguro prevêem atividades que podem ser distribuídas ao longo das diversas fases do ciclo de vida: Requisitos, Design, Implementação, Testes e Implantação. Para cada uma delas, há atividades específicas.

Na fase de Requisitos, quais são as atividades relacionadas a Desenvolvimento Seguro?

Raphael cita que as atividades focam em obter informações relacionadas aos requisitos de segurança conectados ao negócio, tais como controle de acesso, exigências normativas ou requisitos exigidos pelo cliente por questões de compatibilidade.

E na fase de Design, quais são as atividades relacionadas a Desenvolvimento Seguro?

A modelagem de ameaças é a atividade mais importante dessa fase. O propósito aqui é identificar as ameaças e os riscos cibernéticos associados a arquitetura do software, avaliar tais riscos e definir controles de segurança para mitigá-los. 

Já na fase de Implementação, quais são as atividades relacionadas a Desenvolvimento Seguro?

Nesta fase, o desenvolvedor tem um papel muito importante, pois deve evitar a inclusão de fragilidade nos códigos através das diversas tecnologias existentes hoje, principalmente por componentes de terceiros. Outras práticas não devem ser esquecidas, como por exemplo o tratamento de entrada dos usuários, gerenciar erros e exceções. Uma sugestão é o uso de padrões de programação segura.

Quais são as atividades relacionadas a Desenvolvimento Seguro na fase de testes?

Esse é o momento de validar o nível de segurança do software. Há dois grandes métodos: uma análise estática (conhecida como SAST), focada mais no código fonte, onde ferramentas automatizadas buscam por eventuais padrões que podem ser eventuais falhas ou falsos positivos. Outra importante ação é a revisão manual de código (ou revisão por pares), onde um programador, preferencialmente com formação em desenvolvimento seguro busca por falhas no código.

O segundo método é conhecido como análise dinâmica (ou DAST), onde o código já compilado também será testado automaticamente por ferramentas através do envio de interações como se fosse um ataque cibernético. 

Nenhum método é perfeito. Uma poderá facilmente encontrar vulnerabilidades relacionadas a SQL Injection por exemplo, mas terá dificuldade nas vulnerabilidades relacionadas ao negócio, portanto o indicado é a combinação dos dois métodos para a correção do maior número de fragilidades.

Quais são as atividades relacionadas a Desenvolvimento Seguro na fase de implantação?

Raphael lembra que além do software, há outras camadas de segurança do ambiente operacional que devem ser consideradas como firewalls, IDS, etc. Outras configurações de tecnologias como servidores web, sistemas operacionais, banco de dados, controles de acesso devem ser testadas para evitar possíveis portas de entrada para ataques.

Quais desafios você destacaria em relação a Desenvolvimento Seguro?

Nosso entrevistado destaca que essa disciplina é considerada recente e os desafios que ele enxerga baseia-se principalmente na grande diversidade (e disponibilidade) de bibliotecas, componentes e serviços de terceiros. É necessário quais são os riscos que esses componentes podem trazer ao seu projeto.

A variedade de tecnologias e linguagens também podem ser um complicador para os testes e verificação de vulnerabilidades. E com a ascensão das metodologias ágeis, os códigos são implementados muito rapidamente.

A questão acadêmica também deve ser revista, já que milhares de estudantes aprendem a programar, mas não de forma segura.

Como se manter informado sobre Desenvolvimento Seguro?

Um bom ponto de partida é o treinamento de Desenvolvimento Seguro que está sendo lançado pela Academia Clavis – é um treinamento de 16 horas que apresenta os principais conceitos da área.

Sobre o entrevistado

Raphael Machado é Doutor em Engenharia de Sistemas e Computação (COPPE/UFRJ 2010). É pesquisador pelo Inmetro e Professor Efetivo pela UFF. É bolsista de produtividade em pesquisa pelo CNPq desde 2013 e Jovem Cientista do Estado do RJ desde 2015, tendo publicado mais de uma centena de artigos científicos nas áreas de Segurança da Informação, Análise de Código, Ofuscação, Incorruptibilidade de Software, Marcas d’Água, Criptografia, Complexidade Computacional, Matemática Combinatória e Teoria dos Grafos. Raphael foi coordenador de mais de duas dezenas de projetos de pesquisa científica, desenvolvimento tecnológico e inovação apoiados por CNPq, Finep, Faperj e Fapesp – tais projetos deram origem não apenas a uma vasta produção acadêmica, mas também, a patentes produtos e serviços utilizados pela indústrias e reconhecidos como “estratégicos” pelo governo federal. Raphael organiza ou organizou inúmeros eventos relevantes nas mais diversas áreas da Computação, incluindo o LAWCG’2018 (evento satélite do International Congress of Mathematicians), o SBSeg 2020, o IEEE MetroInd 2020, as edições 2015, 2016, 2017 e 2018 do WRAC+, o ACM/ISSISP 2015, o RECOMB 2012, o WGA 2012, o CS2I 2014, e várias edições do Workshop SegInfo, além das sessões especiais de Segurança Cibernética dos IEEE MetroInd 2018 e 2019. Raphael foi chefe do Laboratório de Informática do Inmetro, onde liderou diversas atividades de consultoria e cooperação técnica a empresas e a órgãos do governo, que deram origem a dezenas de pareceres técnicos. É coordenador do do Programa Profissional de Pós-Graduação em Metrologia e Qualidade do Inmetro, e docente permanente do Programa Acadêmico de Pós-Graduação em Computação do IC/UFF e do Programa Acadêmico de Pós-Graduação em Metrologia do Inmetro. Foi palestrante convidado de eventos de prestígio nacional (como o SegInfo e o SBSeg) e internacional (como o Princeton DIMACS Meeting). Foi membro de conselhos e comitês gestores relevantes nas áreas acadêmica e de segurança da informação, incluindo o Conselho Acadêmico do Inmetro, Comitê Gestor do programa Pronametro-Ensino, Comitê Gestor do SHCDCiber, Comitê Gestor do PNCH-TIC e Conselheiro do Grupo Clavis Segurança da Informação.

Sobre o entrevistador:

Luiz Felipe Ferreira tem 16 anos de experiência em Tecnologia da Informação e desde 2008 trabalha com Segurança da Informação. Formado em Tecnologia em Informática pela UniverCidade e com MBA em Gestão de Projetos e Negócios em TI pela UERJ. Atualmente é Especialista em Proteção de Dados na Vivo (Telefonica Brasil). Apresentador do SegInfocast, um podcast focado em Segurança. Professor universitário na IDESP e na Impacta. Instrutor credenciado EXIN no tema de privacidade e proteção de dados pela Clavis.  Possui as certificações EXIN DPO, ISFS, PDPF, PDPP.