Sobre o Livro

Título: Segurança no Software
Autor: Miguel Pupo Correia / Paulo Jorge Sousa
ISBN: 978-972-722-662-7
Nº págs.: 480
Formato: 17,0 x 24,0 cm


O Livro

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
  • 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


Público-Alvo
  • Alunos de Licenciaturas, Mestrados e Doutoramentos.
  • Profissionais de Informática.

Slides / acetatos

Caso pretenda adoptar o livro numa cadeira do Ensino Superior, temos slides/acetatos Powerpoint para todos os capítulos do livro. Pedidos para miguel.p.correia_AT_ist.utl.pt

Os Autores


Miguel Correia is an Associate Professor at Instituto Superior Técnico of the Universidade Técnica de Lisboa. He is a researcher at INESC-ID, in the Distributed Systems Group. Until recently he was with the University of Lisboa Faculty of Sciences, LASIGE and the Navigators. He has been involved in several international and national research projects related to intrusion tolerance and security, including the TCLOUDS, MAFTIA and CRUTIAL EC-IST projects, and the ReSIST NoE. He has more than 60 publications in international journals, conferences and workshops. His main research interests are: security, intrusion tolerance, distributed  systems, distributed algorithms, cloud computing. He created and is in the Steering Committe of the international Workshop on Recent Advances in Intrusion-Tolerant Systems, with its 5th edition in 2011. More information about me is available at http://homepages.gsd.inesc-id.pt/~mpc/

Paulo Sousa is currently Director of Research & Innovation at Maxdata. He was Invited Assistant Professor (Professor Auxiliar Convidado) at the Department of Informatics of the Faculty of Sciences of the University of Lisboa, Portugal, between 2007 and 2010. He received a PhD degree in Computer Science (Informatics) from the University of Lisboa in 2007, and won the IBM Scientific Award in the same year. He was a member of the Navigators Group, part of the LaSIGE – Large Scale Informatic Systems Laboratory, between 2001 and 2010. More information about him at http://paulosousa.me/

Algumas citações de motivação ao livro

"(...) security in software requires a fundamentally different business model from that which exists today. In fact, the current state of security in commercial software is rather distasteful, marked by embarrassing public reports of vulnerabilities and actual attacks, scrambling among developers to fix and release patches, and continual exhortations to customers to perform rudimentary checks and maintenance."
Jim Routh, Forcing Firms to Focus: Is Secure Sofware in Your Future, in Beautiful Security, O'Reilly, 2010

"We wouldn’t have to spend so much time, money, and effort on network security if we didn’t have such bad software security. Think about the most recent security vulnerability about which you’ve read. Maybe it’s a killer packet that allows an attacker to crash some server by sending it a particular packet. Maybe it’s one of the gazillions of buffer overflows that allow an attacker to take control of a computer by sending it a malformed message. Maybe it’s an encryption vulnerability that allows an attacker to read an encrypted message or to fool an authentication system. These are all software issues."
John Viega e Gary McGraw. Building Secure Software. Addison Wesley 2002.

"S&P: Modern encryption plays a big role in commerce. Given the strength of today’s algorithms and implementations, what are the current weak links in an end-to-end system?
Zimmermann: I think the weak links are mostly the operating systems, mostly Windows. The encryption is strong enough that you usually don’t have to worry about someone breaking the encryption. Think of encryption as having a steel door on your house that’s three feet thick – but someone could bust a window, stick their hand in, turn the doorknob, and open the door – because of the OS."
Phil Zimmermann (criador do PGP), entrevista à IEEE Security & Privacy, Jan/Feb 2006

"We at Oracle have (...) determined that most developers we hire have not been adequately trained in basic secure coding principles (...) We have therefore had to develop and roll out our own in-house security training program at significant time and expense. (...) In the future, Oracle plans to give hiring preference to students who have received such training and can demonstrate competence in software security principles."
Mary Ann Davidson, Chief Security Officer da Oracle, carta enviada às 10 principais universidades americanas entre as quais a ORACLE contrata engenheiros (2008)

Vídeos da Sessão de Lançamento

Depois de obtidas as devidas autorizações, disponibilizamos finalmente os vídeos da sessão de lançamento do livro, que se realizou no passado dia 19 de Outubro na FNAC do Colombo.

A apresentação do livro foi feita pelo Prof. Paulo Veríssimo (Professor Catedrático da Faculdade de Ciências da Universidade de Lisboa) e pelo Dr. João Barreto (Managing Partner da SysValue e Docente da Universidade Católica):

