Segurança no Software

Dois dos autores do blog andamos há anos a ensinar segurança de software e dedicámos os últimos muitos meses a passar as nossas ideias sobre o assunto para papel. O livro chegou às lojas esta semana. Online está disponível por exemplo na própria editora (FCA), na FNAC e na WOOK.



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