Você está na página 1de 3

Implementando um Com a crescente demanda por iniciativas de segurança em desenvolvimento de software é comum

encontrarmos soluções mirabolantes e ferramentas que implementam segurança "Out-Of-The-


Box". Não acredite nestas iniciativas. Para produção de um software seguro é necessário a adoção
processo de segurança de métodos que garantam a qualidade durante todas as etapas do desenvolvimento [1][2].

em desenvolvimento Antes de pensar em segurança é preciso analisar o seu processo de desenvolvimento de software.
Segundo estudos realizados pela Cigital Software Confidence [3]: “software ruim é a origem da
Wagner Elias maioria dos problemas de segurança”. Isso significa que uma má gestão no processo de
Departamento de R&D desenvolvimento de software pode levar a um código mal estruturado e por sua vez a problemas
de segurança. Por outro lado, software de qualidade é desenvolvido com uma abordagem
estruturada e ferramentas de apoio[4][5].

Como é o seu processo de desenvolvimento?


Seu processo de desenvolvimento atende a estes requisitos:

1 - Como você gerencia o seu código fonte?


Uma ferramenta fundamental para o desenvolvimento de software é um bom sistema de
controle de versão para o código fonte[6]. Além de organizar a interação entre
desenvolvedores, essa ferramenta irá garantir integridade e possibilitar o gerenciamento de
versões do código, evitando equívocos quanto a versão colocada em produção.

2 - Quais os tipos de testes você adota?


Um processo fundamental para a melhoria continua do software são os testes [7]. Devem ser
adotadas desde práticas que buscam uma avaliação geral do software até modelos que
buscam testar pequenos trechos de código por vez (como os testes unitários).

3 - Como você gerencia a correção de bugs?


Como diria Joel Spolsky: “não é possível armazenar mais que três bugs na cabeça” [8]. Para
manter registro das falhas encontradas no sistema é essencial que seja adotado uma
ferramenta de Bug Tracking. Esta irá agir como facilitadora da comunicação entre os envolvidos
na identificação e correção do bug.

4 - Você adota um processo de Integração Contínua para garantir que bugs não são
inseridos no build?
Um processo de integração continua irá colaborar para garantir a qualidade do software
desenvolvido[9][10]. O processo irá automatizar verificações no processo de build da
ferramenta, garantindo assim, que seja possível gerar um novo release sem problemas.

5 - Como você documenta o software desenvolvido e a arquitetura que o suporta?


Documentação clara da arquitetura e código fonte ajuda a aumentar a qualidade do software
desenvolvido. Uma documentação clara, objetiva e bem estruturada é de fundamental
importância para que o software possa ser expandido de forma sustentável e segura.
BRASÍLIA | SÃO PAULO | CURITIBA
Se você ainda tem deficiência nos itens listados acima, o primeiro passo é buscar ajustar o seu
Rua Marechal Hermes 678 CJ 32 processo de desenvolvimento às técnicas mencionadas. Com esta iniciativa você naturalmente
CEP 80530-230, Curitiba, PR irá desenvolver software melhor e com número menor de bugs.
T (41) 3095.5736
T (41) 3095.3986
www.conviso.com.br

Conviso IT Security | White Papers | Implementando um processo de segurança em desenvolvimento 1


Conviso IT Security | White Papers

Já possuo um bom processo de desenvolvimento de software e prescritiva e defina os papéis e responsabilidades dos envolvidos no
SDL.
quero inserir neste processo atividades que irão melhorar a
segurança dos softwares desenvolvidos 4 – Treinamento e Capacitação
O primeiro ponto a ser entendido é: para implementar segurança em Com o processo iniciado e apoio da organização é preciso treinar os
um processo de desenvolvimento são necessárias mudanças. Isto envolvidos e desenvolver materiais e recursos para que os
envolve de questões culturais até capacitação dos envolvidos em profissionais se mantenham conscientes sobre a necessidade de
temas associados a segurança. Todo esse processo de reeducação segurança e sejam informados sobre fontes de pesquisa no tema.
leva tempo e não acontece simplesmente ao escrever uma política
ou definir alguns checklists. 5 – Reutilização de Componentes
Construa e homologue componentes de código e arquitetura que
Segundo estudos relatados no BSIMM (Building Security In Maturity possam vir a ser adotados como padrão na organização. Modelos
Model), atualmente, existem mais de sessenta grandes iniciativas de
como o ESAPI (Enterprise Security API)[12][13][14][15] da OWASP
segurança no desenvolvimento de software em organizações dos podem ser adotados evitando que códigos com problemas de
mais diversos setores. Todas essas iniciativas tem características segurança e componentes inseguros sejam adotados.
comuns, adotam estruturas e abordagens que foram analisadas pelo
BSIMM. 6 – Padrões de Código Seguro e Checklists

