
Descrição
O principal objectivo deste livro consiste em responder à questão sobre como desenvolver software seguro. No entanto, o seu âmbito é mais lato, já que trata a segurança de software, um tema que inclui outros aspectos como a auditoria de software e a protecção de software em produção.
O livro aborda este tema em quatro partes. A primeira apresenta uma panorâmica sobre a segurança de software, introduzindo conceitos básicos, princípios de projecto e os mecanismos de protecção dos sistemas operativos convencionais. A segunda parte apresenta as principais classes de vulnerabilidades actuais, bem como aquilo que o programador deve fazer para não as criar quando desenvolve software. A terceira parte aborda o problema de uma perspectiva diferente: apresenta um conjunto de técnicas e ferramentas que podem ser usadas para tornar mais seguro o software que já existe e que pode ter grande dimensão. A quarta parte apresenta um conjunto de tópicos avançados, ou seja, de técnicas que poderão, num futuro próximo, ser usadas para melhorar a segurança de software.
O livro foi escrito tendo em vista dois tipos de leitores. Por um lado, pretende servir de manual para disciplinas de segurança de software a nível universitário: licenciatura e pós-graduação. Por outro lado, destina-se ao profissional da informática interessado em desenvolver software seguro, ou em auditar ou proteger software já existente.
Principais Tópicos
Ao longo do livro são abordados, entre outros, os seguintes temas:
* Vulnerabilidades, ataques e intrusões;
* Buffer overflows, cross-site scripting, SQL injection
* Cópia e modificação de software
* Teste de software e injecção de ataques
* Análise estática de código
* Mecanismos de protecção dinâmica
* Virtualização
* Trusted Computing
Índice do livro
Prefácio
Introdução
Segurança informática e Internet
Software (in)seguro
Sobre o livro
Parte I - Panorâmica e Protecção
1. Segurança e Desenvolvimento de Software
1.1 Conceitos básicos
1.2 Desenvolvimento de software
1.3 Princípios de projecto
2. Protecção em Sistemas Operativos
2.1 Protecção de recursos
2.2 Controlo de acesso
Parte II - Vulnerabilidades
3. Buffer Overflows
3.1 Vulnerabilidades e sua prevenção
3.2 Overflows na heap
3.3 Overflows na pilha
3.4 Buffer overflows avançados
3.5 Vulnerabilidades de inteiros
4. Corridas
4.1 Corridas e atomicidade
4.2 TOCTOU
4.3 Ficheiros temporários
4.4 Concorrência e funções reentrantes
5. Validação de Input
5.1 Confiança, confiabilidade e input
5.2 Metadados e metacaracteres
5.3 Vulnerabilidades de string de formato
6. Aplicações Web
6.1 Da World Wide Web às aplicações web
6.2 Top10 de vulnerabilidades
6.3 Injecção
6.4 Cross Site Scripting
6.5 Autenticação e gestão de sessões
6.6 Referência directa a objectos
6.7 Cross Site Request Forgery
6.8 Configuração insegura
6.9 Armazenamento criptográfico inseguro
6.10 Falha na restrição de acesso a URLs.
6.11Comunicação insegura
6.12 Redireccionamentos não validados
7 Bases de Dados
7.1 Bases de dados e SQL
7.2 Injecção de SQL
7.3 Técnicas de injecção de SQL
7.4 Outras vulnerabilidades
8. Cópia e Modificação de Software
8.1 Cópia ilegal de software
8.2 Engenharia reversa
8.3 Fraude em aplicações em rede
III Técnicas e Ferramentas
9. Auditoria de Software
9.1 Modelação de ataques
9.2 Revisão manual de código
10. Teste de Software e Injecção de Ataques
10.1 Teste de software e segurança
10.2 Injecção de ataques
10.3 Fuzzers
10.4 Varredores de vulnerabilidades
10.5 Proxies
11 Análise Estática de Código
11.1 Análise estática básica
11.2 Análise semântica
11.3 Funcionamento das ferramentas
11.4 Comentários finais
12. Protecção Dinâmica
12.1 Detecção com canários
12.2 Pilha e heap não executáveis
12.3 Aleatorização e ofuscamento
12.4 Verificação de integridade
12.5 Filtragem
13. Validação e Codificação
13.1 Expressões regulares
13.2 Validação
13.3Codificação
14 Segurança na Linguagem de Programação
14.1Objectivosearquitectura
14.2 Sandboxes
14.3 Segurança das convenções da linguagem
IV - Tópicos Avançados
15. Virtualização e Segurança
15.1 Conceitos básicos e história
15.2 Concretização de VMMs
15.3 Aplicações em segurança
15.4 Vulnerabilidades da virtualização
16. Trusted Computing
16.1 Hardware para segurança
16.2 Trusted Platform Module
16.3 Aplicações do TPM
16.4 Futuro da trusted computing
17. Tolerância a Intrusões Distribuída
17.1 Conceitos básicos de tolerância a intrusões
17.2 Replicação: garantindo disponibilidade e integridade
17.3 Fragmentação: garantindo disponibilidade, integridade e confidencialidade
17.4 Recuperação proactiva
17.5 Arquitecturas e sistemas
17.6 Problemas abertos e o futuro
Conclusão
Referências Bibliográficas
Recursos na Web
Índice Remissivo
Mais informação no site da FCA.
Actualização a 04/10/2010: está disponível o sítio do livro