Sistemas de Software Seguros
Ano Letivo: 2015/16
Departamento: Informática
Carga horária: T: 2:00 h; TP: 1:30 h; OT: 2:00 h;
Área Científica: Informática;
Objetivos da Unidade Curricular
O número de ataques informáticos registados nos úlltimos anos tem tido um crescimento aproximadamente exponencial. Sob o ponto de vista da integridade dos sistemas e da confidencialidade dos dados, a segurança do computador é uma das áreas que merece maior atenção, sendo importante se atingir o objectivo (ainda que díficil) da construção de software sem vulnerabilidades. Por exemplo, a comunicação de algumas aplicações de comércio electrónico ou home banking é eficazmente protegida pelo protocolo SSL, enquando as máquinas dos clientes são atacadas por worms que roubam as passwords de acesso.
O tema desta cadeira é a segurança da máquina, nomeadamente do seu software, por contraposição à segurança da comunicação/rede. A cadeira pretende abordar os principais temas necessários para compreender o problema, incluindo também a discussão de alguns tópicos mais avançados que se encontram actualmente no domínio da investigação.
Pré-requisitos
Sem pré-requisitosConteúdos
Componente Teórica
- Segurança e Desenvolvimento de Software
- Protecção em Sistemas Operativos Convencionais
- Buffer Overflows
- Validação de Input (Web e BDs)
- Condições de Corrida
- Testes de Segurança (Injecção de Ataques e Análise Estática)
Componente Teórico-prática
Aulas hands-on sobre os seguintes temas:
- Segurança e Desenvolvimento de Software
- Protecção em Sistemas Operativos Convencionais
- Buffer Overflows
- Validação de Input (Web e BDs)
- Condições de Corrida
- Testes de Segurança (Injecção de Ataques e Análise Estática)
Descrição detalhada dos conteúdos programáticos
Componente Teórica
O programa da disciplina está dividido em três partes. Na primeira parte é feita uma panorâmica da segurança de software e de mecanismos de protecção básicos. Na segunda parte são descritas as classes principais de vulnerabilidades e como é que podem ser prevenidas. Na terceira parte são descritas técnicas e ferramentas para melhorar a segurança de software.
Os principais temas abordados em cada uma das três partes são indicados de seguida:
1ª Parte – Panorâmica
- Motivação
- Segurança e Desenvolvimento de Software
- Protecção em Sistemas Operativos Convencionais
2ª Parte – Vulnerabilidades
- Buffer Overflows
- Validação de Input
- Vulnerabilidades em Aplicações Web (Cross site scripting, injecção, ...)
- Vulnerabilidades relacionadas com Sistemas de Gestão de Bases de Dados (injecção de SQL, ...)
- Corridas
3ª Parte – Técnicas/Ferramentas
- Teste de Software e Injecção de Ataques
- Análise Estática de Código
- Auditoria de software
Componente Teórica-Prática
As aulas teórico-práticas têm o objectivo de complementar os tópicos tratados nas aulas teóricas, através do tratamento de temas mais específicos, a realização de trabalhos no laboratório, e de suporte aos projectos.
Bibliografia
Recomendada
Miguel Correia, Paulo Sousa, Software Seguro, FCA editora, 2010.
Outros elementos de estudo
J. Viega, G. McGraw, Building Secure Software, Addison-Wesley, 2002.
M. Howard, D. LeBlanc, Writing Secure Code, 2nd edition, Microsoft Press, 2003.
C. Wysopal, The Art of Software Security Testing, Addison-Wesley, 2006.
B. Chess, J. West, Secure Programming with Static Analysis, Addison-Wesley, 2007.
Métodos de Ensino
As aulas estão organizadas em aulas teóricas, aulas teórico-práticas e laboratórios.
* Aulas teóricas: exposição dos temas do curso.
* Sessões teórico-práticas: exposição de material com mais detalhes (por exemplo, protocolos ou pacote de interfaces ou internos), e permitir um conhecimento mais profundo e prático sobre esses temas.
* Sessões de laboratório: têm por objectivo permitir ao aluno trabalhar nos mini-projectos e no projeto.
Métodos de Avaliação
Avaliação: 10% - Apresentação e discussão de um artigo técnico relacionado; 5% - Através de um conjunto de mini-projetos nas aulas teórico-práticas; 30% - um projeto e a apreciação e discussão individual dos resultados obtidos; 55% - Exame final
Língua de ensino
Português ou inglês