A i m p l e m e n t a ç ã o d e u m p ro c e s s o d e s e g u r a n ç a e m Defina padrões de códigos seguros, boas práticas de acordo com a


linguagem adotada e ambiente definido pela organização[16]. Crie
desenvolvimento deve ser gradativo. Iremos tratar respectivamente
checklists para verificar as principais ações durante o
as atividades envolvidas do nível menos ao mais maduro de acordo
desenvolvimento e revisão de segurança do software.
com os estudos do BSIMM. Esses estudos, não levam em
consideração a organização em domínios, visando uma visão mais
7 – Modelo para Avaliação de Riscos
abrangente orientada às atividades e não a um framework específico.
Defina um processo para avaliar os riscos associados aos softwares
Estas atividades descrevem em alto nível as práticas que devem ser desenvolvidos e como os riscos identificados serão tratados. Modelos
inseridas no seu processo de desenvolvimento que levarão como o Theat Modeling da Microsoft[17] podem ser adotados como
gradativamente ao processo para criação de software seguro. referência. Este processo deve estar associado a um processo de
gestão de vulnerabilidades e resposta a incidentes.
1 – Diretrizes de alto nível e os gestores do processo
A iniciativa de segurança em desenvolvimento irá mexer com os 8 – Revisão de Segurança
processos de desenvolvimento de software e impactar o modelo já Defina processo de revisão de segurança e testes que irão verificar se
estabelecido entre gestores do negócio e equipe de existem problemas de segurança que ainda não foram tratados. Os
desenvolvimento. Por isso, uma modificação de cultura é necessária problemas identificados devem ser tratados e documentados no
para que esta iniciativa seja suportada pelo alto nível da organização. processo de Bug Tracking [18], através do processo de gestão de
Esse processo deve se conduzido por profissionais que tenham visão vulnerabilidades. Modelos como o OWASP Testing Guide [19] e
do negócio como um todo e um bom relacionamento com equipe OWASP Code Review Guide [20] podem ser adotados como referência.
de desenvolvimento e gerentes do negócio.
9 – Ferramentas para Teste
2 –Time de Segurança em Desenvolvimento Adote e crie ferramentas para testar as características específicas dos
É necessário definir um time que irá conduzir as atividades de softwares desenvolvidos pela organização. Essas ferramentas devem
segurança em desenvolvimento, como: revisores, responsáveis por evoluir de acordo os insumos produzidos pelas revisões de
políticas e métricas, testadores e orientadores. É importante notar segurança. Evite ferramentas que propõem modelos baseados em
que estes profissionais devem ser identificados no time de padrões conhecidos e não permitem que sejam aprimoradas e
desenvolvimento e/ou contratados com estes perfil. Um erro orientadas para a organização. Frameworks como o O2 Platform [21]
recorrente é que muitas vezes profissionais de áreas relacionadas a da OWASP se adaptam e evoluem com a sua equipe de teste a
segurança, sem perfil de engenharia de software são contratados medida que o seu software vai sendo desenvolvido.
para ocupar as vagas referentes aos perfis citados.
10 – Implantação de Software
3 – Papéis e Estrutura adotada para o (Secure Development Após a adoção de todo o processo é necessário colocar o software
Lifecycle) em produção. Após ir para produção, falhas podem aparecer e um
Estudando práticas como as sugeridas pela OWASP (Open Web processo claro de resposta a incidentes deve estar estabelecido.
Application Security Project)[11] e estabelecendo uma cultura de Eventuais problemas de segurança devem ser tratados sem que
segurança na organização, defina metas, desenvolva documentação causem grandes problemas aos usuários e a organização.

Conviso IT Security | White Papers | Implementando um processo de segurança em desenvolvimento 2


Conviso IT Security | White Papers

