Prévia do material em texto
Desenvolvimento de Software Seguro Marcio Quirino - 1 Exercícios 1. A noção básica de segurança é um aspecto natural. Em especial, na era em que vivemos, com os grandes avanços da tecnologia e dos algoritmos, os dados, de um modo geral, ganharam grande importância. Nesse sentido, selecione a opção correta a respeito da relação entre os princípios de segurança e software seguro. Um software seguro restringe o acesso e manipulação aos dados apenas para quem, de fato, deve ter esses direitos. Os princípios de segurança tratam sobre as diversas técnicas e atitudes que devemos usar para garantir a proteção das pessoas e de bens materiais. Então, quando nos referimos a dados, estamos tratando de tecnologia digital que, por sua vez, faz uso de programas que devem implementar os princípios de segurança para protegê-los. 2. Uma das consequências da popularização da área de ciência de dados foi a conscientização de que os princípios de segurança da informação devem fazer parte dos softwares. Um desses princípios é o da confidencialidade. Nesse sentido, selecione a opção correta a respeito do princípio da confidencialidade. Uma das técnicas usadas para garantir a confidencialidade é a criptografia. O princípio da confidencialidade consiste em se utilizar dos meios necessários para que apenas pessoas autorizadas tenham acesso aos dados. Portanto, um software seguro deve utilizar técnicas que envolvam configurações e algoritmos para impedir o acesso indevido. Entre essas técnicas, estão os algoritmos de criptografia. 3. É fato que existem diversos fatores que influenciam para obtermos um software seguro. Um desses fatores, talvez o mais fundamental de todos, está relacionado às decisões do projeto do software, ou ainda, do design do software. Nesse sentido, selecione a opção correta a respeito dos elementos de projeto de um software seguro. É composto por um conjunto de práticas que implementam os princípios da segurança, como também permitem monitorar o processo de desenvolvimento e operação do software. Um projeto para a construção de um software seguro envolve decisões sobre restrições de acesso, medidas protetivas e de contra-ataques, utilização de boas práticas, redução de complexidade do projeto, além de outras medidas que se somam para mitigar riscos. 4. Uma das formas de mitigar riscos em um software seguro é por meio da implementação da política de privilégio mínimo. Apesar de a ideia ser simples, ela é extremamente efetiva na prática. Nesse sentido, selecione a opção correta a respeito da importância da política de privilégio mínimo para construção de um software seguro. Simplifica o gerenciamento das ações que um usuário pode realizar dentro do sistema. A efetividade da política de privilégio mínimo está exatamente na simplicidade que ela utiliza para atribuir direitos aos perfis de usuários. Dessa forma, é muito mais eficiente monitorar o modo como os usuários estão operando um sistema. Além disso, no caso de um invasor conseguir se passar por um usuário legítimo, também é mais fácil mensurar danos e criar estratégias de contra-ataque. Desenvolvimento de Software Seguro Marcio Quirino - 2 5. Atualmente, é cada vez mais comum utilizarmos componentes de terceiros para construir nossos sistemas. Existem vários motivos que justificam esse comportamento, no entanto também há riscos envolvidos nele. Nesse sentido, selecione a opção correta sobre os riscos de utilizar componentes de terceiros para construirmos um software seguro. É fundamental trabalhar com fornecedores confiáveis e que ofereçam manutenções e atualizações periódicas. Atualmente, é quase impossível construir um software sem utilizar componentes de outros fornecedores. Isso ocorre porque precisamos focar nossa energia produtiva no que faz parte da estratégia do negócio. Por isso mesmo, é fundamental que façamos uso de componentes apenas de fornecedores com boa reputação no mercado e que ofereçam planos de manutenção periódica e atualizações em locais oficiais para reduzir a exposição a riscos. 6. Garantir que um software seja, de fato, seguro é cada vez mais desafiante. Isso ocorre porque as aplicações estão ficando mais complexas para atender às demandas da sociedade em diversas áreas. Na prática, existem muitas vulnerabilidades conhecidas que podem estar em um sistema e, assim, comprometer a segurança que ele oferece. Nesse sentido, selecione a opção correta a respeito das vulnerabilidades dos componentes de um software. Podem estar associadas a decisões de projeto, como a configurações inadequadas. Infelizmente, as vulnerabilidades de um sistema podem ter diversas origens, como em más decisões de projeto, uso inadequado do sistema e o não tratamento de ataques conhecidos. Por isso mesmo, é fundamental investir em treinamentos na área de segurança com foco na implementação de práticas seguras e na formalização de processos voltados para aplicação de testes, monitoramento de operação e em ações de prevenção e contra-ataque. 7. Para utilizar um sistema, precisamos entrar com o nosso login de usuário e senha. Além disso, no caso de sistemas seguros, ainda precisamos confirmar nossa identificação em outro dispositivo pré-cadastrado. Com base nas informações acima, selecione a opção correta que contém o nome dessa técnica. Autenticação multifator 8. A segurança de dados é extremamente importante nos dias de hoje, já que vivemos em um mundo cada vez mais digital e conectado. Nesse sentido, considere a seguinte afirmação a respeito dos princípios de segurança: "Uma das dificuldades para implementar software seguro é a dificuldade de acesso a informações sobre os princípios da informação" Agora, selecione a opção correta a respeito da afirmação: Está errada, pois os princípios de segurança sáo bem conhecidos e há bastante material disponível para estudá-los com mais profundidade 9. Ainda sobre os princípios de um software seguro, temos diversos recursos. Entre eles, está o controle de acesso. Nesse sentido, selecione a opção correta sobre o controle de acesso de um software seguro: Associa um conjunto de privilégios mínimos aos perfis dos usuários Desenvolvimento de Software Seguro Marcio Quirino - 3 10. Uma boa prática para a definição de um projeto seguro é estabelecer, desde o início, as boas práticas de segurança. Infelizmente, ainda é bastante comum que muitas empresas não incentivem que os desenvolvedores de software trabalhem dessa forma. Nesse sentido, selecione a opção que contém o nome do princípio descrito no começo da questão. Security by Design 11. No mundo ideal, um software deveria ficar disponível a qualquer momento para os usuários legítimos do sistema. Na prática, sabemos que há diversos fatores que impedem que isso ocorra. Nesse sentido, selecione a opção correta que apresente um fator positivo para que um software não esteja disponível. Realização de manutenções preventivas 12. Existe muita informação disponível na Internet sobre vulnerabilidades de softwares. O melhor exemplo disso é a OWASP. Nesse sentido, selecione a opção correta sobre a OWASP. Pessoas mal-intencionadas podem utilizar as informações contidas nela para sofisticar os ataques. 13. Para conseguirmos garantir que os dados sejam seguros, precisamos de um gerenciador deles que ofereça segurança. Esse gestor é o que chamamos de software seguro que pode ter diversas funcionalidades que vão do armazenamento a visualização e processamento dos dados. Neste sentido, selecione a opção correta que viabiliza desenvolvermos um código seguro. Através da aplicação de práticas de codificação segura. 14. Risco em segurança da informação se refere à probabilidade de uma ameaça explorar uma vulnerabilidade em um sistema e causar prejuízos aos ativos de informação. Nesse sentido, considere o seguinte comentário: "Como não é possível eliminartodos os riscos a que um software está sujeito, pelo menos tentamos mensurar quais os possíveis danos que podem ser causados por um invasor" Agora, selecione a opção correta a respeito desse texto. Uma forma de atingir o objetivo do comentário é usar privilégios mínimos para cada perfil de usuário. 15. Os dados podem ser classificados como sensíveis ou confidenciais. Nesse sentido, considere a seguinte situação: "Depois de muita deliberação, os gestores de uma empresa em recuperação decidiram injetar uma grande quantidade de recursos próprios para aumentar a credibilidade dos investidores e marcaram uma data específica para realizar essa ação." Com base nessa afirmação, escolha a opção correta. Trata-se de uma informação confidencial, pois está relacionada à estratégia da empresa 16. Um aspecto básico para a construção de um software seguro é aplicar os princípios de segurança. Então, considere a seguinte afirmação: "O princípio de segurança mais importante é o da confidencialidade." Nesse sentido, selecione a opção correta a respeito da afirmação. Está errada, pois existem outros aspectos dos princípios de segurança que se somam para minimizar a exposição a riscos Desenvolvimento de Software Seguro Marcio Quirino - 4 17. Um dos primeiros contatos que um usuário tem com um software é com o processo de autenticação. Nas versões mais simples, o usuário precisa fornecer um login e uma senha. Nesse sentido, como esse simples processo pode afetar a segurança de um software? Um usuário pode inserir um código malicioso que, se não for tratado, pode causar danos na segurança de todo o sistema. Uma das formas que um usuário pode causar problemas na segurança de um software é entrar com um código malicioso. Caso o sistema não tenha um processo de validação de entrada, o usuário pode ter acesso a dados e outras funcionalidades do sistema sem a devida autorização. 18. Um software corporativo, normalmente, possui diversas funcionalidades. Por isso, é natural utilizar componentes e bibliotecas de terceiros para evitar consumir tempo e recursos de mão de obra com atividades que não são a finalidade do sistema. Nesse sentido, como se prevenir de inserir vulnerabilidades no software a partir de componentes de terceiros? Usando bibliotecas acreditadas pela comunidade de desenvolvimento, baixadas das fontes oficiais e realizando sempre as atualizações sugeridas pelo desenvolvedor. Sempre vai existir o risco de inserir uma vulnerabilidade no nosso software, quando usamos um componente de outro fornecedor. Assim, é fundamental buscar fornecedores oficiais e que façam atualizações de segurança em ambientes confiáveis, pois eles são especialistas neste tipo de desenvolvimento e não têm nenhum interesse que os componentes deles possam inserir vulnerabilidades nos sistemas dos clientes. 19. O processamento dos dados torna o uso de sistemas produtivo. Nesse sentido, selecione a alternativa correta a respeito da melhor forma de evitar que o processamento dos dados gere uma vulnerabilidade de segurança. Utilizar meios para assegurar que apenas usuários com perfis legítimos possam executar apenas determinadas tarefas. A primeira ação que devemos tomar para garantir que um software realize processamentos seguros é validar os dados de entrada. Em seguida, devemos garantir duas condições: I) apenas usuários legítimos tenham acesso ao sistema; e II) que eles estejam associados a perfis que limitem os privilégios de execução, reduzindo as chances de alguém cometer um ato fraudulento. 20. A política do privilégio mínimo é associada aos perfis dos usuários, e não ao usuário especificamente. Nesse sentido, selecione a alternativa que justifica a eficácia da política de privilégio mínimo para garantir que o software seja seguro. O gerenciamento de perfis é mais eficiente do que o de indivíduos. Além disso, é possível mensurar os danos que um perfil pode causar. A política de privilégio mínimo reduz os direitos dos usuários dentro de um sistema apenas ao essencial para que eles realizem as tarefas para as quais os perfis deles estão mapeados. Portanto, ao identificarmos uma situação insegura, podemos determinar a qual perfil ela está associada. Além disso, ainda somos capazes de medir quais são os impactos que podem ser ocasionados, uma vez que os privilégios estão associados aos perfis. Desenvolvimento de Software Seguro Marcio Quirino - 5 21. Uma das primeiras boas práticas que aprendemos no desenvolvimento de software é utilizar funções. Selecione a alternativa correta sobre os riscos que uma chamada de função pode ocasionar para construirmos um software seguro. Caso a função possua uma vulnerabilidade, todos os processos que fizerem chamada para ela estarão expostos. Se as funções não forem bem testadas, podem conter vulnerabilidades. Os riscos de danos aumentam diretamente na proporção em que essas funções precisam ser chamadas. Esse é um dos motivos pelos quais precisamos investir em muitos testes, boa documentação e monitoramento das chamadas realizadas por nosso sistema. 22. As APIs nos permitem realizar diversas operações que nos ajudam a potencializar a nossa produtividade, mas também oferecem riscos para segurança do nosso sistema. Selecione a alternativa que apresenta uma forma de mitigarmos os riscos à segurança ao fazer chamadas a APIs. Implementar testes de validação dos dados enviados para uma API e dos resultados que ela gerou. É cada vez mais comum utilizarmos chamadas a APIs. No entanto, não há como termos garantias de que não possuam vulnerabilidades, especialmente, quando não temos acesso aos pormenores da sua implementação. Por isso, precisamos realizar testes que validem os dados de entrada, bem como os resultados gerados por elas. 23. A resposta de um sistema é o resultado de várias etapas, que vão desde a validação da entrada dos dados até o processamento deles. Selecione a alternativa correta sobre uma forma de evitar que um resultado sofra alguma corrupção no processo de envio para os usuários. Aplicar técnicas que utilizem protocolos seguros para garantir que os resultados sejam criptografados até chegarem aos respectivos usuários legítimos. A criptografia é a forma mais segura de impedir que um invasor, com acesso aos dados, consiga extrair algum valor deles, ou mesmo ocasionar alguma modificação, pois ela seria facilmente percebida quando os resultados passassem pelo processo de decriptografia. Além disso, precisamos usar os protocolos seguros, pois são responsáveis pelo controle dos dados em trânsito na rede. 24. De modo geral, associamos o uso da criptografia a uma boa prática de segurança. Selecione, porém, a alternativa a respeito de uma situação em que o uso de criptografia pode ocasionar vulnerabilidades de segurança para um software. Fazer um mau gerenciamento das chaves de criptografia. Caso não haja um gerenciamento adequado das chaves de criptografia, um invasor pode ter acesso a uma chave e obter acesso aos dados processados. 25. Um sistema pode fazer chamadas a diferentes programas. Isso pode facilitar o trabalho de desenvolvimento e aumentar a eficiência do sistema. Agora, selecione a opção correta que nos ajuda a mitigar vulnerabilidades associadas a chamadas de programas de terceiros. Conceder privilégios de chamadas para apenas alguns perfis. 26. É bem comum associarmos o termo senha forte à segurança. Mas um processo que force que o usuário use uma senha muito complexa também é um exemplo de vulnerabilidade. Com base nas informações acima, selecione a opção correta que apresente um exemplo de situação insegura ocasionada por uma política rigorosa de senhas muito complexas. O usuário anotar a senha. Desenvolvimento de Software Seguro Marcio Quirino - 6 27. Uma das etapas do ciclo de vida dos dados dentro de um software é o processamento. Nesse sentido,selecione a opção correta que apresenta uma situação que envolve o processamento de dados com vulnerabilidade de segurança: Permitir que todos os usuários tenham os mesmos direitos de processamento. 28. Atualmente, é bastante comum trabalharmos com sistemas que utilizam a arquitetura cliente x servidor. O contato de um usuário ocorre com a aplicação do lado do cliente. Nesse sentido, escolha a opção correta sobre a afirmação: "não devemos fazer testes de validação de entrada do lado do servidor". Está errada, pois podem passar dados maliciosos que não foram detectados pelos testes do lado da aplicação cliente. 29. Existem alguns tipos de criptografia. Todos eles têm como objetivo proteger os dados. Nesse sentido, selecione a opção correta que apresente o princípio geral que esses algoritmos utilizam para garantir essa proteção dos dados. Através da transformação dos dados para um formato que só possa ser compreendido por pessoas que possuem a chave de decriptografia. 30. Uma boa prática de segurança é manter os sistemas atualizados. Alguns fornecedores disponibilizam essas atualizações nas páginas oficiais deles. Neste sentido, selecione a opção correta que apresenta o nome de um instrumento de atualização. Arquivos de patches. 31. Alguns sistemas utilizam a opção "Náo sou um robô". Nesse sentido, selecione a opção correta a respeito de como essa opção pode acrescentar em segurança para um software, uma vez que o usuário já entrou com o login e a senha. Esse é um recurso para evitar que um programa se passe por um usuário. 32. A tecnologia de processamento da nuvem está cada vez mais popular. Certamente, existem várias justificativas para isso. Nesse sentido, selecione a opção correta sobre uma das vantagens para segurança associadas ao processamento de dados na nuvem. As configurações adequadas são escaláveis. 33. O resultado do processamento dos dados precisa ser enviado para alguns usuários específicos ou ficar disponível em um local seguro. Neste sentido, selecione a opção correta que apresenta um risco de vulnerabilidade associada ao envio dos resultados de um processamento: Os dados podem ser corrompidos durante o envio. 34. O processamento dos dados é uma etapa importante de manipulação e construção de resultados úteis para os usuários finais. No entanto, não existe apenas uma forma de realizar o processamento dos dados. Nesse sentido, selecione a opção que contém o nome do tipo de processamento que é adequado para situações em que lidamos com grandes volumes de dados de uma única vez. Processamento em lote. Desenvolvimento de Software Seguro Marcio Quirino - 7 35. Os bugs de software são muitas vezes introduzidos durante a fase de programação e podem possibilitar que um invasor tome o controle do sistema. Esse tipo de bug pode ser classificado como: Vulnerabilidade Vulnerabilidade é uma fraqueza ou brecha no software que pode ser explorada por um atacante para comprometer a segurança do sistema. As vulnerabilidades podem ocorrer em diferentes níveis do software, como em código fonte, bibliotecas, protocolos de rede, configurações de sistema, entre outros. 36. Assinale a alternativa que apresenta o nome da parte maliciosa do código carregado juntamente com o restante, que é executado em um ataque bem-sucedido por ocasião da exploração de uma vulnerabilidade de software. Payload Payload é o componente do exploit que é projetado para realizar uma ação maliciosa específica após a exploração bem-sucedida da vulnerabilidade. O payload pode ser usado para várias finalidades maliciosas, como instalação de malware, roubo de dados, controle remoto do sistema comprometido, entre outros. Ele pode ser projetado para ser executado automática ou manualmente pelo invasor. 37. Qual é a finalidade da primeira etapa da modelagem de ameaças de segurança de software? Definir formalmente os objetivos de segurança a serem atingidos. A primeira etapa da modelagem de ameaças de segurança de software tem como objetivo definir os objetivos de segurança a serem atingidos. É uma etapa crítica no processo de modelagem de ameaças de segurança de software, pois envolve levantar os ativos que precisam de proteção, elencando as possíveis ameaças que podem prejudicá-los. Identificar as metas do sistema, os ativos que precisam de proteção e as ameaças potenciais que podem prejudicá-los são ações necessárias para que sejam formalmente definidos os objetivos de segurança a serem atingidos. As demais alternativas referem-se às etapas posteriores do processo de modelagem de ameaças. 38. A validação do modelo de ameaças é a última etapa do processo de modelagem de ameaças de software. Assinale a alternativa que apresenta três ações empregadas durante essa etapa. Testar contramedidas; resolver problemas; comunicar resultados. As ações empregadas na fase de validação do modelo de ameaças envolvem: testar contramedidas, visando garantir que elas sejam eficazes contra as ameaças levantadas; resolver problemas, que garante a validação do modelo de ameaças em si e pode gerar a necessidade de novas contramedidas, caso algum problema não seja resolvido; e comunicar os resultados, visando dar publicidade sobre o modelo para todas as partes interessadas. 39. Durante a fase de desenvolvimento de software seguro, qual das seguintes práticas é importante para garantir a segurança do código? Utilizar bibliotecas seguras. Utilizar bibliotecas seguras durante a fase de desenvolvimento de software é uma prática importante, pois permite que os desenvolvedores usem componentes já testados e verificados, evitando vulnerabilidades de segurança que possam ser exploradas em ataques. Desenvolvimento de Software Seguro Marcio Quirino - 8 40. SDL é a sigla em inglês para ciclo de vida de desenvolvimento de software seguro. Assinale a alternativa que melhor descreve a etapa de teste. É realizada nos múltiplos estágios da implementação. Os testes de software não ocorrem conforme um processo linear de atividades. Eles devem ser previstos ainda na fase de elicitação dos requisitos e realizados nos diversos estágios a partir do desenvolvimento, considerando testes unitários, de integração, e testes realizados após a implantação e a cada nova implementação de atualização do sistema. 41. No contexto da segurança das aplicações de software, existem diversas entidades que se preocupam em fomentar práticas padronizadas para o ciclo de desenvolvimento de software seguro (SDL), seja para seu pessoal interno de desenvolvimento seja para desenvolver a área com estudos, eventos e publicações. Assinale a alternativa que apresenta três importantes órgãos que têm SDL publicado. Microsoft - SAFECode – OWASP O SDL envolve a identificação de possíveis ameaças e vulnerabilidades de segurança desde o início do processo de desenvolvimento de software e a adoção de medidas para mitigá-las. O processo normalmente inclui atividades como modelagem de ameaças, práticas seguras de codificação, análise de código, teste de penetração e teste de segurança e existem empresas desenvolvedoras que divulgam seu SDL e organismos preocupados em desenvolver tais práticas. Dentre eles, podemos citar: OWASP, SAFECode e Microsoft. O NIST e a ISO não definem SDLs. Eles possuem frameworks para segurança, mas sem definir um SDL. 42. As normas ISO são importantes fontes de consulta para várias áreas, incluindo negócios, tecnologia, qualidade, meio ambiente, saúde e segurança ocupacional. Essas normas fornecem diretrizes e padrões para ajudar empresas e organizações a melhorar a eficiência e a eficácia de suas operações. Na área de TI existe uma família de normas que trata de segurança da informação (SI), sendo fonte de consulta obrigatória para profissionais que trabalhem com gestão de SI. Assinale a alternativa que corresponde ao número da família de normas. 27000 A famíliade normas ISO 27000 aborda a gestão da segurança da informação em todos os aspectos, incluindo políticas de segurança, gestão de riscos, gestão de incidentes de segurança, gestão de continuidade de negócios, segurança física e lógica, entre outros. 43. A última etapa do SDL demanda ações relacionadas à implantação e manutenção do software. Sobre esse tema, leia as afirmativas a seguir e assinale a alternativa que melhor completa as lacunas. l. Os ___________________ após o lançamento. II. Os __________________ são atualizações regulares do software para solucionar falhas descobertas servem para otimizar a performance do software, assegurando seu bom funcionamento sob condições extremas. III. Os ________________ são medidas de recuperação de desastres capazes de retomar a operação com as informações sincronizadas a um momento anterior ao problema. I - patches de segurança; II - ajustes de desempenho; III - backups de dados Desenvolvimento de Software Seguro Marcio Quirino - 9 44. Considerando a implementação do sistema e o ciclo de vida de desenvolvimento de software seguro (SDL), a primeira etapa, de elicitação de requisitos, é considerada crítica porque define a base para todo o processo de desenvolvimento, se configurando no estágio que garante que a segurança seja integrada ao software desde o início. Dentre os requisitos a serem levantados, assinale a alternativa que apresenta o melhor exemplo: Autenticação e controle de acesso; proteção de dados; registro de auditoria; e conformidade normativa e legal 45. A SAFECode é uma organização dedicada a promover boas práticas para desenvolvimento de software seguros e confiáveis. Na quarta etapa do seu SDL a SAFECode propõe práticas de codificação segura, partindo da premissa de que o programador acaba inserindo vulnerabilidades não intencionais no código. Sobre essa etapa, leia as afirmativas e assinale a alternativa mais adequada. Os erros de programação que criam ameaças podem ser evitados e detectados: I - Usando padrões de codificação; II - Escolhendo bibliotecas consolidadas no mercado no quesito segurança; III - Usando ambiente de programação de linha de comando; e IV - Revisando manualmente o código. I - Verdadeiro; II - Verdadeiro; III - Falso; IV – Verdadeiro 46. Assinale a alternativa que melhor descreve a fase do modelo de ameaças na qual devem ser executadas as seguintes atividades: identificar metas do sistema, identificar ativos e identificar ameaças. Definir objetivos 47. A criatividade pode ser encarada como um produto de cognição humana. Dentro desse contexto, analise as sentenças a seguir: I-Toda vulnerabilidade de sistema é um bug de software e vice-versa. II-Software confiável e software seguro são dois conceitos distintos. III-Seguindo boas práticas de desenvolvimento de software seguro é possível garantir o lançamento de um sistema 100% livre de falhas. Marque a alternativa correta. Apenas II está correta 48. A validação do modelo de ameaças é a última etapa do processo de modelagem de ameaças de software. Assinale a alternativa sobre a etapa de validação do modelo de ameaças. I-É importante garantir que o modelo de ameaças seja consistente com as regras de segurança sem se preocupar com a prática delas. II-Uma vez encerrada, não há qualquer necessidade de revisar mais o modelo. III-Envolve verificar a precisão, completude e eficácia na identificação e mitigação de ameaças de segurança. Marque a alternativa correta. Apenas III está correta Desenvolvimento de Software Seguro Marcio Quirino - 10 49. Considerando a análise de risco pela relação probabilidade da ameaça versus impacto que ela pode gerar, assinale a categorização do risco que corresponde a uma baixíssima probabilidade de ameaça e um altíssimo impacto, considerando 5 níveis de classificação de risco: muito baixo, baixo, médio, alto e muito alto. Médio 50. Na modelagem de ameaças a etapa de identificação de ameaças usa o diagrama de fluxos de dados como insumo para o brainstorm de levantamento de ameaças. Assinale a alternativa que representa os elementos a serem levantados durante esse brainstorm. Agentes, vetores e ações de ameaças 51. Sobre a implementação do software, assinale a alternativa que melhor completa as lacunas, em referência ao ciclo de vida de desenvolvimento de software seguro. I - Durante a fase de __________ os desenvolvedores escrevem o código, criam a documentação e executam tarefas de garantia de qualidade. II - A utilização de _________ acelera a implementação de código e se configura em boa prática de segurança. III - As técnicas de codificação segura podem ajudar a tornar o software mais robusto e reduzir sua __________, parte exposta a ameaças de hacker. I - desenvolvimento; II - bibliotecas seguras; III - superfície de ataque 52. Na gestão de riscos de software, uma vez que os riscos sejam identificados, precisam ser tratados. Quais as três abordagens principais de tratamento de risco? Mitigados, aceitos e delegados 53. Assinale a alternativa que apresenta como é reconhecida a disciplina de segurança no modelo tradicional de desenvolvimento de software. É identificada como um requisito adicional aos requisitos funcionais das soluções de software, fazendo os times de implementação enxergarem a disciplina de segurança como uma fase posterior ao desenvolvimento das funcionalidades de negócio, sendo uma preocupação apenas nas fases de testes. No modelo tradicional de desenvolvimento de software, a disciplina de segurança é geralmente vista como um requisito adicional aos requisitos funcionais, e muitas vezes é considerada apenas uma fase posterior ao desenvolvimento das funcionalidades de negócio. Isso significa que a segurança é tratada como uma preocupação apenas nas fases de testes, e não é uma preocupação constante ao longo do processo de desenvolvimento. Esse modelo pode levar a problemas graves de segurança, já que as falhas de segurança podem ser descobertas tardiamente no processo de desenvolvimento, tornando mais difícil e caro corrigi-las. Desenvolvimento de Software Seguro Marcio Quirino - 11 54. Assinale a alternativa de como é reconhecida a disciplina de segurança no modelo DevSecOps de desenvolvimento de software. É considerada parte integrante do processo de desenvolvimento do software e permeia por todas as fases de seu ciclo de desenvolvimento, desde a ideação até sua operação e evolução. O modelo DevSecOps tem como um de seus principais pilares a integração da segurança ao longo de todo o ciclo de vida do desenvolvimento de software. A segurança é uma disciplina que deve estar presente em todas as etapas do ciclo de vida do software, desde o planejamento até a implantação e manutenção. A ideia é que a segurança seja incorporada desde o início do processo de desenvolvimento, em vez de ser tratada como uma fase posterior. Isso permite que as equipes identifiquem e corrijam problemas de segurança o mais cedo possível, minimizando o risco de falhas de segurança no produto final. 55. A automação é uma tecnologia amplamente utilizada no processo de desenvolvimento de software e em outras áreas. Sobre sua definição, podemos afirmar que automação é A tecnologia que permite tarefas repetitivas serem efetuadas de maneira automatizada; por exemplo, a realização de testes funcionais e de segurança, compilação de código, publicação de artefatos em ambientes etc. Automação é uma tecnologia que permite que tarefas repetitivas e rotineiras sejam executadas de forma automatizada, aumentando a eficiência e a qualidade do processo de desenvolvimento de software. A opção B é a única que destaca especificamente a execução automatizada de tarefas, como testes funcionais e de segurança, compilação de código, publicação de artefatos em ambientes, verificação de vulnerabilidades eprovisionamento de recursos, que são exemplos comuns de uso da automação em projetos de desenvolvimento de software. As outras opções abordam aspectos importantes da automação, mas não definem o seu conceito de forma precisa. 56. A orquestração é um conceito importante na cultura DevOps e DevSecOps. Assinale a alternativa que apresenta a definição correta para orquestração. É o conceito que se refere à capacidade de coordenar diferentes ferramentas e processos de automação para criar uma cadeia de eventos contínua. A orquestração é uma técnica muito utilizada em arquiteturas distribuídas, em que é necessário gerenciar a execução de diversas tarefas, processos e serviços, de forma a garantir que as dependências entre eles sejam satisfeitas e que a execução ocorra de maneira sequencial ou paralela, conforme a necessidade. 57. A modelagem de ameaças é importante para a implementação da segurança na cultura DevSecOps. Ela pode ser definida como Uma técnica para identificação e avaliação de possíveis ameaças à segurança em um sistema ou aplicação, que busca um modelo que represente todos os componentes e processos do sistema e permita avaliar as possíveis ameaças em cada etapa. A modelagem de ameaças é uma técnica de identificação e avaliação de possíveis ameaças à segurança em um sistema ou aplicação, que é utilizada em DevSecOps. Essa técnica consiste na criação de um modelo que representa todos os componentes e processos do sistema e permite avaliar as possíveis ameaças que podem surgir em cada etapa. A partir desse modelo, é possível identificar as vulnerabilidades e implementar medidas para mitigar os riscos e proteger o sistema contra possíveis ameaças. Desenvolvimento de Software Seguro Marcio Quirino - 12 58. Qual é a definição correta de controles de segurança? São medidas que devem ser implementadas para reduzir riscos e proteger sistemas contra ameaças e vulnerabilidades. Controles de segurança são medidas de segurança que devem ser implementadas em um sistema para minimizar os riscos e protegê-lo contra possíveis ameaças e vulnerabilidades. Eles são responsáveis por garantir que o sistema esteja em conformidade com as políticas de segurança estabelecidas e são implementados com base em avaliações de riscos e ameaças. Dentre os tipos de controles de segurança estão: controles físicos, controles técnicos e controles administrativos. 59. Qual a importância dos conceitos de conformidade e governança para a implementação de uma cultura de segurança em empresas que utilizam a abordagem DevSecOps? Conformidade refere-se ao cumprimento das leis, regulamentos e padrões estabelecidos para garantir a segurança das informações, e governança trata do conjunto de processos, políticas, normas e diretrizes para gerenciar e controlar a segurança da informação de uma organização. Conformidade e governança são conceitos fundamentais em segurança da informação e são de extrema importância para o sucesso de uma iniciativa DevSecOps. A conformidade refere-se ao cumprimento de leis, regulamentos e padrões estabelecidos com o objetivo de garantir a segurança dos dados e informações. A governança trata do conjunto de processos, políticas, normas e diretrizes que devem ser utilizados para gerenciar e controlar a segurança da informação de uma empresa. Ambos são essenciais para garantir a segurança dos sistemas e informações em uma iniciativa DevSecOps, garantindo que as práticas de segurança sejam aderentes aos requisitos regulatórios e padrões estabelecidos, e que os processos de segurança sejam eficazes e eficientes. 60. Sobre os regulamentos e padrões de segurança para o processo de DevSecOps, é correto afirmar que São documentos estabelecidos por governos e organizações com o objetivo de definir requisitos e diretrizes de segurança que as empresas devem seguir, fornecendo um conjunto de regras, normas técnicas e práticas recomendadas para garantir que as empresas implementem medidas de segurança adequadas para proteger operações, sistemas e dados. Os regulamentos e padrões de segurança são importantes para DevSecOps, pois fornecem um conjunto de diretrizes e requisitos que ajudam as empresas a implementarem medidas de segurança adequadas para proteger operações, sistemas e dados. Esses documentos estabelecem um conjunto de regras, normas técnicas e práticas recomendadas que ajudam as empresas a implementarem controles de segurança eficazes e a cumprir com as exigências regulatórias e de conformidade. Ao seguir esses regulamentos e padrões, as empresas podem aumentar a confiança dos clientes, evitar penalidades legais e melhorar a segurança geral do sistema. 61. Durante todo o desenvolvimento do conteúdo citamos diversos regulamentos e padrões que ajudam empresas a se prepararem para lidar com os riscos e ameaças de segurança. Regulamentos e Padrões de Segurança são documentos estabelecidos por governos e organizações com o objetivo de definir requisitos e diretrizes de segurança que as empresas devem seguir, fornecendo um conjunto de regras, normas técnicas e práticas recomendadas para garantir que as empresas implementem medidas de segurança adequadas para proteger suas operações, sistemas e dados. Qual é a norma que define os requisitos para um Sistema de Gestão de Segurança da Informação (SGSI)? ISO 27001 Desenvolvimento de Software Seguro Marcio Quirino - 13 62. Modelagem de ameaças é uma técnica utilizada em DevSecOps para identificação e avaliação de possíveis ameaças à segurança em um sistema ou aplicação. Qual é o objetivo da modelagem de ameaças em DevSecOps? Identificar e mitigar vulnerabilidades. 63. Considerando que Continuous Integration e Continuous Delivery são práticas de Engenharia de Software, como o DevSecOps complementa a prática de CI/CD (Continuous Integration/ Continuous Delivery)? Adicionando controles de segurança automatizados em todas as etapas do processo de entrega de software. 64. Continuous Integration (Integração Contínua) e Continuous Delivery (Entrega Contínua) são práticas de engenharia de software oriundos dos conceitos de Automação e Orquestração que são pilares fundamentais para as abordagens DevOps e DevSecOps. São práticas e técnicas tão importantes que é quase possível se afirmar que sem elas DevOps e DevSecOps não seriam possíveis, tamanho o benefício que as práticas trazem como suporte a DevOps e DevSecOps. Qual é o objetivo da prática de Continuous Integration (Integração Contínua)? Automatizar o processo de compilação, teste e implantação de código-fonte. 65. Tanto DevOps quanto DevSecOps tem como um de seus pilares a aplicação dos conceitos de Automação e Orquestração das atividades necessárias no desenvolvimento das soluções de software. Qual é o objetivo da orquestração no DevSecOps? Coordenar diferentes ferramentas e processos de automação. 66. Podemos observar que no processo de desenvolvimento de software não podemos apenas observar o conjunto de técnicas e ferramentas, mas também a cultura a ser empregada pelo time diante esse desenvolvimento. Sendo assim Como o DevSecOps promove a cultura de segurança no desenvolvimento de software? Permitindo que todos os membros da equipe sejam responsáveis pela segurança do software, não apenas os especialistas em segurança. 67. Scripts e estruturas de testes são práticas fundamentais para DevSecOps pois são os instrumentos utilizados pelas ferramentas de Integração Contínua e Entrega Contínua para garantir que os parâmetros de segurança estão sendo avaliados como parte das tarefas que garantem a qualidade e segurança do artefato de software em desenvolvimento. Qual é a finalidade dos scripts no contexto do DevSecOps? Integrar ferramentas de segurança ao pipeline de entrega contínua. 68. Existem várias estruturas de teste disponíveis para diferentes linguagens de programação e tecnologias. Algumas das estruturasde teste mais populares incluem JUnit para Java, NUnit para .NET, PyTest para Python e Jasmine para JavaScript. O uso de estruturas de teste ajuda a garantir que o software seja testado de maneira consistente e confiável, o que pode aumentar a eficiência do processo de desenvolvimento e melhorar a qualidade do software final. Quais são algumas das estruturas de teste importantes para a implementação de DevSecOps? Testes de unidade, testes de integração, testes de aceitação e testes de segurança. Desenvolvimento de Software Seguro Marcio Quirino - 14 69. Os Scripts de Teste podem assumir a forma de instruções de texto documentadas e executadas manualmente ou de instruções que podem ser lidas pelo computador para ativar a execução automática do teste. Nesse contexto, avalie as afirmativas relativas à importância dos scripts de teste no desenvolvimento de software? I. Permitem a automação de tarefas de segurança, como análise estática de código. II. Garantem que as vulnerabilidades de segurança sejam identificadas e corrigidas com mais eficiência. III. Permitem a execução repetitiva e consistente de testes, melhorando a eficácia do processo de desenvolvimento e segurança. Está correto o que se afirma em: I, II e III 70. Em uma conferência recente sobre Segurança da Informação, uma discussão se desencadeou sobre o conceito de conformidade no campo. Isso gerou uma série de definições potenciais. Qual é a definição de conformidade no contexto de Segurança da Informação? Cumprimento das leis, regulamentos e padrões estabelecidos para garantir a segurança dos dados e informações. 71. Garantir que um software seja seguro está longe de ser uma atividade trivial. Por isso mesmo, os desenvolvedores precisam utilizar diversas técnicas para reduzir as vulnerabilidades de um sistema e, assim, minimizar a exposição ao risco de ataques. Infelizmente, esse excesso de controles também pode gerar vulnerabilidades. Nesse sentido, selecione a opção correta que contém a vulnerabilidade associada ao excesso de tentativas de evitar vulnerabilidades. Complexidade do projeto. 72. Há situações em que devemos usar recursos de defesa ainda no projeto do software. Dessa forma, podemos investigar com melhor precisão em que parte do sistema existe uma vulnerabilidade ou esteja ocorrendo um ataque. Nesse sentido, selecione a opção correta com o princípio que trata da situação descrita no enunciado da questão. Defesa em profundidade 73. Um dos princípios de segurança que deve estar implementado em um software é o da integridade. A ideia dele é bem simples: garantir que os dados não sofram modificações indevidas. Agora, selecione a opção correta que contenha um controle que podemos implementar para auxiliar na manutenção da integridade dos dados: Assinatura digital 74. Uma situação bastante comum no desenvolvimento de software é fazer chamada a outro programas. Especialmente, quando os programas são de terceiros, há riscos de vulnerabilidade para segurança do nosso software. Nesse sentido, selecione uma opção que apresente um exemplo de risco ao chamarmos um programa de terceiros de dentro do nosso software: Um invasor interceptar os dados na chamada do programa. 75. O controle de permissões, normalmente, é referenciado como uma boa prática que auxilia nas reduções de vulnerabilidades. Na prática, porém, ela pode oferecer alguns desafios. Nesse sentido, selecione a opção correta que contém uma possível vulnerabilidade associada ao controle de permissões: Fazer configurações inadequadas. Desenvolvimento de Software Seguro Marcio Quirino - 15 76. Existem algumas formas de utilizarmos ferramentas para automatizarmos os testes de segurança de um sistema. Um desses testes realiza a busca por vulnerabilidades dentro do próprio código do sistema. Nesse sentido, selecione a opção correta com o nome desse tipo de teste: Análise estática. 77. A gestão de riscos de segurança de software é uma prática importante que ajuda a proteger os sistemas e os dados da empresa contra ameaças cibernéticas. Assinale a alternativa que apresenta a ordem correta das atividades envolvidas com a gestão de riscos de segurança de software: Identificação; Avaliação; Tratamento; e Prevenção 78. Muitas são as organizações que sugerem estruturas metodológicas para construção de software seguro. A OWASP, uma dessas organizações, promove um framework voltado para este fim. Sobre esse framework, leia as afirmativas a seguir e assinale a alternativa mais adequada a indicar cada uma das fases apresentadas pelas afirmativas: I. O objetivo desta fase é identificar e documentar as falhas de segurança que possam se configurar em ameaças. II. Nesta fase o aplicativo é desenvolvido tomando por base o emprego de práticas de codificação seguras. III. Nesta fase o aplicativo é acompanhado passando por monitoramento constante a fim de que sejam detectadas ameaças de segurança. Marque a alternativa correta: I - modelagem de ameaças; II - implementação; III - pós-lançamento 79. Em uma recente reunião de equipe de TI, o CTO mencionou a adoção da prática de DevSecOps para melhorar o processo de desenvolvimento de software. Isso levantou questões sobre as possíveis vantagens desta abordagem. Qual o benefício, entre as opções a seguir, do DevSecOps no desenvolvimento de software? Melhoria da qualidade do software. 80. Tanto DevOps quanto DevSecOps tem como um de seus pilares a aplicação dos conceitos de Automação e Orquestração das atividades necessárias no desenvolvimento das soluções de software. Por que a automação é fundamental para o DevSecOps? Para executar tarefas repetitivas de maneira automatizada. 81. O termo segurança nos remete a uma situação de proteção. Ele também é utilizado no contexto de software. Nesse sentido, selecione a opção correta sobre o que é um software seguro: É um programa que aplica diversas práticas de segurança para reduzir a exposição a vulnerabilidades. 82. Os sistemas atuais envolvem diversas configurações. Isso torna o processo de desenvolvimento mais complexo e, assim, aumenta as chances de que existam vulnerabilidades no código. Neste sentido, selecione a opção correta que apresenta a forma correta de reduzir as vulnerabilidades causadas por configurações inadequadas. Treinar responsáveis para fazer as configurações dos componentes. 83. Existem muitos protocolos seguros. Um desses protocolos é o HTTPS. Nesse sentido, selecione a opção correta que trata do objetivo do protocolo HTTPS. Protege os dados que são transmitidos na rede. Desenvolvimento de Software Seguro Marcio Quirino - 16 84. Existem diversos tipos de ataques a sistemas. Em um desses ataques, o invasor entra com um código malicioso que pode comprometer a segurança do software. Neste sentido, selecione a opção correta com o nome desse tipo de ataque: Injeção de código. 85. Uma das formas de aumentar a segurança do processamento dos dados é através da autenticação dos usuários. Nesse sentido, selecione a opção correta que contenha um exemplo de autenticação segura. Autenticação multifator. 86. O SDL da Microsoft estabelece testes de três naturezas para encontrar falhas nos seus sistemas. Assinale a alternativa que apresenta os três tipos de teste propostos. Teste de penetração; teste estático; e teste dinâmico 87. Considerando a implementação de software seguro e seu ciclo de vida de desenvolvimento (SDL), assinale a alternativa relacionada correta as afirmações a seguir. I - O teste __________ se presta a garantir que o software execute as funções planejadas. II - O teste __________ tem como objetivo buscar vulnerabilidades e pontos fracos de segurança. III - O teste _____________ envolve verificar a garantia de funcionamento adequado sob cenários de estresse de acesso, assegurando sua disponibilidade. IV - O teste __________ se destinaa assegurar que o software seja fácil de usar e atenda às necessidades do usuário. I - funcional; II – de seguranç; III – de desempenho; IV - de usabilidade. 88. Enquanto DevOps tem como objetivo principal acelerar o processo de desenvolvimento de software através de práticas de engenharia de software, automação de processos de desenvolvimento, automação de builds e integração frequente e contínua de pequenos artefatos de software entre outros conceitos, DevSecOps busca alinhar as práticas de desenvolvimento ágil com a segurança da informação, garantindo que a segurança seja parte integrante do processo de desenvolvimento. Desta forma, como o DevSecOps aborda a disciplina de segurança no desenvolvimento de software? A segurança é considerada em todas as fases do ciclo de vida de desenvolvimento. 89. As estruturas de teste são uma parte fundamental do processo de desenvolvimento de software, especialmente em um ambiente DevSecOps, onde a automação e a orquestração de testes são essenciais para garantir a segurança e qualidade do software. O que são estruturas de teste no contexto de desenvolvimento de software? Conjuntos de ferramentas, bibliotecas e convenções para criar e executar testes automatizados.