Buscar

SEGURANÇA DE APLICAÇÕES aula 5 atividade

Prévia do material em texto

Aula 5: Melhores práticas de desenvolvimento de software seguro: O que é segurança de software e gerenciamento de riscos e Engenharia reversa e técnicas de análise de caixa cinza
Atividades
1 - A segurança é um item essencial para qualquer software e deve ser uma preocupação constante, pois a ausência de um tratamento específico permite que atacantes explorem as vulnerabilidades que possam existir no sistema.
Nesse sentido, selecione a opção correta que justifica a incômoda existência de vulnerabilidades nos sistemas, mesmo quando a segurança faz parte do planejamento da equipe de desenvolvimento.
a) Os sistemas estão cada vez mais complexos e, além disso, já existem muitas informações disponíveis sobre como explorar vulnerabilidades.
b) Os projetos de software estão preocupados com modelos conceituais e não têm como implementar recursos de proteção.
c)Devido à limitação de recursos financeiros, recursos de segurança só são implementados no final do projeto.
d) Não existem recursos que possam garantir a segurança de um sistema.
e) As aplicações desenvolvidas para dispositivos móveis oferecem segurança, desde que o usuário faça uso de senhas.
Gabarito
Infelizmente, você errou!
Letra a. - Os ambientes para os quais os sistemas são projetados favorecem a exposição a diversos tipos de ataques. Além disso, já existe muita informação disponível sobre exploração de vulnerabilidades. Isso exige que as equipes responsáveis por segurança estejam atualizadas com as melhores práticas, bem como integradas aos projetos de desenvolvimento.
2 -  As questões relacionadas à segurança dos sistemas devem fazer parte de todo o ciclo de desenvolvimento; inclusive, devem ser contempladas quando o sistema estiver em operação. A respeito dos mecanismos de proteção de software, selecione a opção correta:
a) Devem esconder o código-fonte completamente e obrigar o usuário a usar um software antivírus.
b) Devem incluir muitas etapas de verificação da identidade do usuário para garantir que não é um atacante que está usando o sistema.
c) Devem ter testes para evitar que sejam incluídas instruções que mudem o comportamento para o qual o sistema foi projetado.
d) Nunca devem expor mensagens de erros para os usuários, pois podem ser usadas para explorar vulnerabilidades no sistema.
e) Sempre que uma vulnerabilidade for detectada deve ser resolvida, bem como disponibilizada uma nova versão do sistema.
Gabarito
Parabéns! Você acertou!
Letra c. - O sistema deve se comportar de acordo com o que foi projetado. Por isso, devem ser incluídos testes que evitem tentativas de mudança de comportamentos de um modo geral.
3 - A segurança de um software deve ser vista de forma holística, ou seja, contemplar questões intrínsecas ao sistema, bem como sua interação com os sistemas e os usuários. Nesse sentido, selecione a opção correta sobre itens que auxiliam para aumentar a segurança da operação de um sistema.
a) Desde que consideradas na arquitetura do software, as questões relacionadas à segurança devem ficar concentradas em ataques externos.
b) A utilização de protocolos como SSL, TLS e HTTPS elimina ataques externos que tenham como objetivo roubar dados.
c) O firewall, junto com sistemas antivírus, elimina ataques de programas externos.
d) Para aumentar a proteção de um software devem ser consideradas questões que envolvem a arquitetura do software e tratamento de erros, como a configuração de recursos de proteção externos.
e) Devido à complexidade dos sistemas e da interação que fazem com outros programas, é necessário que as decisões e implementações relacionadas à segurança sejam tratadas por uma equipe específica.
Gabarito
Infelizmente, você errou!
Letra d. - A segurança de um sistema é obrigação de todos os envolvidos no ciclo de vida do desenvolvimento. Portanto, questões relacionadas à qualidade do código, comunicação segura e mecanismos de segurança devem ser implementadas.
4 - A engenharia reversa encontra especial importância para documentar sistemas legados. Trata-se de um processo complexo que exige bastante planejamento. Selecione a opção correta sobre a engenharia reversa:
a) Tem como objetivo revisar a arquitetura do projeto de software.
b) Tem como objetivo detectar vulnerabilidades.
c) Uma das etapas da engenharia reversa é extrair as estruturas do sistema.
d) Por ter como objetivo a melhoria contínua do sistema, trata-se de um processo progressivo.
e) Sempre deve fazer parte do ciclo de vida de desenvolvimento do software.
Gabarito
Parabéns! Você acertou!
Letra c. - A extração das estruturas do sistema constitui uma etapa fundamental para compreender o seu funcionamento interno.
5 - A engenharia reversa é um processo complexo que, entre outras coisas, exige planejamento, treinamento e disponibilidade de recursos, bem como programas para obter o código-fonte a partir dos arquivos do sistema. Selecione a opção correta que justifica a aplicação de engenharia reversa:
a) Dada a sua complexidade, é uma forma de qualificar a equipe de desenvolvimento.
b) No planejamento do projeto, existe a possibilidade de superestimar o tempo de entrega de um projeto; então, se for esse o caso, é uma forma de manter a equipe ocupada.
c) Auxilia na identificação de vulnerabilidades.
d) Deve ser aplicada apenas para sistemas legados.
e) É um processo que melhora a qualidade dos sistemas, além de documentá-los.
Gabarito
Parabéns! Você acertou!
Letra c. Além de auxiliar na documentação de sistemas legados, a engenharia reversa também dá suporte para identificar vulnerabilidades que existam no software.
6- Os testes de software são importantes para detectar vulnerabilidades e, desse modo, facilitar o processo de melhoria do sistema. O teste cinza possui algumas características que auxiliam nesse processo de melhoria. Selecione a opção correta que reflete uma vantagem desse teste:
a) Ele cobre todos os caminhos que o sistema pode fazer.
b) Reduz os custos do projeto, pois o testador também atua como um desenvolvedor.
c) Deve ser aplicado apenas para capturar vulnerabilidades de segurança.
d) Melhoram a qualidade do projeto, pois os testadores podem fazer alterações pontuais no código.
e) São mais confiáveis, pois separam as responsabilidades do desenvolvedor e do testador.
Gabarito
Infelizmente, você errou!
Letra e. A separação de responsabilidades é um item importante para garantir que não haverá interferência na identificação de vulnerabilidades e na alteração de código.

Mais conteúdos dessa disciplina