Conclusões 8. Acompanhamento de Bugs Indolor: http://


brazil.joelonsoftware.com/Articles/PainlessBugTracking.html
Gradualmente, as organizações serão pressionadas a adotar um
modelo de segurança em desenvolvimento de software e os 9. Continuous Integration: Improving Software Quality and Reducing
envolvidos devem se adequar a esta nova realidade. O processo de Risk [Paperback]: http://www.amazon.com/Continuous-
segurança em desenvolvimento exige que a organização adote boas Integration-Improving-Software-Reducing/dp/0321336380
práticas de desenvolvimento e se adeque a nova cultura de 10. CI Feature Matrix: http://confluence.public.thoughtworks.org/
desenvolvimento seguro de software. display/CC/CI+Feature+Matrix
11. Open Web Application Security Project: http://www.owasp.org
Apesar de relativamente nova a iniciativa de segurança em
desenvolvimento, é cada vez mais abundante os modelos e 12. ESAPI (Enterprise Security API]: http://www.owasp.org/
ferramentas para suporte ao processo. Nenhuma tecnologia isolada index.php/Category:OWASP_Enterprise_Security_API
irá aumentar a segurança do software desenvolvido. É necessário 13. Java Swingset: http://www.owasp.org/index.php/
recursos, tempo e dedicação para que gradativamente a organização ESAPI_Swingset
aumente a segurança de seus sistemas computacionais. 14. PHP Swingset: http://code.google.com/p/swingset-php/

Como a segurança das aplicações fará parte das atribuições e metas 15. .Net Swingset: http://code.google.com/p/swingset-dotnet/
de conformidade da organização é necessário que a alta gestão da 16. OWASP Secure Coding Practices: http://www.owasp.org/
organização apoie a iniciativa de desenvolvimento de software index.php/OWASP_Secure_Coding_Practices_-
seguro e fornece todos os recursos necessário. _Quick_Reference_Guide
17. Microsoft Threat Modeling: http://www.microsoft.com/security/
Sobre o Autor sdl/getstarted/threatmodeling.aspx
Wagner Elias atua com Segurança da Informação desde 2004, tendo 18. O uso de ferramentas de Bug Tracker no tratamento de
trabalhado como consultor, líder de equipes e gerente de consultoria. vulnerabilidades: http://wagnerelias.com/2010/03/31/o-uso-de-
Tem ampla experiência na condução de projetos em IT Security com ferramentas-de-bug-tracker-no-tratamento-de-
soluções implementadas em empresas dos mais diversos segmentos. vulnerabilidades/
Possui as certificações CBCP, SANS GIAC GHTQ, ITIL e CobiT Foundations 19. OWASP Testing Guide: http://www.owasp.org/index.php/
além de certificações de produtos de SIEM e WAF. É fundador e líder do Category:OWASP_Testing_Project
capítulo brasileiro da OWASP, ocupou o cargo de diretor de conteúdo na
20. OWASP Code Review: http://www.owasp.org/index.php/
gestão 2006-2008 e de eventos da gestão 2008-2010 do capítulo
Category:OWASP_Code_Review_Project
brasileiro da ISSA. É co-fundador e sócio da Conviso IT Security, onde
atua como Gerente de R&D, responsável pela gestão de pesquisa e 21. O2 Platform: http://www.owasp.org/index.php/
desenvolvimento de projetos de consultoria. OWASP_O2_Platform.

Referências
1. Application Lifecycle Management
http://en.wikipedia.org/wiki/
Application_lifecycle_management
2. Guide to the Software Engineering Body of Knowledge (SWEBOK)
http://www.computer.org/portal/web/swebok
3. Building Security In Maturity Model: http://bsimm2.com/
resources/
4. Bom código é suficiente para um projeto ter sucesso? - http://
www.infoq.com/br/news/2010/09/Good-Code-Is-Not-Enough
5. Inimigos do software seguro: http://wagnerelias.com/
2010/08/04/inimigos-do-codigo-seguro/
6. Visualization of Version Control Information: http://
projetos.inf.ufsc.br/arquivos_projetos/projeto_546/resumo2.doc
7. Software QA and Testing Resource Center: http://
www.softwareqatest.com/

Conviso IT Security | White Papers | Implementando um processo de segurança em desenvolvimento 3

Você também pode gostar