Vídeo da intervenção do Prof. Paulo Veríssimo
Vídeo da intervenção do Dr. João Barreto

A abertura da sessão ficou a cargo do Eng. Frederico Annes, Director da FCA. No final da sessão nós os autores também dissemos algumas palavras. Ao todo foram 5 intervenções, que se encontram disponíveis abaixo pela ordem com que decorreram:

Abertura: Frederico Annes
Apresentação: Paulo Veríssimo e João Barreto
Autores: Paulo Jorge Sousa e Miguel Pupo Correia

Índice

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.11 Comunicaçã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.3 Codificação
14 Segurança na Linguagem de Programação
  • 14.1 Objectivos e arquitectura
  • 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

Recursos na Internet

Os recursos apresentados no fim do livro em formato "clicável":

Blogs, Fóruns, Portais e Projectos
Ars Technica Security http://arstechnica.com/security/
Blog Segurança Informática http://www.seguranca-informatica.net/
CASEScontact.org Information Security Portal http://casescontact.org/
CERT Technical Cyber Security Alerts http://www.us-cert.gov/cas/techalerts/
Common Vulnerability and Exposures http://cve.mitre.org/
Common Weakness Enumeration http://cwe.mitre.org/
Google code for educators http://code.google.com/edu/
Google Online Security Blog http://googleonlinesecurity.blogspot.com/
Homeland Security News Wire http://homelandsecuritynewswire.com/
Honeynet Project http://www.honeynet.org/
InformIT Security Reference Guide http://www.informit.com/guides/guide.aspx?g=security
Leurrecom.org Honeypot project http://www.leurrecom.org/
Mary Ann Davidson Blog Oracle http://blogs.oracle.com/maryanndavidson/
Microsoft Malware Protection Center http://blogs.technet.com/mmpc/
Microsoft Security Developer Center http://msdn2.microsoft.com/en-us/security/
Microsoft Security Response Center http://blogs.technet.com/msrc/
National Information Assurance Partnership http://www.niap-ccevs.org/
NVD - National Vulnerability Database http://nvd.nist.gov/
Open Trusted Computing http://www.opentc.net/
OSVDB - Open Source Vulnerability Database http://osvdb.org/
Software Assurance Metrics And Tool Evaluation (SAMATE) https://samate.nist.gov/
SANS Internet Storm Center http://isc.sans.org/
SANS Top Cyber Security Risks http://www.sans.org/top20/
Schneier on Security http://www.schneier.com/blog/
Security Development Lifecycle http://blogs.msdn.com/sdl/
SecurityFocus newsletter http://www.securityfocus.com/
Symantec DeepSight Threat Management System https://tms.symantec.com/
VMware Security Blog http://blogs.vmware.com/security/
Yahoo! Security Center http://security.yahoo.com/

Conferências e Publicações Periódicas
ACM Conference on Computer and Communications Security http://www.acm.org/sigs/sigsac/ccs.html
ACSA Annual Computer Security Applications Conference http://www.acsac.org/
Black Hat Briefings http://www.blackhat.com/
IEEE/IFIP International Conference on Dependable Systems and Networks http://www.dsn.org/
IEEE International Symposium on Secure Software Engineering http://www.jmu.edu/iiia/issse/
IEEE Security & Privacy Magazine http://www.computer.org/security/
IEEE Symposium on Security and Privacy http://www.ieee-security.org/TC/SP-Index.html
ISOC Network and Distributed System Security Symposium http://www.isoc.org/isoc/conferences/ndss/

Organizações
Associação do Comércio Electrónico em Portugal http://www.comercioelectronico.pt/
Associação para a Promoção e Desenvolvimento da Sociedade da Informação http://www.apdsi.pt/
CERT Coordination Center http://www.cert.org/
Comissão Nacional de Protecção de Dados http://www.cert.pt/
Departamento de Informática da FCUL http://www.di.fc.ul.pt/
European Network and Information Security Agency http://www.enisa.europa.eu/
Information Assurance Technology Analysis Center http://iac.dtic.mil/iatac/
Mestrado em Segurança Informática http://msi.di.fc.ul.pt
PHP Security Consortium http://phpsec.org/
Software Assurance Forum for Excellence in Code (SAFECode) http://www.safecode.org/
SANS Software Security Institute http://www.sans-ssi.org/
Web Application Security Consortium http://www.webappsec.org/