Escolar Documentos
Profissional Documentos
Cultura Documentos
Inserir de Desenvolvimento
Aqui
Inserir Título
Seguro em Sistemas
Aqui
Práticas de Desenvolvimento Seguro em Sistemas
Revisão Textual:
Prof. Ms. Claudio Pereira do Nascimento
Práticas de Desenvolvimento
Seguro em Sistemas
Objetivos
• Compreender os critérios de aceitação/acreditação de software seguro bem como
modelos de gestão de software de próprios e de terceiros.
Caro Aluno(a)!
Normalmente com a correria do dia a dia, não nos organizamos e deixamos para o
último momento o acesso ao estudo, o que implicará o não aprofundamento no material
trabalhado ou, ainda, a perda dos prazos para o lançamento das atividades solicitadas.
Assim, organize seus estudos de maneira que entrem na sua rotina. Por exemplo, você
poderá escolher um dia ao longo da semana ou um determinado horário todos ou alguns
dias e determinar como o seu “momento do estudo”.
Após o contato com o conteúdo proposto, participe dos debates mediados em fóruns de
discussão, pois estes ajudarão a verificar o quanto você absorveu do conteúdo, além de
propiciar o contato com seus colegas e tutores, o que se apresenta como rico espaço de
troca de ideias e aprendizagem.
Bons Estudos!
UNIDADE
Práticas de Desenvolvimento Seguro em Sistemas
Contextualização
Uma vez que o software esteja pronto ou que seja adquirido, existem questões ini-
ciais sobre como disponibilizar o software em produção, como saber se nosso software
atendeu aos requisitos do desenvolvimento e as premissas definidas.
6
Aprovação e Garantia de Software Seguro
A aprovação de um software é uma parte do ciclo de vida do desenvolvimento onde
deve ser verificado se o produto entregue ou disponibilizado cumpre os requisitos de
segurança, os testes e os critérios utilizados ajudam e apoiam a determinar se ele está
apto para uso em produção.
O julgamento sobre a qualidade do produto entregue deve ser avaliado segundo cri-
térios de testes adequados aos segmentos ao qual esse software está sendo utilizado.
Planejamento do Teste
O plano de teste visa garantir que o software atenda aos critérios determinados
e espelha o escopo dos requisitos solicitados, as regras de negócios definidos como
também aos critérios legais e compliance da operação onde o software será utilizado.
Dentre os pontos e os critérios que devem ser considerados no planejamento citamos
os seguintes:
• Os requisitos e características para testes;
• Requisitos de limites de testes;
• Tipo de teste de stress;
• Testes de segurança;
• Requisitos de nível de performance;
• Interfaces que serão testadas;
7
7
UNIDADE
Práticas de Desenvolvimento Seguro em Sistemas
• Testes de Stress;
• Testes de Performance;
• Testes de Usabilidade;
• Testes de Segurança.
Esses testes podem ser executados também por ferramentas especificas assim como
outras atividades conforme itens abaixo.
• Análise de código fonte de acordo com a complexidade e aderência aos padrões de
códigos e boas práticas;
• Análise de cobertura em que podem ser testados partes do código em que podem
ser realizados teste com base em determinadas condições e cenários; (***)
• Análise de memória, avaliando a performance física do software e do hardware;
• Carga e perfomance do software;
• Testes de vulnerabilidade de aplicações que validam diversos elementos tais como:
links válidos, uso correto entre o cliente e o servidor, teste de falhas, entre outros
testes específicos.
8
Os critérios de aceitação de risco que devem ser observados são de responsabilidade
das empresas, e quando falamos sobre o desenvolvimento de software eles devem ser
bem criteriosos para não comprometer a organização. Os critérios que devem compor
essa avaliação são os seguintes:
• Requisitos de segurança internos e externos: Validações de Dados, acesso, geren-
ciamento de memórias, exceções, etc.;
• Grau de complexidade do produto: Sistema de Cadastro simples, comércio eletrô-
nico, solução fiscal, financeiro, etc.;
• Fatores de performance: Gerenciar muitas transações por segundo;
• Fatores de Confiabilidade: Funcionamento 24x7, gestão de transações.
Atividades Pós-Revisão
O objetivo das atividades de pós-revisão visam verificar se as correções e/ou ajustes
necessários apontados durante os testes foram corrigidos.
9
9
UNIDADE
Práticas de Desenvolvimento Seguro em Sistemas
Testes Independentes
Testes de softwares também podem ser realizados por fornecedores especializados
desde que sejam respeitados os devidos acordos de confidencialidade na execução dos
serviços como que os critérios de testes e recursos utilizados seja compatível com o
serviço realizado.
Dentre as atividades que podem ser realizadas por empresas especializadas em testes
de software, as mesmas também devem seguir critérios claros nos testes e cobrir os
seguintes pontos:
• Plano de testes;
• Contratos de confidencialidade;
• Documentação de falhas de produto;
• Relatórios e outras documentações;
• Código-fonte dos testes aplicados;
• Entregáveis ao longo do projeto.
Os diversos mecanismos de testes têm por objetivo comum identificar bugs, erros
ou falhas que possam comprometer o funcionamento e características do produto, mas
também servem para identificar falhas de segurança que possam comprometer os pilares
da segurança da informação.
O principal objetivo de qualquer processo de teste não deve ser o de caça as bruxas, ou
iniciar um processo de demissão da equipe de desenvolvimento, mas deve sim, funcionar
como um processo de aprendizado pela equipe de desenvolvimento de software e de
forma lúdica melhorar a compreensão sobre a definição e uso do produto de software.
10
Figura 1 – BUG
Fonte: iStock/Getty Images
Instalação e Implantação
de Software Seguro
O objetivo geral da fase de instalação e implantação do software é assegurar que o
sistema está aprovado e que ele possa ser incorporado aos sistemas existentes e que o
planejamento estratégico necessário foi realizado para garantir se ele está operacional e
se pode ser utilizado livremente.
Após o software ser instalado, algumas atividades devem ser realizadas para garantir
que o produto tenha a aderência ao ambiente corporativo, todo o processo de instalação
de um software deve ser iniciado com um plano de trabalho.
11
11
UNIDADE
Práticas de Desenvolvimento Seguro em Sistemas
Além disso podem compor este processo o uso de normas de diversos tipos e fina-
lidade, por exemplo: acesso ao sistema, requisitos mínimos, política de troca de senha,
etc., e evoluindo de acordo com a necessidade da organização.
Suporte ao Usuário
Após a instalação o software deve ter o suporte operacional aos usuários, de forma
a resolver conflitos ou problemas que possam vir a surgir a qualquer ponto ou dúvidas
sobre funcionalidades ou recursos.
Neste ponto também é visto se o produto está aderente as boas práticas e prover dia
a dia o suporte necessário a operação.
Bootstraping
Processos de Bootstraping podem ser definidos como um auto processo de
carregamento, e que podem ser compostom por outros processos de auto verificação,
assim que os mesmos são iniciados, podendo passar por um auto teste de configurações,
componentes, regras e políticas de forma automática.
Inicialização Segura
Em processos de inicialização de aplicações podem ser utilizados para uma melhor
segurança dispositivos do tipo HardLock (Chave de Hardware), TPM (Trusted Plataform
Module), ambos utilizam critérios criptográficos para garantir a segurança do produto.
Eles podem funcionar como uma forma de garantir que em sua ausência a aplicação
ou software não irá funcionar.
12
Gerência de Configuração
Um conjunto de práticas que descrevem como uma organização controla seus ativos
de software e componentes é conhecido por gerência de configuração.
13
13
UNIDADE
Práticas de Desenvolvimento Seguro em Sistemas
Gestão de Incidentes
Um bom processo de gerenciamento da operação de tecnologia deve dentro do seu
programa de gestão conter um processo de gestão de incidentes.
Incidentes em softwares por vezes não surgem aleatoriamente eles podem ser
oriundos de um processo não gerenciado de desenvolvimento ou a ausência de
validação e investigação das ocorrências dia após dia.
14
Gestão de Problemas
A gestão de problemas visa simplificar o processo de atendimento a não conformidade
e/ou questões de suporte que podem ser gerenciadas através de níveis de atendimento
de acordo com o problema relatado.
Gestão de Mudanças
A gestão de mudanças é o controle de qualquer mudança que venha a ocorrer nos
processos de software e/ou outros ativos e ele deve ser um procedimento sistêmico,
gerenciado e deve ser autorizado pela direção da empresa para que qualquer mudança
cause o menor impacto a operação.
Descarte de Software
Os softwares podem naturalmente possuir um ciclo de vida de acordo com a evolução
da tecnologia/empresa e em determinado momento do tempo pode haver a necessidade
de descarte do produto por aquisição de novos produtos, evolução do produto e/ou a
mudança de escopo entre outras coisas.
15
15
UNIDADE
Práticas de Desenvolvimento Seguro em Sistemas
O plano de descarte deve conter os detalhes acerca da preservação dos dados exis-
tentes, o tempo de guarda do backup, a maneira de exclusão dos dados ou destruição
da máquina se for aplicável.
Caso o software seja alugado o processo e devolução dos dados deve devidamente
documentado para evitar que esses mesmos dados sejam expostos desnecessariamente
ou que os mesmos fiquem sequestrados.
Aquisição de Software
Em algum momento e muitas vezes as empresas preferem adquirir softwares de
terceiros ao invés de construí-los, não obstante, as mesmas preocupações com segurança
devem ser observadas em relação a isto também.
Ao adquirir um software de terceiro, muitas pontos devem ser avaliados para que a
escolha seja a melhor possível. Porém, em sua maioria, apesar dos diferentes motivos,
as empresas levam em conta como critério baseados em custo e funcionalidades.
Quando o único critério é o preço, tende-se por vezes escolher produtos de menor
qualidade e em um primeiro momento atende a empresa e com o passar do tempo
acaba causando maiores problemas a corporação.
16
Dentre os pontos e itens que devem ser observados em contratos de software devem
conter os seguintes itens:
• Instalação de software ou hardware malicioso;
• Instalação de software ou hardware pirata;
• Falha ou disfunção em ambiente de produção afetando de forma crítica a operação
da companhia;
• Suporte ao ambiente;
• Instalação não intencional de vulnerabilidades em hardware ou software.
Lembrando que a segurança em qualquer estado deve ser proativa e não reativa.
Sabemos que em uma boa parte dos softwares que utilizamos existe essa estrutura
dentro desses produtos e diante disto devemos nos atentar que uma falha identificada
em algum ponto do software pode estar presente em outro ponto do mesmo produto.
Diante desse cenário deve ser criado um plano de trabalho que permita avaliar esses
itens em diversos pontos do produto, muitas empresas e/ou países as vezes exigem
acesso ao código fonte para realização de auditoria de segurança.
17
17
UNIDADE
Práticas de Desenvolvimento Seguro em Sistemas
Essas auditorias visam buscar diversas informações que possam vir a colocar em risco
a empresa, isso incluem pontos sobre:
• Propriedade Intelectual
Existe uma série de questões associadas a propriedade intelectual aos quais não
vamos entrar no mérito, mas se estivermos falando de empresas concorrentes esses
processos podem envolver milhões de dólares em multas e sanções.
Outra questão se refere aquela em que se envolvem coisas que vão além do código
fonte como fórmulas, entre outros conceitos implementados de maneira a gerar
dúvida dentro de determinados produtos.
Não podemos nos esquecer nas diversas licenças existentes em software que po-
dem afetar o uso e distribuição de produtos e que devem ser observadas para evitar
maiores problemas.
• Compliance
Hoje temos uma nova forma de contratação de produtos através de soluções que fun-
cionam pela internet e funcionam através de pagamentos mensais com base no uso.
Controle de Integridade
Contratos são instrumentos legais que permitem as empresas se relacionar com seus
fornecedores, clientes, etc. com regras claras sobre as atividades e responsabilidades de
cada lado.
18
Manutenção, Operação e Distribuição de Software
A entrega e operação de um software é a última parte de um processo de software,
durante essa entrega o produto deve ser monitorado durante o período de operação.
Cadeia de Custódia
O termo cadeia de custódia tem por objetivo determinar um baseline em que toda a
equipe tem conhecimento de todos os entregáveis do produto de software.
Neste ponto também pode-se definir os times responsáveis por áreas e/ou módulos
do produto e por consequência a gestão dos mesmos.
A disseminação de controles de uso sobre o produto caracteriza uma das boas práticas
do modelo de desenvolvimento seguro, estes controles podem ser auto assináveis através
de certificados digitais de uso, validação da integridade dos controles, evitando ameaças
internas e externas ao ambiente.
19
19
UNIDADE
Práticas de Desenvolvimento Seguro em Sistemas
A figura abaixo ilustra as diversas ferramentas que podem ser utilizadas em diversas
fases do desenvolvimento do produto.
Muitas vezes os invasores aguardam muito tempo até que todos os rastros estejam
apagados para usar os dados sequestrados para realizar extorsão financeira junto as
empresas, com a ameaça de vazamento desses dados.
Conclusão
Manter um produto de software ou de terceiros, requer o que chamamos de controle
e gestão, e que em todas as fases de vida de um produto, os pontos de atenção e geren-
ciamento de dados fazem parte de um conceito de segurança pró-ativa dos produtos.
20
Material Complementar
Indicações para saber mais sobre os assuntos abordados nesta Unidade:
Sites
Teste de Software
https://goo.gl/XXVIOj
Testes de Software Exploratórios
https://goo.gl/xPdHES
Vídeos
Testes de Software
https://youtu.be/DBw_GctgPqU
Transforme testes Manuais em Testes Automatizados
https://youtu.be/yXSdu1t-g-Y
21
21
UNIDADE
Práticas de Desenvolvimento Seguro em Sistemas
Referências
HOGLUND, Greg; McGraw, Gary. Como Quebrar Códigos: a arte de explorar (e
proteger) software. Pearson 448 ISBN 9788534615464. (Livro Eletrônico).
22