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.