BT

Desenvolvimento de código seguro: inviável com Agile?

por Vikas Hazrati , traduzido por Fernando Ultremare em 16 Mar 2012 |

As equipes ágeis são reconhecidas por produzirem, com velocidade, código confiável e de alta qualidade. No entanto, observa-se que uma pressão por tal velocidade pode resultar em revisões de código e testes limitados e, por fim, na falta de atenção a aspectos de segurança. Seria o desenvolvimento de código seguro inviável dentro de Agile?

Um estudo realizado com pequenas e médias empresas indica que as equipes ágeis não levam as questões de segurança a sério, mesmo quando estão construindo sistemas que estarão acessíveis pela web. O estudo diz:

Mesmo em casos em que a segurança é um requisito forte e a modelagem dos aspectos de segurança é solicitada à equipe, não há garantia de que o resultado final atenda aos critérios de qualidade esperados.

Adrian Lane também analisou os riscos de segurança associados ao desenvolvimento de software através de metodologias ágeis. De acordo com Lane:

As implementações de Agile, baseadas nas instruções contidas em livros, tem principalmente o foco na entrega eficiente de funcionalidades de negócio, o que ocorre à custa de uma negligência aos aspectos de segurança, deixando-os fora do escopo do desenvolvimento.

Rocky Heckman sugere que mesmo com técnicas como desenvolvimento orientado a testes (TDD) e programação em pares, o foco continua a ser principalmente sobre a entrega de funcionalidades:

O objetivo principal dos testes é a geração de código de alta qualidade, sempre com a perspectiva de novas funcionalidades e a confiabilidade na repetição das operações. Há pouca ou nenhuma atenção aos testes contra ameaças e vulnerabilidades.

O desenvolvimento ágil representa então uma total negligência às questões de segurança? Existem alternativas.

Jim Bird sugere que com um pouco de cautela é possível lidar com os riscos de maneira incremental. De acordo com Bird, as práticas de segurança devem ser inseridas no trabalho das equipes, como quaisquer outras práticas de qualidade. Por exemplo, as equipes podem utilizar de maneira incremental a análise da superfície de ataque para acompanharem as mudanças no perfil de riscos do sistema, que podem ser causadas por mudanças arquiteturais.

A modelagem contra ameaças não deve ser uma grande dificuldade para equipes que estão construindo software incrementalmente e que conhecem bem o seu código. As alterações, na sua maioria, podem ser realizadas dentro de um sprint de uma ou duas semanas. Assim sempre é possível reanalisá-las, mesmo quando se altera a superfície de ataque.

Bird também menciona o uso de sprints de segurança, em que a equipe procura por bugs que representam ameaças no código, antes de realizar alterações mais importantes. Bird cita também Adrian Lane, quando diz que a segurança deve ser essencialmente uma preocupação da equipe de desenvolvimento e não do cliente. As equipes devem assumir a responsabilidade e dar a devida atenção a estes aspectos.

Mesmo de um cliente muito bem intencionado não se pode esperar o completo entendimento das questões relacionadas a como se construir um software seguro.

Dessa forma, com boas métricas e uma atitude correta é sim possível fazer da segurança parte do processo de desenvolvimento. Bird destaca:

Não há nenhuma razão para que o desenvolvimento ágil seja um fracasso em termos de segurança. O esforço técnico, o compromisso com a qualidade e com os detalhes que são necessários para se construir software seguro, são os mesmos, independentemente das práticas de desenvolvimento utilizadas.

E você, qual sua opinião sobre o tema, baseado em suas próprias experiências? Qual a relação entre as práticas ágeis e a segurança das aplicações desenvolvidas por sua equipe?

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Desenvolvedores desenvolvem aquilo que é proposto by Giulliano Morroni

Não entendi o motivo de realizarem este estudo, de certa forma controverso. Segurança é um aspecto de qualquer software assim como outros requisitos tais como escalabilidade, performance, disponibilidade e afins. Será que é papel de um desenvolvedor ágil se importar com assuntos arquiteturais. Por mais que a equipe seja formada por pessoas com um nível sênior, a ideia é focar no negócio e traduzi-lo em software. Cabe a um arquiteto aplicar o resto.

E se segurança for elencada como requisito de suma importância, logicamente que as pessoas irão trabalhar com atenção neste aspecto. Não concordo com esta abordagem.

Ahn?? by Robson Castilho

Sobre o título: Ahn???
Também achei sem sentido esse "estudo"...

Re: Desenvolvedores desenvolvem aquilo que é proposto by Robson Castilho

"Será que é papel de um desenvolvedor ágil se importar com assuntos arquiteturais"
Sim. Mesmo que haja o papel de arquiteto de software explícito no time, os demais devem conhecer pelo menos um pouco de arquitetura (assim como um pouco de análise, de testes, front-end, etc..). Assim o time fica mais balanceado, não ficando na mão de um só. Além do mais, o dev passa a ser muito mais completo (nos dias de hoje não tem mais esse negócio de "só faço isso").

Desenvolvedor deve ter compromisso com qualidade, seja interna ou externa..

Agora concordo contigo: também não entendi esse estudo.

[]s

Metodologias não-ágeis são 100% seguras by anderson freitas

"Rocky Heckman sugere que mesmo com técnicas como desenvolvimento orientado a testes (TDD) e programação em pares, o foco continua a ser principalmente sobre a entrega de funcionalidades"

Todo software, independentemente da metodologia aplicada tem foco na entrega de funcionalidades.

Dizer que esse é o foco exclusivamente de métodos ágeis, seria tornar verdadeira a frase do assunto desse comentário: "Metodologias não-ágeis são 100% seguras".

Adicionar os itens relacionados a segurança dentro do escopo do projeto cabe a qualquer bom desenvolvedor, seja utilizando métodos ágeis ou não.

Se o software não é seguro, não é exatamente por que foi desenvolvido com métodos ágeis.
Se o software foi desenvolvido com métodos ágeis, não é exatamente inseguro por isso.

Esta mais relacionado a quem desenvolve, e não a qual metodologia utilizada.

Será que é só com equipes ágeis? by Fernando Lozano

Pela minha experiência, a segurança é negligenciada pelos desenvolvedores, especialmente em aplicações web. Qualquer plataforma, qualquer metodologia, seja em empresas pequenas e "bagunçadas", seja em empresas grandes e burocráticas. O estudo foi feito com equipes ágeis. Hà muito pouca orientação aos desenvolvedores sobre com o que eles deveriam se preocupar, e a grande maioria dos frameworks tem segurança como uma coisa meio que jogada, tratada como se fosse opcional.

O primeiro estudo citado só envolveu projetos ágeis, então não tinha como concluir diferente. Já o segundo não quer dizer que ágil gera software inseguro, e sim que o material que ensina ágil, assim como o material que ensina rup, análise estruturada, struts, asp.net, php, ruby e etc também não ensina a desenvolver com a devida preocupação com segurança.

Então, em vez de reclamar, segue uma fonte rica de informações para os desenvolvedores interessados poderem aprender:
www.owasp.org/index.php/Main_Page

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

5 Dê sua opinião

Conteúdo educacional

Feedback geral
Bugs
Publicidade
Editorial
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2014 C4Media Inc.
Política de privacidade
BT