Análise e Exploração de Vulnerabilidades

Informação

Corpo docente: Nuno Silva

Duração: Semestral

Horas de trabalho: 162

Horas de contacto: 45

ECTS: 6

Área científica: Informática

Objetivos

  • Possuir conhecimento teórico e prático sobre as técnicas para o desenvolvimento de software robusto.
  • Possuir competências para avaliar e testar a segurança de um software, com código conhecido ou não.
  • Possuir conhecimento que permita evitar erros típicos no desenvolvimento.
  • Possuir conhecimento sobre as técnicas de análise estáticas e dinâmicas.
  • Conseguir desenvolver e operar aplicações com requisitos de segurança.

Resultados de Aprendizagem

  • Possuir conhecimento teórico e prático sobre as técnicas para o desenvolvimento de software robusto.
  • Possuir competências para avaliar e testar a segurança de um software, com código conhecido ou não.
  • Possuir conhecimento que permita evitar erros típicos no desenvolvimento.
  • Possuir conhecimento sobre as técnicas de análise estáticas e dinâmicas.
  • Conseguir desenvolver e operar aplicações com requisitos de segurança.

Avaliação

A avaliação do conhecimento de conceitos teóricos irá ser realizada através de testes, contribuindo com 50% da nota final da disciplina.

A avaliação das capacidades de aplicação técnicas e do desenvolvimento de software seguro será avaliado através de trabalhos práticos e projetos práticos, contribuindo com 50% da nota final da disciplina.

Metodologia

A disciplina considera sessões teóricas e sessões práticas. As sessões teóricas serão dedicadas à apresentação e discussão dos conteúdos programáticos, favorecendo-se o diálogo com os alunos para a discussão de casos de uso. As sessões práticas serão dedicadas à exploração de exemplos e casos de uso, aplicação de técnicas e realização de análises. Complementarmente, considera-se a existência de trabalhos e projetos, realizados em grupo e com uma maior dimensão, que permita a aplicação dos conteúdos em situações de maior complexidade. Será favorecida a utilização de cenários próximos da realidade e de ferramentas e problemas no estado da arte.

Conteúdos

  • Princípios seguros de design de software
  • Ciclo de vida de segurança de software
  • Atributos de qualidade de software
  • Requisitos de Segurança
  • Ataques comuns de software
  • Programação segura para evitar erros comuns (CWE), 7 pernicious kingdoms
  • Rastreabilidade das ações
  • Técnicas de análise estática
  • Técnicas de análise dinâmica com injeção de falhas (fuzzing)
  • Testes de segurança (caixa preta e caixa branca) e validação
  • Técnicas de Desenvolvimento e Operações com Segurança (DevSecOps)
  • Aspetos específicos das linguagens comuns
  • Canais paralelos

Bibliografia recomendada

  • Merkow, M. S., & Raghavan, L. (2010). Secure and resilient software development. Auerbach Publications. ISBN 978-1439826966
  • Richardson, T., & Thies, C. N.(2013). Secure software design. Jones & Bartlett Publishers. ISBN 978-1449626327
  • Mead, N. R., & Woody, C. (2016). Cyber Security Engineering: A Practical Approach for Systems and Software Assurance. Addison-Wesley Professional. ISBN 978-0134189802.