TSDD
Teste de segurança
durante o
desenvolvimento
Introdução


Com a fusão da Internet, é possível que pessoas de
vários lugares do mundo possam explorar vulnerabilidades
dos sistemas com mais facilidade e rapidez.
Neste trabalho serão apresentados quais são os
requisitos necessários para a segurança dos sistemas e quais
testes podem ser executados durante a fase de
desenvolvimento para garantir que tais requisitos sejam
atendidos.
Requisitos de Segurança em Desenvolvimento
O desafio de se construir softwares menos suscetíveis a
falhas de seguranças é um objetivo cada vez mais perseguido pelos
desenvolvedores.
Com base na norma ISO/IEC15408 (Common Criteria) podemos
definir os requisitos de uma aplicação.
Porque proteger: Uma das principais causas de ataques são
vulnerabilidades no software.
O software deve ser projetado, arquitetado e implementado
para ser resistente aos ataques.
Requisitos de Segurança em Desenvolvimento
 Devemos desenvolver com segurança e garantir a segurança
da aplicação desenvolvida.Para isto precisamos de um processo seguro.

As pessoas precisam conhecer e usar princípios de segurança.
 Ferramentas & Ambientes: Devem atender as premissas de
segurança.
 Acordo entre os desenvolvedores e o cliente sobre o que deve ser
feito.

Confiabilidade.
Requisitos de Segurança em Desenvolvimento

Elucidar os riscos do projeto.

Definir as fronteiras do sistema.

Classifique as informações quanto à segurança.
 Treine os desenvolvedores
vulnerabilidades.
para
fazer
revisões
 Testar o retorno de funções – Sempre que se
função, seu retorno precisa ser verificado.
e
eliminar
chamar
uma
Requisitos de Segurança em Desenvolvimento

Documentar funções corretamente – A correta documentação
da função evita mal-entendido a respeito da interpretação da mesma.
 Tratar as entradas de dados – Todo dado informado, seja pelo
usuário ou outro sistema, deve ser tratado adequadamente, mesmo que
se acredite que todas as funções são intrinsecamente seguras.
Testes de segurança

Especificar a segurança de forma clara e objetiva.

Construir conforme a especificação.

Testar para verificar o atendimento da especificação original.

Alteração do ambiente.

Acréscimos e/ou exclusões desautorizadas.

Negligência humana.

Entre outras falhas.
A importância da fase de
implementação de um software


Empregar padrões de codificação e teste.
Empregar ferramentas de teste de segurança incluindo fuzzing.

Empregar ferramentas de análise estática de código.

Revisar o código.
Testes

O que se deseja com o teste?

Quando testar?

Como definimos qual lógica testar?

Como definimos qual dado testar?
Testes de Verificação

Verificação de Requisitos: Garantir a qualidade das informações
geradas durante o processo de levantamento, análise e especificação de
requisitos.

Verificação da Modelagem Funcional: Avaliar se todos os requisitos
identificados foram incorporados na modelagem funcional.

Verificação da Modelagem Interna: Avaliar se os diagramas da
modelagem interna traduzem todos os aspectos da modelagem funcional,
assim como, analisar a estrutura dos dados.

Verificação de Código: Garantir que os códigos fonte obedecem as
normas e padrões determinados pela organização.
Testes de Validação

Validação de Unidade: Garantir que as diversas unidades do software
estão contempladas na totalidade de linhas de código.

Validação de Integração: Garantir que os diversos componentes do
software não apresentem erros quando integrados.

Validação de Funcionalidade: Garantir que não existam diferenças
entre os requisitos funcionais e o comportamento do software.
Testes de Validação

Validação de Sistemas: Detectar erros de natureza não funcional,
certificando-se que o comportamento está de acordo com os requisitos
especificados. Seu propósito é testar os requisitos tecnológicos, entre eles:

Carga e Stress – determinar o limite máximo de carga e stress que o
software poderá suportar;

Configuração – identificar e testar as configurações de software e hardware;

Segurança – identificar formas de quebra de segurança do software;
 Desempenho (performance) – determinar se o desempenho em situações
normais e de pico estão em conformidade aos requisitos de desempenho
especificados;
 Confiabilidade e disponibilidade – determinar as medidas de confiabilidade e
disponibilidade do software;
 Recuperação – avaliar o comportamento do software após a ocorrência de
um erro ou outras condições anormais;
Testes de Validação

Validação de Usabilidade: Garantir que os requisitos de usabilidade
(acesso, navegação, clareza de informações e terminologia adequada)
estejam sendo cumpridos e conforme às especificações.

Validação de Aceite: Permitir ao cliente executar testes, validando as
categorias de testes aplicadas anteriormente (funcionalidade, usabilidade e
sistemas), reduzindo os riscos na implantação em produção.

Os métodos de testes são basicamente os seguintes:

Método Caixa-Branca – Técnica utilizada para determinar defeitos nas
estruturas internas dos programas.

Método Caixa-Preta – Técnica utilizada para garantir que os requisitos
de negócios estão plenamente satisfeitos.
Conclusão
Pode-se concluir que, com a implantação de testes de
segurança durante a fase de desenvolvimento, será possível
desde o início garantir que o sistema atingirá os requisitos mínimos de
segurança, minimizando um esforço maior ao final para correção de falhas
do sistema.
A engenharia de software seguro pretende apoiar todos que
desejam aperfeiçoar os processos de desenvolvimento de software para
a obtenção de produtos mais seguros.
Perspectivas futuras
Práticas que podem ser
adotarem produtos mais seguros:
adotadas
pelas
empresas para

Planejamento das etapas de desenvolvimento de software
seguro
apresentado através da formulação de documentação,
para as fases especificadas e comparação desse modelo com outros.

Proposição de um novo modelo
desenvolvimento de software seguro.
de
ciclo de vida para
Perspectivas futuras

Criação de um framework para
requisitos funcionais de segurança.
apoiar a aplicação dos

Formulação de padrões de desenvolvimento que suportem, se
não todos, alguns dos requisitos funcionais de segurança citados.

Desenvolvimento de ferramentas de gerência para
desenvolvimento de softwares aderentes à norma ISO/IEC 15408.

Elaboração de conteúdo pedagógico para capacitação de recursos
humanos (desenvolvedores, arquitetos e engenheiros de software) em
segurança da informação.
FIM
Download

Testes de segurança