Segurança no Software (2 ª Ed. At. e Aum.)

Page 1


IPR

EDIÇÃO FCA – Editora de Informática, Lda. Av. Praia da Vitória, 14 A – 1000-247 Lisboa Tel: +351 213 511 448 fca@fca.pt www.fca.pt DISTRIBUIÇÃO Lidel – Edições Técnicas, Lda. Rua D. Estefânia, 183, R/C Dto. – 1049-057 Lisboa Tel: +351 213 511 448 lidel@lidel.pt www.lidel.pt LIVRARIA Av. Praia da Vitória, 14 A – 1000-247 Lisboa Tel: +351 213 511 448 * Fax: +351 213 522 684 livraria@lidel.pt Copyright © 2017, FCA – Editora de Informática, Lda. ISBN edição impressa: 978-972-722-858-4 2.ª edição atualizada e aumentada impressa: setembro 2017 1.ª edição: setembro 2010 Impressão e acabamento: Tipografia Lousanense, Lda. – Lousã Depósito Legal n.º 430789/17 Capa: José M. Ferrão – Look-Ahead

Marcas Registadas de FCA – Editora de Informática, Lda. –

®

®

®

Todos os nossos livros passam por um rigoroso controlo de qualidade, no entanto aconselhamos a consulta periódica do nosso site (www.fca.pt) para fazer o download de eventuais correções. Não nos responsabilizamos por desatualizações das hiperligações presentes nesta obra, que foram verificadas à data de publicação da mesma. Os nomes comerciais referenciados neste livro têm patente registada. Reservados todos os direitos. Esta publicação não pode ser reproduzida, nem transmitida, no todo ou em parte, por qualquer processo eletrónico, mecânico, fotocópia, digitalização, gravação, sistema de armazenamento e disponibilização de informação, sítio Web, blogue ou outros, sem prévia autorização escrita da Editora, exceto o permitido pelo CDADC, em termos de cópia privada pela AGECOP – Associação para a Gestão da Cópia Privada, através do pagamento das respetivas taxas.


ÍNDICE ÍNDICE ÍNDICE OS AUTORES ............................................................................................................................................................................................XI OS AUTORES ............................................................................................................................................................................................ XI OS AUTORES ............................................................................................................................................................................................ XI PREFÁCIO ................................................................................................................................................................................................ XIII OSOS AUTORES AUTORES ............................................................................................................................................................................................ ............................................................................................................................................................................................ XI XI PREFÁCIO ................................................................................................................................................................................................ XIII PREFÁCIO ................................................................................................................................................................................................ XIII INTRODUÇÃO .............................................................................................................................................................................................. PREFÁCIO PREFÁCIO ................................................................................................................................................................................................ ................................................................................................................................................................................................ XIII1XIII INTRODUÇÃO .............................................................................................................................................................................................. INTRODUÇÃO .............................................................................................................................................................................................. SEGURANÇA INFORMÁTICA E INTERNET.................................................................................................................311 11 INTRODUÇÃO INTRODUÇÃO .............................................................................................................................................................................................. .............................................................................................................................................................................................. SOFTWARE (IN)SEGURO .................................................................................................................................................. 4 SEGURANÇA INFORMÁTICA E INTERNET .................................................................................................................3 SEGURANÇA INFORMÁTICA E .................................................................................................................3 SEGURANÇA SEGURANÇA INFORMÁTICA INFORMÁTICA E INTERNET INTERNET E INTERNET .................................................................................................................3 .................................................................................................................3 SEGURANÇA DE SOFTWARE E O LIVRO ................................................................................................................. 54 4 SOFTWARE (IN)SEGURO .................................................................................................................................................. SOFTWARE (IN)SEGURO .................................................................................................................................................. SOFTWARE SOFTWARE (IN)SEGURO (IN)SEGURO .................................................................................................................................................. .................................................................................................................................................. 44 A 2.ª EDIÇÃO …………... ....................................................................................................................................................... 85 5 SEGURANÇA DE SOFTWARE E LIVRO O LIVRO ................................................................................................................. SEGURANÇA DE SOFTWARE E ................................................................................................................. SEGURANÇA SEGURANÇA DEDE SOFTWARE SOFTWARE EO O E LIVRO O LIVRO ................................................................................................................. ................................................................................................................. 55 AGRADECIMENTOS ............................................................................................................................................................ 98 8 A 2.ª EDIÇÃO …………... ....................................................................................................................................................... A EDIÇÃO …………... ....................................................................................................................................................... A 2.ª 2.ª A 2.ª EDIÇÃO EDIÇÃO …………... …………... ....................................................................................................................................................... ....................................................................................................................................................... 88 AGRADECIMENTOS ............................................................................................................................................................ 9 AGRADECIMENTOS ............................................................................................................................................................ 9 AGRADECIMENTOS AGRADECIMENTOS ............................................................................................................................................................ ............................................................................................................................................................ 99

PARTE I – PANORÂMICA E PROTEÇÃO ....................................................................................................... 11 PARTE PANORÂMICA ....................................................................................................... PARTE II – PANORÂMICA E PROTEÇÃO ....................................................................................................... 11 PARTE PARTE –II – – PANORÂMICA PANORÂMICA EE PROTEÇÃO E PROTEÇÃO PROTEÇÃO ....................................................................................................... ....................................................................................................... 11 1111

1 CONCEITOS DE SEGURANÇA DE SOFTWARE 13 CONCEITOS DE SEGURANÇA DE SOFTWARE 13 11 11 1.1 CONCEITOS DE SEGURANÇA DE SOFTWARE 13 VULNERABILIDADES ....................................................................................................................................................... 14 CONCEITOS CONCEITOS DEDE SEGURANÇA SEGURANÇA DEDE SOFTWARE SOFTWARE 13 13 1.2 ................................................................................................................................................... 19 1.1 ATAQUES………………….. VULNERABILIDADES ....................................................................................................................................................... 14 1.1 VULNERABILIDADES ....................................................................................................................................................... 14 1.1 1.1 VULNERABILIDADES VULNERABILIDADES ....................................................................................................................................................... ....................................................................................................................................................... 14 14 1.3 VS. SEGURANÇA ......................................................................................................................... 25 1.2 CONFIABILIDADE ATAQUES………………….. ................................................................................................................................................... 19 1.2 ................................................................................................................................................... 19 1.21.2 ATAQUES………………….. ATAQUES………………….. ATAQUES………………….. ................................................................................................................................................... ................................................................................................................................................... 19 19 EXERCÍCIOS .................................................................................................................................................................................... 28 1.3 CONFIABILIDADE CONFIABILIDADE VS. SEGURANÇA ......................................................................................................................... 25 1.3 VS. SEGURANÇA ......................................................................................................................... 25 1.31.3 CONFIABILIDADE CONFIABILIDADE VS. VS. SEGURANÇA SEGURANÇA ......................................................................................................................... ......................................................................................................................... 2525 EXERCÍCIOS .................................................................................................................................................................................... 28 EXERCÍCIOS .................................................................................................................................................................................... 28 EXERCÍCIOS EXERCÍCIOS .................................................................................................................................................................................... .................................................................................................................................................................................... 2828 2 SEGURANÇA E DESENVOLVIMENTO DE SOFTWARE 29 2 SEGURANÇA SEGURANÇA E DESENVOLVIMENTO DE SOFTWARE 29 2 DESENVOLVIMENTO DE SOFTWARE 29 ASPETOSE DESENVOLVIMENTO DE SOFTWARE SEGURO..................................................................... 29 2 2 2.1 SEGURANÇA SEGURANÇA E DE DESENVOLVIMENTO E DESENVOLVIMENTO DEDE SOFTWARE SOFTWARE 2929 2.2 ............................................................... 34 2.1 PROCESSOS ASPETOS DE DESENVOLVIMENTO DE SOFTWARE SEGURO ..................................................................... 29 2.1 ASPETOS DE DESENVOLVIMENTO DE SOFTWARE SEGURO ..................................................................... 29 2.12.1 ASPETOS ASPETOS DEDE DESENVOLVIMENTO DESENVOLVIMENTO DEDE SOFTWARE SOFTWARE SEGURO SEGURO ..................................................................... ..................................................................... 2929 MODELO EM CASCATA E MODELO EM ESPIRALSEGURO ............................................................................... 34 2.22.2.1 PROCESSOS DE DESENVOLVIMENTO DE SOFTWARE SEGURO ............................................................... 34 2.2 DE DESENVOLVIMENTO DE SOFTWARE ............................................................... 34 2.22.2PROCESSOS PROCESSOS PROCESSOS DEDE DESENVOLVIMENTO DESENVOLVIMENTO DEDE SOFTWARE SOFTWARE SEGURO SEGURO ............................................................... ............................................................... 3434 2.2.2 SECURITY DEVELOPMENT LIFECYCLE .......................................................................... 36 2.2.1MICROSOFT MODELO EM CASCATA E MODELO EM ESPIRAL ............................................................................... 34 2.2.1 MODELO EM CASCATA E MODELO EM ESPIRAL ............................................................................... 34 2.2.1 2.2.1 MODELO MODELO EMEM CASCATA CASCATA E MODELO E MODELO EMEM ESPIRAL ESPIRAL ............................................................................... ............................................................................... 3434 2.2.3 NO DESENVOLVIMENTO ÁGIL ........................................................................................ 38 2.2.2SEGURANÇA MICROSOFT SECURITY DEVELOPMENT LIFECYCLE .......................................................................... 36 2.2.2 MICROSOFT SECURITY DEVELOPMENT LIFECYCLE .......................................................................... 36 2.2.2 2.2.2MICROSOFT MICROSOFT SECURITY SECURITY DEVELOPMENT DEVELOPMENT LIFECYCLE LIFECYCLE .......................................................................... .......................................................................... 3636 2.2.4 E NO VALIDAÇÃO – NORMAÁGIL IEEE 1012-2012.................................................................. 39 2.2.3VERIFICAÇÃO SEGURANÇA DESENVOLVIMENTO ÁGIL ........................................................................................ 38 2.2.3 SEGURANÇA NO DESENVOLVIMENTO ........................................................................................ 38 2.2.3 2.2.3SEGURANÇA SEGURANÇA NONO DESENVOLVIMENTO DESENVOLVIMENTO ÁGIL ÁGIL ........................................................................................ ........................................................................................ 3838 2.2.5 SECURITY IN MATURITY MODEL ............................................................................................ 4139 2.2.4BUILDING VERIFICAÇÃO E VALIDAÇÃO – NORMA IEEE 1012-2012.................................................................. 2.2.4 E – IEEE 1012-2012.................................................................. 39 2.2.4 2.2.4VERIFICAÇÃO VERIFICAÇÃO VERIFICAÇÃO E VALIDAÇÃO VALIDAÇÃO E VALIDAÇÃO – NORMA NORMA – NORMA IEEE IEEE 1012-2012.................................................................. 1012-2012.................................................................. 3939 2.2.6 APLICACIONAL – NORMA ISO/IEC 27034 ................................................................43 2.2.5SEGURANÇA BUILDING SECURITY IN MATURITY MODEL ............................................................................................ 41 2.2.5 BUILDING SECURITY IN MATURITY MODEL ............................................................................................ 41 2.2.5 2.2.5BUILDING BUILDING SECURITY SECURITY IN IN MATURITY MATURITY MODEL MODEL ............................................................................................ ............................................................................................ 41 41 2.3 PRINCÍPIOS DE PROJETO .............................................................................................................................................44 2.2.6SEGURANÇA SEGURANÇA APLICACIONAL – NORMA ISO/IEC 27034 ................................................................ 43 2.2.6 APLICACIONAL – NORMA ISO/IEC 27034 ................................................................ 43 2.2.6 2.2.6SEGURANÇA SEGURANÇA APLICACIONAL APLICACIONAL – NORMA – NORMA ISO/IEC ISO/IEC 27034 27034 ................................................................ ................................................................ 4343 2.4 AS VULNERABILIDADES DE PROJETO PREDOMINANTES .......................................................... 47 2.3EVITAR PRINCÍPIOS DE PROJETO .............................................................................................................................................44 2.3 DE PROJETO .............................................................................................................................................44 2.32.3PRINCÍPIOS PRINCÍPIOS PRINCÍPIOS DEDE PROJETO PROJETO .............................................................................................................................................44 .............................................................................................................................................44 NUNCA ASSUMIR OU CONFIAR ................................................................................................................... 47 2.42.4.1 EVITAR AS VULNERABILIDADES DE PROJETO PREDOMINANTES .......................................................... 47 2.4 AS VULNERABILIDADES DE PROJETO PREDOMINANTES .......................................................... 47 2.42.4EVITAR EVITAR EVITAR ASAS VULNERABILIDADES VULNERABILIDADES DEDE PROJETO PROJETO PREDOMINANTES PREDOMINANTES .......................................................... .......................................................... 4747 2.4.2 UM MECANISMO DE AUTENTICAÇÃO QUE NÃO POSSA SER CONTORNADO 2.4.1USAR NUNCA ASSUMIR OU CONFIAR ................................................................................................................... 47 2.4.1 NUNCA ASSUMIR OU CONFIAR ................................................................................................................... 47 2.4.1 2.4.1 NUNCA NUNCA ASSUMIR ASSUMIR OUOU CONFIAR CONFIAR ................................................................................................................... ................................................................................................................... 4747 COMPROMETIDO ........................................................................................................................................ 2.4.2OU USAR UM MECANISMO DE AUTENTICAÇÃO QUE NÃO POSSA SER CONTORNADO 49 2.4.2 USAR UM MECANISMO DE AUTENTICAÇÃO QUE NÃO POSSA SER CONTORNADO 2.4.2 2.4.2USAR USAR UMUM MECANISMO MECANISMO DEDE AUTENTICAÇÃO AUTENTICAÇÃO QUE QUE NÃO NÃO POSSA POSSA SER SER CONTORNADO CONTORNADO 2.4.3 AUTORIZAR APÓS AUTENTICAR ............................................................................................................... 50 OU COMPROMETIDO ........................................................................................................................................ 49 OU COMPROMETIDO ........................................................................................................................................ 49 OUOU COMPROMETIDO COMPROMETIDO ........................................................................................................................................ ........................................................................................................................................ 4949 2.4.4 DADOS DE INSTRUÇÕES DE CONTROLO ........................................................................ 50 2.4.3SEPARAR AUTORIZAR APÓS AUTENTICAR ............................................................................................................... 50 2.4.3 AUTORIZAR APÓS AUTENTICAR ............................................................................................................... 50 2.4.3 2.4.3AUTORIZAR AUTORIZAR APÓS APÓS AUTENTICAR AUTENTICAR ............................................................................................................... ............................................................................................................... 5050 2.4.5 EXPLICITAMENTE TODOS OS DADOS ................................................................................ 50 2.4.4VALIDAR SEPARAR DADOS DE INSTRUÇÕES DE CONTROLO ........................................................................ 50 2.4.4 DADOS DE INSTRUÇÕES DE CONTROLO ........................................................................ 50 2.4.4 2.4.4SEPARAR SEPARAR SEPARAR DADOS DADOS DEDE INSTRUÇÕES INSTRUÇÕES DEDE CONTROLO CONTROLO ........................................................................ ........................................................................ 5050 2.4.6 CORRETAMENTE A CRIPTOGRAFIA ........................................................................................... 50 2.4.5USAR VALIDAR EXPLICITAMENTE TODOS OS DADOS ................................................................................ 50 2.4.5 VALIDAR EXPLICITAMENTE TODOS OS DADOS ................................................................................ 50 2.4.5 2.4.5VALIDAR VALIDAR EXPLICITAMENTE EXPLICITAMENTE TODOS TODOS OSOS DADOS DADOS ................................................................................ ................................................................................ 5050 2.4.7 DADOS SENSÍVEIS E COMO DEVEM SER TRATADOS ......................................... 52 2.4.6IDENTIFICAR USAR CORRETAMENTE A CRIPTOGRAFIA ........................................................................................... 50 2.4.6 CORRETAMENTE A ........................................................................................... 50 2.4.6 2.4.6USAR USAR USAR CORRETAMENTE CORRETAMENTE A CRIPTOGRAFIA CRIPTOGRAFIA A CRIPTOGRAFIA ........................................................................................... ........................................................................................... 5050 2.4.8 SEMPRE OS UTILIZADORES ............................................................................................ 53 2.4.7CONSIDERAR IDENTIFICAR DADOS SENSÍVEIS E COMO DEVEM SER TRATADOS ......................................... 52 2.4.7 IDENTIFICAR DADOS SENSÍVEIS E COMO DEVEM SER TRATADOS ......................................... 52 2.4.7 2.4.7IDENTIFICAR IDENTIFICAR DADOS DADOS SENSÍVEIS SENSÍVEIS E COMO E COMO DEVEM DEVEM SER SER TRATADOS TRATADOS ......................................... ......................................... 5252 2.4.9 O IMPACTO DOS COMPONENTES EXTERNOS NA SUPERFÍCIE DE ATAQUE .53 2.4.8PERCEBER CONSIDERAR SEMPRE OS UTILIZADORES ............................................................................................ 53 2.4.8 CONSIDERAR SEMPRE OS UTILIZADORES ............................................................................................ 53 2.4.8 2.4.8CONSIDERAR CONSIDERAR SEMPRE SEMPRE OSOS UTILIZADORES UTILIZADORES ............................................................................................ ............................................................................................ 5353 2.4.10 ANTEVENDO ALTERAÇÕES FUTURAS .......................................................................... 54 2.4.9CONCEBER PERCEBER O IMPACTO DOS COMPONENTES EXTERNOS NA SUPERFÍCIE DE ATAQUE .53 2.4.9 O DOS COMPONENTES EXTERNOS NA SUPERFÍCIE DE ATAQUE ..53 2.4.9 2.4.9PERCEBER PERCEBER PERCEBER O IMPACTO IMPACTO O IMPACTO DOS DOS COMPONENTES COMPONENTES EXTERNOS EXTERNOS NANA SUPERFÍCIE SUPERFÍCIE DEDE ATAQUE ATAQUE 53.53 EXERCÍCIOS .................................................................................................................................................................................... 56 2.4.10 CONCEBER ANTEVENDO ALTERAÇÕES FUTURAS .......................................................................... 54 2.4.10 CONCEBER ANTEVENDO ALTERAÇÕES FUTURAS .......................................................................... 54 2.4.10 2.4.10CONCEBER CONCEBER ANTEVENDO ANTEVENDO ALTERAÇÕES ALTERAÇÕES FUTURAS FUTURAS .......................................................................... .......................................................................... 5454 EXERCÍCIOS .................................................................................................................................................................................... 56 EXERCÍCIOS .................................................................................................................................................................................... 56 EXERCÍCIOS EXERCÍCIOS .................................................................................................................................................................................... .................................................................................................................................................................................... 5656 © © FCA FCA––EDITORA EDITORADE DEINFORMÁTICA INFORMÁTICA © FCA – EDITORA INFORMÁTICA © FCA – EDITORA DE DE INFORMÁTICA © FCA © FCA – EDITORA – EDITORA DE DE INFORMÁTICA INFORMÁTICA

vv v v v v


SEGURANÇA SEGURANÇA NO NO SOFTWARE SOFTWARE SEGURANÇA NO SOFTWARE SEGURANÇA NO SOFTWARE SEGURANÇA NO SOFTWARE 333 PROTEÇÃO PROTEÇÃO EM EM SISTEMAS SISTEMAS OPERATIVOS OPERATIVOS 59 59 3 PROTEÇÃO EM S STEMAS OPERAT VOS 59 SISTEMAS OPERATIVOS 3 PROTEÇÃO EM EM SISTEMAS SISTEMAS OPERATIVOS OPERATIVOS 59 59 3 PROTEÇÃO PROTEÇÃO EM 59 3.1 3.1 PROTEÇÃO PROTEÇÃO DE DE RECURSOS RECURSOS .......................................................................................................................................... .......................................................................................................................................... 60 60 3 PROTEÇÃO DE RECURSOS 60 3.13.1 PROTEÇÃO DE DE RECURSOS RECURSOS .......................................................................................................................................... .......................................................................................................................................... 60 60 3.1 PROTEÇÃO PROTEÇÃO DE RECURSOS .......................................................................................................................................... 60 3.1.1 3.1.1 MODOS MODOS DE DE FUNCIONAMENTO FUNCIONAMENTO DO DO PROCESSADOR PROCESSADOR .......................................................................... .......................................................................... 60 60 3 MODOS DE FUNC ONAMENTO DO PROCESSADOR 60 3.1.1 MODOS FUNCIONAMENTO .......................................................................... 3.1.1 3.1.1 MODOS DE DE FUNCIONAMENTO FUNCIONAMENTO DO DO PROCESSADOR PROCESSADOR .......................................................................... .......................................................................... 60 60 MODOS DE DO PROCESSADOR 60 3.1.2 3.1.2 PROTEÇÃO PROTEÇÃO DE DE MEMÓRIA MEMÓRIA .............................................................................................................................. .............................................................................................................................. 62 62 3 2 PROTEÇÃO PROTEÇÃO DE MEMÓR A.............................................................................................................................. 62 3.1.2 MEMÓRIA .............................................................................................................................. 3.1.2 3.1.2 PROTEÇÃO DE DE MEMÓRIA MEMÓRIA .............................................................................................................................. 62 62 PROTEÇÃO DE 62 3.2 3.2 CONTROLO CONTROLO DE DE ACESSO ACESSO ................................................................................................................................................. ................................................................................................................................................. 68 68 3 2 CONTROLO DE ACESSO 68 3.2 ................................................................................................................................................. 3.2 CONTROLO DE ACESSO ................................................................................................................................................. 68 3.2 CONTROLO CONTROLODE DEACESSO ACESSO................................................................................................................................................. 68 68 3.2.1 3.2.1 UNIX, UNIX, LINUX, LINUX, MAC MAC OX OX SS ................................................................................................................................... S................................................................................................................................... ................................................................................................................................... 70 70 3 2 UNIX, UN XLINUX, L NUX MAC OX S 70 3.2.1 UNIX, LINUX, 3.2.1 3.2.1 UNIX, LINUX, MAC MAC OX OX S ................................................................................................................................... 70 70 MAC OX S ................................................................................................................................... 70 3.2.2 3.2.2 MAC MAC VS. VS. DAC DAC ...................................................................................................................................................... ...................................................................................................................................................... 72 72 3 2 2MAC MAC VS DAC 72 3.2.2 VS. ...................................................................................................................................................... 3.2.2 3.2.2 MAC VS. VS. DAC DAC ...................................................................................................................................................... ...................................................................................................................................................... 7272 MAC DAC 72 3.2.3 3.2.3 MAC MAC EM EM LINUX: LINUX: CAPACIDADES CAPACIDADES E SELINUX E SELINUX ........................................................................................... ........................................................................................... 73 73 3 2 3 MAC EM L NUX CAPAC DADES E SEL NUX 73 3.2.3MAC LINUX: CAPACIDADES SELINUX ........................................................................................... 3.2.3 3.2.3 MAC EM EM LINUX: LINUX: CAPACIDADES CAPACIDADES E ESELINUX ........................................................................................... ........................................................................................... 73 73 MAC EM ESELINUX 73 3.2.4 3.2.4 WINDOWS.............................................................................................................................................................. WINDOWS.............................................................................................................................................................. 75 75 3 2 4WINDOWS.............................................................................................................................................................. W NDOWS 75 3.2.4 WINDOWS.............................................................................................................................................................. 3.2.4 75 3.2.4 WINDOWS.............................................................................................................................................................. 75 75 EXERCÍCIOS EXERCÍCIOS ................................................................................................................................................................................... ................................................................................................................................................................................... 78 78 EXERC C OS 78 EXERCÍCIOS ................................................................................................................................................................................... EXERCÍCIOS EXERCÍCIOS ................................................................................................................................................................................... ................................................................................................................................................................................... 78 78 78 444 4 SEGURANÇA SEGURANÇA SEGURANÇA NA NA LINGUAGEM LINGUAGEM DE DE PROGRAMAÇÃO PROGRAMAÇÃO 79 79 SEGURANÇA NA L NGUAGEM DE PROGRAMAÇÃO 79 LINGUAGEM 4 NA NA LINGUAGEM LINGUAGEM DE DE PROGRAMAÇÃO PROGRAMAÇÃO 79 79 4 SEGURANÇA SEGURANÇA NA DE PROGRAMAÇÃO 79 4.1 4.1 OBJETIVOS OBJETIVOS E ARQUITETURA E ARQUITETURA .................................................................................................................................... .................................................................................................................................... 80 80 4 OBJET VOS E ARQU TETURA 80 4.14.1 OBJETIVOS E EARQUITETURA .................................................................................................................................... .................................................................................................................................... 80 80 4.1 OBJETIVOS OBJETIVOS EARQUITETURA ARQUITETURA .................................................................................................................................... 80 4.2 4.2 SANDBOXES SANDBOXES .................................................................................................................................................................. .................................................................................................................................................................. 82 82 SANDBOXES 82 4 2SANDBOXES 4.2 .................................................................................................................................................................. 4.2 4.2 SANDBOXES .................................................................................................................................................................. 82 82 SANDBOXES.................................................................................................................................................................. 82 4.2.1 4.2.1 PERMISSÕES PERMISSÕES E DOMÍNIOS E DOMÍNIOS DE DE PROTEÇÃO PROTEÇÃO ........................................................................................... ........................................................................................... 82 82 4 2 PERM SSÕES E DOM N OS DE PROTEÇÃO 82 4.2.1 PERMISSÕES DOMÍNIOS ........................................................................................... 4.2.1 PERMISSÕES E DOMÍNIOS DE PROTEÇÃO ........................................................................................... 82 4.2.1 PERMISSÕES EEDOMÍNIOS DE DEPROTEÇÃO PROTEÇÃO........................................................................................... 82 82 4.2.2 4.2.2 ALGORITMOS ALGORITMOS DE DE CONTROLO CONTROLO DE DE ACESSO ACESSO ............................................................................................ ............................................................................................ 86 86 4 2 2 ALGOR TMOS DE CONTROLO DE ACESSO 86 4.2.2 ALGORITMOS ............................................................................................ 4.2.2 ALGORITMOS DE CONTROLO DE ACESSO ............................................................................................ 86 4.2.2 ALGORITMOS DE DECONTROLO CONTROLODE DEACESSO ACESSO............................................................................................ 86 86 4.3 4.3 SEGURANÇA SEGURANÇA DAS DAS CONVENÇÕES CONVENÇÕES DA DA LINGUAGEM LINGUAGEM ......................................................................................... ......................................................................................... 90 90 4 3SEGURANÇA SEGURANÇA DAS CONVENÇÕES DA L NGUAGEM 90 4.3 LINGUAGEM ......................................................................................... 4.3 4.3 SEGURANÇA DAS DAS CONVENÇÕES CONVENÇÕES DA DA LINGUAGEM LINGUAGEM ......................................................................................... ......................................................................................... 90 90 SEGURANÇA DAS CONVENÇÕES DA 90 EXERCÍCIOS EXERCÍCIOS ................................................................................................................................................................................... ................................................................................................................................................................................... 94 94 EXERC C OS 94 EXERCÍCIOS ................................................................................................................................................................................... EXERCÍCIOS EXERCÍCIOS ................................................................................................................................................................................... ................................................................................................................................................................................... 94 94 94

PARTE PARTE –IIII–VULNERABILIDADES VULNERABILIDADES –VULNERABILIDADES VULNERABILIDADES ................................................................................................................... ................................................................................................................... 97 97 PARTE – VULNERAB L DADES 97 VULNERABILIDADES ................................................................................................................... PARTE IIII II– ................................................................................................................... 97 PARTE ................................................................................................................... 97 5 BUFFER BUFFER OVERFLOWS OVERFLOWS 99 99 5 BUFFER OVERFLOWS 99 555 OVERFLOWS 99 BUFFER OVERFLOWS 99 5 BUFFER BUFFER OVERFLOWS 99 5.1 5.1 VULNERABILIDADES VULNERABILIDADES E SUA E SUA PREVENÇÃO PREVENÇÃO .......................................................................................................... .......................................................................................................... 100 100 5 VULNERAB L DADES E SUA PREVENÇÃO 00 .......................................................................................................... 100 5.15.1 VULNERABILIDADES E ESUA PREVENÇÃO PREVENÇÃO .......................................................................................................... .......................................................................................................... 100 100 5.1 VULNERABILIDADES VULNERABILIDADES ESUA SUA PREVENÇÃO 5.2 5.2 OVERFLOWS OVERFLOWS NA NA HEAP HEAP ................................................................................................................................................ ................................................................................................................................................ 102 102 OVERFLOWS NA HEAP 02 5 2OVERFLOWS 5.2 ................................................................................................................................................ 102 5.2 NA HEAP ................................................................................................................................................ 102 5.2 OVERFLOWS NA HEAP ................................................................................................................................................ 102 OVERFLOWS NA HEAP OVERFLOWS OVERFLOWS NA NA PILHA PILHA ............................................................................................................................................... ............................................................................................................................................... 105 105 5.3 5.3 OVERFLOWS NA P LHA 05 5 3OVERFLOWS PILHA ............................................................................................................................................... 105 5.3 OVERFLOWS NA NA PILHA PILHA ............................................................................................................................................... ............................................................................................................................................... 105 105 5.3 5.3 OVERFLOWS NA BUFFER BUFFER OVERFLOWS OVERFLOWS AVANÇADOS AVANÇADOS ..................................................................................................................... ..................................................................................................................... 110110 110 5.4 5.4 BUFFER OVERFLOWS AVANÇADOS 0 5 4BUFFER BUFFER OVERFLOWS OVERFLOWS AVANÇADOS AVANÇADOS ..................................................................................................................... ..................................................................................................................... 110 5.4 5.4 BUFFER OVERFLOWS AVANÇADOS ..................................................................................................................... 110 5.4 OVERFLOWS OVERFLOWS AVANÇADOS AVANÇADOS NA NA HEAP HEAP ....................................................................................................... ....................................................................................................... 111 5.4.1 5.4.1 OVERFLOWS AVANÇADOS NA HEAP 5 4 OVERFLOWS AVANÇADOS AVANÇADOS NA NA HEAP HEAP ....................................................................................................... ....................................................................................................... 111111111 5.4.1 5.4.1 OVERFLOWS AVANÇADOS NA HEAP ....................................................................................................... 111 5.4.1OVERFLOWS OVERFLOWS OVERFLOWS AVANÇADOS AVANÇADOS NA NA PILHA PILHA .................................................................................................... .................................................................................................... 114114 114 5.4.2 5.4.2 OVERFLOWS AVANÇADOS NA P LHA 4 5 4 2OVERFLOWS PILHA .................................................................................................... 114 5.4.2 AVANÇADOS NA PILHA .................................................................................................... 114 5.4.2 OVERFLOWS AVANÇADOS NA PILHA .................................................................................................... 5.4.2 OVERFLOWS AVANÇADOS NA 5.4.3 5.4.3 ATAQUES ATAQUES ATRAVÉS ATRAVÉS DA DA REUTILIZAÇÃO REUTILIZAÇÃO DO DO CÓDIGO CÓDIGO DO DO PROGRAMA-ALVO PROGRAMA-ALVO .................... .................... 115 115 5 4 3ATAQUES ATAQUES ATRAVÉS DA REUT L ZAÇÃO DO CÓD GO DO PROGRAMA ALVO 5 5.4.3 REUTILIZAÇÃO CÓDIGO PROGRAMA-ALVO .................... 115 5.4.3 5.4.3 ATAQUES ATRAVÉS ATRAVÉS DA DA REUTILIZAÇÃO REUTILIZAÇÃO DO DO CÓDIGO CÓDIGO DO DO PROGRAMA-ALVO PROGRAMA-ALVO .................... .................... 115 115 ATAQUES ATRAVÉS DA DO DO 5.4.4 5.4.4 ATAQUES ATAQUES AAAPONTADORES APONTADORES A APONTADORES ....................................................................................................................... ....................................................................................................................... 117117 117 5 4 4ATAQUES ATAQUES AAPONTADORES APONTADORES 7 5.4.4 5.4.4 ATAQUES A ....................................................................................................................... ....................................................................................................................... 117 5.4.4 ATAQUES A APONTADORES ....................................................................................................................... 117 OFF-BY-ONE OFF-BY-ONE ........................................................................................................................................ ........................................................................................................................................ 119119 119 5.4.5 5.4.5 ERROS ERROS OFF BY ONE 9 5 4 5ERROS ERROS OFF-BY-ONE OFF-BY-ONE OFF-BY-ONE ........................................................................................................................................ ........................................................................................................................................ 119 5.4.5 5.4.5 ERROS ........................................................................................................................................ 119 5.4.5 ERROS 5.5 5.5 VULNERABILIDADES VULNERABILIDADES DE DE INTEIROS INTEIROS ......................................................................................................................... ......................................................................................................................... 124 124 5 5VULNERABILIDADES VULNERAB L DADES DE NTE ROS 24 5.5 VULNERABILIDADES INTEIROS ......................................................................................................................... 124 5.5 DE INTEIROS ......................................................................................................................... 124 5.5 VULNERABILIDADES DE INTEIROS ......................................................................................................................... 124 DE OVERFLOW OVERFLOW ......................................................................................................................................................... ......................................................................................................................................................... 125 125 5.5.1 5.5.1 OVERFLOW 25 5 5 OVERFLOW ......................................................................................................................................................... 125 5.5.1 OVERFLOW ......................................................................................................................................................... ......................................................................................................................................................... 125 125 5.5.1 5.5.1 OVERFLOW UNDERFLOW UNDERFLOW ....................................................................................................................................................... ....................................................................................................................................................... 125 125 5.5.2 5.5.2 UNDERFLOW 25 5 5 2UNDERFLOW UNDERFLOW ....................................................................................................................................................... ....................................................................................................................................................... 125 125 5.5.2 5.5.2 UNDERFLOW ....................................................................................................................................................... 125 5.5.2 5.5.3 5.5.3 ERROS ERROS DE DE SINAL SINAL .............................................................................................................................................. .............................................................................................................................................. 126 126 5 5 3ERROS ERROS DE S NAL 26 5.5.3 5.5.3 ERROS DE DE SINAL SINAL .............................................................................................................................................. .............................................................................................................................................. 126 126 5.5.3 ERROS DE SINAL .............................................................................................................................................. 126 5.5.4 5.5.4 TRUNCAMENTO TRUNCAMENTO ................................................................................................................................................. ................................................................................................................................................. 127 127 5 5 4 TRUNCAMENTO 27 5.5.4 ................................................................................................................................................. 127 5.5.4 TRUNCAMENTO ................................................................................................................................................. 127 5.5.4 TRUNCAMENTO TRUNCAMENTO................................................................................................................................................. 127 EXERCÍCIOS EXERCÍCIOS .................................................................................................................................................................................. .................................................................................................................................................................................. 129 129 EXERC C OS 29 EXERCÍCIOS .................................................................................................................................................................................. 129 EXERCÍCIOS EXERCÍCIOS .................................................................................................................................................................................. .................................................................................................................................................................................. 129 129 666 6 CORRIDAS CORRIDAS CORRIDAS 131131 131 CORR DAS 3 CORRIDAS 131 6 131 6 CORRIDAS 6.1 6.1 CORRIDAS CORRIDAS E ATOMICIDADE E ATOMICIDADE ....................................................................................................................................... ....................................................................................................................................... 131 131 6 CORRIDAS CORR DAS ATOM C DADE 3 EATOMICIDADE ATOMICIDADE ....................................................................................................................................... 131 6.16.1 CORRIDAS E EATOMICIDADE ....................................................................................................................................... ....................................................................................................................................... 131131 6.1 CORRIDAS 6.2 6.2 TOCTOU TOCTOU ……….. ……….. ................................................................................................................................................................. ................................................................................................................................................................. 133 133 6 2TOCTOU ……… 33 6.2 TOCTOU ……….. ................................................................................................................................................................. 133 6.2 6.2 TOCTOU ……….. ……….. ................................................................................................................................................................. ................................................................................................................................................................. 133 133 6.3 6.3 FICHEIROS FICHEIROS TEMPORÁRIOS TEMPORÁRIOS ......................................................................................................................................... ......................................................................................................................................... 138 138 6 3FICHEIROS F CHE ROS TEMPORÁR OS 6.3 FICHEIROS TEMPORÁRIOS .................. 38 6.3 TEMPORÁRIOS ......................................................................................................................................... 138 6.3 FICHEIROS TEMPORÁRIOS ......................................................................................................................................... 138 ......................................................................................................................................... 138 6.4 6.4 CONCORRÊNCIA CONCORRÊNCIA E FUNÇÕES E FUNÇÕES REENTRANTES.................................................................................................... REENTRANTES.................................................................................................... 140 140 6 4 CONCORRÊNC A E FUNÇÕES REENTRANTES 40 6.4 CONCORRÊNCIA E FUNÇÕES REENTRANTES.................................................................................................... 140 6.4 6.4 CONCORRÊNCIA CONCORRÊNCIAE FUNÇÕES REENTRANTES.................................................................................................... REENTRANTES....................................................................................................140 140 6.4.1 6.4.1 ROTINAS ROTINAS DE DE TRATAMENTO TRATAMENTO DE DE SINAIS SINAIS .................................................................................................. .................................................................................................. 141141 141 DE TRATAMENTO DE 6 4 ROTINAS ROT NAS S NA.................................................................................................. S.................................................................................................. 4 6.4.1 6.4.1 ROTINAS DE DE TRATAMENTO TRATAMENTO DE DE SINAIS SINAIS 141 6.4.1 ROTINAS DE TRATAMENTO DE SINAIS .................................................................................................. 141 SERVLETS SERVLETS ............................................................................................................................................................ ............................................................................................................................................................ 145 145 6.4.2 6.4.2 SERVLETS 45 6 4 2SERVLETS SERVLETS ............................................................................................................................................................ ............................................................................................................................................................ 145 145 6.4.2 6.4.2 SERVLETS ............................................................................................................................................................ 145 6.4.2 EXERCÍCIOS EXERCÍCIOS .................................................................................................................................................................................. .................................................................................................................................................................................. 149 149 EXERC C OS 49 EXERCÍCIOS .................................................................................................................................................................................. 149 EXERCÍCIOS .................................................................................................................................................................................. 149 EXERCÍCIOS .................................................................................................................................................................................. 149 7 77 VALIDAÇÃO VALIDAÇÃO DE DE ENTRADAS ENTRADAS 151 151 7 VAL DAÇÃO DE ENTRADAS 5 7 VALIDAÇÃO DE DE ENTRADAS ENTRADAS 151 151 7 VALIDAÇÃO VALIDAÇÃO DE ENTRADAS 151 7.17.1 7.1 CONFIANÇA, CONFIANÇA, CONFIANÇA, CONFIABILIDADE CONFIABILIDADE E ENTRADAS E ENTRADAS ................................................................................................... ................................................................................................... 152 152 7 CONF ANÇA CONF AB L DADE E ENTRADAS 52 7.1 CONFIABILIDADE E ENTRADAS ................................................................................................... 152 7.1 CONFIANÇA, CONFIANÇA,CONFIABILIDADE CONFIABILIDADEE ENTRADAS ................................................................................................... ...................................................................................................152 152 7.2 7.2 METADADOS METADADOS E EMETACARATERES METACARATERES E METACARATERES ........................................................................................................................ ........................................................................................................................ 156 156 METADADOS EMETACARATERES METACARATERES 7 2METADADOS 56 7.2 7.2 METADADOS E ........................................................................................................................ ........................................................................................................................ 156 156 7.2 METADADOS E METACARATERES ........................................................................................................................ 156 STRING STRING DE DE FORMATO FORMATO .............................................................................................. .............................................................................................. 160 160 7.3 7.3 VULNERABILIDADES VULNERABILIDADES DE DE STR NG DE FORMATO 60 DE 7 3VULNERABILIDADES VULNERAB L DADES STRING STRING DE DE FORMATO FORMATO .............................................................................................. .............................................................................................. 160 160 7.3 7.3 VULNERABILIDADES DE DE STRING DE FORMATO .............................................................................................. 160 7.3 VULNERABILIDADES DE vi vi vi vi viviv

©  FCA – EDITORA DE INFORMÁTICA © FCA © FCA – EDITORA – EDITORA DE INFORMÁTICA DE INFORMÁTICA © FCA ED TORA DE NFORMÁT CA EDITORA INFORMÁTICA ©© FCA EDITORA DEDE INFORMÁTICA © FCA –– EDITORA –– DE INFORMÁTICA ©FCA FCA –EDITORA EDITORA DEINFORMÁTICA INFORMÁTICA


ÍNDICE ÍNDICE ÍNDICE ÍNDICE EXERCÍCIOS ................................................................................................................................................................................... EXERCÍCIOS ................................................................................................................................................................................... 166 EXERCÍCIOS ................................................................................................................................................................................... 166166 EXERCÍCIOS ................................................................................................................................................................................... EXERCÍCIOS ................................................................................................................................................................................... 166166 APLICAÇÕES WEB 8 APLICAÇÕES WEB 169 8 8 APLICAÇÕES WEB 169169 APLICAÇÕES WEB 8 8 APLICAÇÕES WEB 169169 WORLD WIDE WEB APLICAÇÕES WEB .................................................................................................. 8.1 8.1 DA DADA WORLD WIDE WEB ÀSÀS APLICAÇÕES WEB .................................................................................................. 170170 8.1 WORLD WIDE WEB ÀS APLICAÇÕES WEB .................................................................................................. 170 8.1 DA WORLD WIDE WEB ÀS APLICAÇÕES WEB .................................................................................................. 8.1 WORLD WIDE WEB ÀS APLICAÇÕES WEB .................................................................................................. 170170 TOP 10 DE VULNERABILIDADES .................................................................................................................................171 8.28.2DA TOP 10 DE DE VULNERABILIDADES .................................................................................................................................171 8.2 TOP 10 VULNERABILIDADES .................................................................................................................................171 8.2TOP TOP 10 DE VULNERABILIDADES .................................................................................................................................171 8.2 10 DE VULNERABILIDADES .................................................................................................................................171 INJEÇÃO ………. ................................................................................................................................................................. 8.38.3INJEÇÃO INJEÇÃO ………. ................................................................................................................................................................. 173173 8.3 ………. ................................................................................................................................................................. 173 INJEÇÃO ………. ................................................................................................................................................................. 173 8.38.3INJEÇÃO ………. ................................................................................................................................................................. 173 8.3.1 TIPOS DE INJEÇÃO ........................................................................................................................................... 8.3.1 TIPOS DE INJEÇÃO ........................................................................................................................................... 173 8.3.1 TIPOS DEDE INJEÇÃO ........................................................................................................................................... 173173 8.3.1 TIPOS INJEÇÃO ........................................................................................................................................... 173 8.3.1 TIPOS DE INJEÇÃO ........................................................................................................................................... 173 8.3.2CLASSIFICAÇÃO CLASSIFICAÇÃO E PREVENÇÃO ................................................................................................................ 8.3.2 CLASSIFICAÇÃO E PREVENÇÃO PREVENÇÃO ................................................................................................................ 176176 8.3.2 E ................................................................................................................ 176 8.3.2 CLASSIFICAÇÃO E PREVENÇÃO ................................................................................................................ 176 8.3.2 CLASSIFICAÇÃO E PREVENÇÃO ................................................................................................................ 176 AUTENTICAÇÃO E GESTÃO SESSÕES ........................................................................................................... 8.48.4AUTENTICAÇÃO AUTENTICAÇÃO E GESTÃO GESTÃO DEDE SESSÕES ........................................................................................................... 177177 8.4 E DE SESSÕES ........................................................................................................... 177 AUTENTICAÇÃO E GESTÃO DE SESSÕES ........................................................................................................... 177 8.48.4AUTENTICAÇÃO E GESTÃO DE SESSÕES ........................................................................................................... 177 8.4.1DESCRIÇÃO DESCRIÇÃO .......................................................................................................................................................... 8.4.1 .......................................................................................................................................................... 177 8.4.1 .......................................................................................................................................................... 177177 8.4.1DESCRIÇÃO DESCRIÇÃO .......................................................................................................................................................... 177 8.4.1 DESCRIÇÃO .......................................................................................................................................................... 177 8.4.2CLASSIFICAÇÃO CLASSIFICAÇÃO E PREVENÇÃO ............................................................................................................... 8.4.2 E ............................................................................................................... 180 8.4.2 E PREVENÇÃO PREVENÇÃO ............................................................................................................... 180180 8.4.2CLASSIFICAÇÃO CLASSIFICAÇÃO E PREVENÇÃO ............................................................................................................... 180 CLASSIFICAÇÃO E PREVENÇÃO ............................................................................................................... 180 CROSS SITE SCRIPTING ................................................................................................................................................ CROSS SITE SCRIPTING ................................................................................................................................................ 182182 8.58.58.4.2 CROSS SITE SCRIPTING ................................................................................................................................................ 182 8.5 CROSS SITE SCRIPTING ................................................................................................................................................ 182 8.5 SITE SCRIPTING ................................................................................................................................................ 182183 8.5 CROSS 8.5.1XSS XSS POR REFLEXÃO ...................................................................................................................................... 8.5.1 XSS POR REFLEXÃO ...................................................................................................................................... 183 8.5.1 POR REFLEXÃO ...................................................................................................................................... 183 8.5.1XSS XSS POR REFLEXÃO ...................................................................................................................................... 183 8.5.1 POR REFLEXÃO ...................................................................................................................................... 183 8.5.2XSS XSS POR ARMAZENAMENTO ..................................................................................................................... 8.5.2 POR ARMAZENAMENTO ..................................................................................................................... 187 8.5.2 POR ARMAZENAMENTO ..................................................................................................................... 187187 8.5.2XSS XSS POR ARMAZENAMENTO ..................................................................................................................... 8.5.2 XSS POR ARMAZENAMENTO ..................................................................................................................... 187187 8.5.3 XSS BASEADO EM DOM .............................................................................................................................. 8.5.3 XSS BASEADO EM DOM .............................................................................................................................. 189 8.5.3 XSS BASEADO EMEM DOM .............................................................................................................................. 189189 8.5.3 XSS BASEADO DOM .............................................................................................................................. 8.5.3 BASEADO EM............................................................................................................................................ DOM .............................................................................................................................. 190 189189 8.5.4XSS INJEÇÃO CRLF ............................................................................................................................................ 8.5.4 INJEÇÃO DEDE CRLF 8.5.4 INJEÇÃO DE CRLF ............................................................................................................................................ 190190 8.5.4 INJEÇÃO DE CRLF ............................................................................................................................................ 190 8.5.4 DE CRLFE............................................................................................................................................ 190 8.5.5INJEÇÃO CLASSIFICAÇÃO E PREVENÇÃO ................................................................................................................ 8.5.5 CLASSIFICAÇÃO PREVENÇÃO ................................................................................................................ 192192 8.5.5 E PREVENÇÃO ................................................................................................................ 192 8.5.5CLASSIFICAÇÃO CLASSIFICAÇÃO E PREVENÇÃO ................................................................................................................ 192 8.5.5 CLASSIFICAÇÃO E PREVENÇÃO ................................................................................................................ 192 REFERÊNCIA DIRETA A OBJETOS ......................................................................................................................... 8.6 REFERÊNCIA DIRETA A ......................................................................................................................... 194 8.68.6 REFERÊNCIA DIRETA A OBJETOS OBJETOS ......................................................................................................................... 194194 REFERÊNCIA DIRETA A OBJETOS ......................................................................................................................... 194 8.68.6REFERÊNCIA DIRETA A OBJETOS ......................................................................................................................... 194 8.6.1DESCRIÇÃO DESCRIÇÃO ......................................................................................................................................................... 8.6.1 ......................................................................................................................................................... 194 8.6.1 ......................................................................................................................................................... 194194 8.6.1DESCRIÇÃO DESCRIÇÃO ......................................................................................................................................................... 194 8.6.1 ......................................................................................................................................................... 194195 8.6.2DESCRIÇÃO CLASSIFICAÇÃO E PREVENÇÃO ............................................................................................................... 8.6.2 CLASSIFICAÇÃO E PREVENÇÃO PREVENÇÃO ............................................................................................................... 195 8.6.2 CLASSIFICAÇÃO E ............................................................................................................... 195 8.6.2 CLASSIFICAÇÃO E PREVENÇÃO ............................................................................................................... 195 8.6.2 CLASSIFICAÇÃO E PREVENÇÃO ............................................................................................................... 195 CONFIGURAÇÃO INSEGURA ...................................................................................................................................... 8.78.7CONFIGURAÇÃO CONFIGURAÇÃO INSEGURA ...................................................................................................................................... 196196 8.7 INSEGURA ...................................................................................................................................... 196 CONFIGURAÇÃO INSEGURA ...................................................................................................................................... 8.78.7CONFIGURAÇÃO INSEGURA ...................................................................................................................................... 196196 8.7.1 DESCRIÇÃO ......................................................................................................................................................... 8.7.1 DESCRIÇÃO ......................................................................................................................................................... 196 8.7.1 DESCRIÇÃO ......................................................................................................................................................... 196196 8.7.1 DESCRIÇÃO ......................................................................................................................................................... 196 8.7.1 DESCRIÇÃO ......................................................................................................................................................... 196 8.7.2CLASSIFICAÇÃO CLASSIFICAÇÃO E PREVENÇÃO ............................................................................................................... 8.7.2 E ............................................................................................................... 198 8.7.2 CLASSIFICAÇÃO E PREVENÇÃO PREVENÇÃO ............................................................................................................... 198198 8.7.2 CLASSIFICAÇÃO E PREVENÇÃO ............................................................................................................... 198 CLASSIFICAÇÃO ESENSÍVEIS PREVENÇÃO ...............................................................................................................200 198 EXPOSIÇÃO DADOS SENSÍVEIS ...................................................................................................................... 200 8.88.88.7.2 EXPOSIÇÃO DEDE DADOS ...................................................................................................................... 8.8 EXPOSIÇÃO DE DADOS SENSÍVEIS ...................................................................................................................... 200 8.8 EXPOSIÇÃO DE DADOS SENSÍVEIS ...................................................................................................................... 200 8.8 8.8.1 EXPOSIÇÃO DE DADOS SENSÍVEIS...................................................................................................................... 200 200 8.8.1DESCRIÇÃO DESCRIÇÃO ........................................................................................................................................................ 200 DESCRIÇÃO ........................................................................................................................................................ 8.8.1 ........................................................................................................................................................ 200 8.8.1DESCRIÇÃO DESCRIÇÃO ........................................................................................................................................................ 200 8.8.1 ........................................................................................................................................................ 200 8.8.2 CLASSIFICAÇÃO E PREVENÇÃO ................................................................................................................ 8.8.2 CLASSIFICAÇÃO E PREVENÇÃO ................................................................................................................ 201 8.8.2 CLASSIFICAÇÃO E PREVENÇÃO ................................................................................................................ 201201 8.8.2 CLASSIFICAÇÃO E PREVENÇÃO ................................................................................................................ 201 8.8.2 CLASSIFICAÇÃO E PREVENÇÃO ................................................................................................................ 201 FALTA CONTROLO ACESSO APLICACIONAL ..................................................................................... 204 8.9 FALTA DE CONTROLO DE ACESSO APLICACIONAL ..................................................................................... 204 8.98.9 FALTA DEDE CONTROLO DEDE ACESSO APLICACIONAL ..................................................................................... 204 8.9 FALTA DE CONTROLO DE ACESSO APLICACIONAL ..................................................................................... 204 8.9 FALTA DEDESCRIÇÃO CONTROLO DE ACESSO APLICACIONAL ..................................................................................... 204 8.9.1DESCRIÇÃO ........................................................................................................................................................ 204 8.9.1 DESCRIÇÃO ........................................................................................................................................................ 204 8.9.1 ........................................................................................................................................................ 204 8.9.1DESCRIÇÃO DESCRIÇÃO ........................................................................................................................................................ 204 8.9.1 ........................................................................................................................................................ 204 8.9.2CLASSIFICAÇÃO CLASSIFICAÇÃO E PREVENÇÃO .............................................................................................................. 205 8.9.2 CLASSIFICAÇÃO E PREVENÇÃO PREVENÇÃO .............................................................................................................. 205 8.9.2 E .............................................................................................................. 205 8.9.2CLASSIFICAÇÃO CLASSIFICAÇÃO E PREVENÇÃO .............................................................................................................. 205 8.9.2 E PREVENÇÃO .............................................................................................................. 205 CROSS SITE REQUEST FORGERY ......................................................................................................................... 206 CROSS SITE REQUEST FORGERY ......................................................................................................................... 206 8.10 8.10 CROSS SITE REQUEST FORGERY ......................................................................................................................... 206 8.10 CROSS SITE REQUEST FORGERY ......................................................................................................................... 206 8.10 CROSS SITE REQUEST FORGERY ......................................................................................................................... 206 8.10 8.10.1 DESCRIÇÃO ........................................................................................................................................................ 206 8.10.1 DESCRIÇÃO ........................................................................................................................................................ 206 8.10.1 DESCRIÇÃO ........................................................................................................................................................ 206 8.10.1 DESCRIÇÃO ........................................................................................................................................................ 206 8.10.1 DESCRIÇÃO ........................................................................................................................................................ 206 8.10.2 CLASSIFICAÇÃO E PREVENÇÃO .............................................................................................................. 207 8.10.2 CLASSIFICAÇÃO E PREVENÇÃO PREVENÇÃO .............................................................................................................. 207 8.10.2 CLASSIFICAÇÃO E .............................................................................................................. 207 8.10.2 CLASSIFICAÇÃO E PREVENÇÃO .............................................................................................................. 207 8.10.2 CLASSIFICAÇÃO E PREVENÇÃO .............................................................................................................. 207 BIBLIOTECAS COM VULNERABILIDADES CONHECIDAS ............................................................................. 209 8.118.11BIBLIOTECAS BIBLIOTECAS COM VULNERABILIDADES CONHECIDAS ............................................................................. 209 8.11 COM VULNERABILIDADES CONHECIDAS ............................................................................. 209 BIBLIOTECAS COM VULNERABILIDADES CONHECIDAS ............................................................................. 209 8.118.11BIBLIOTECAS COM VULNERABILIDADES CONHECIDAS ............................................................................. 209 8.11.1DESCRIÇÃO DESCRIÇÃO ........................................................................................................................................................ 209 8.11.1 ........................................................................................................................................................ 209 8.11.1 ........................................................................................................................................................ 209 8.11.1DESCRIÇÃO DESCRIÇÃO ........................................................................................................................................................ 209 8.11.1 DESCRIÇÃO ........................................................................................................................................................ 209 8.11.2 CLASSIFICAÇÃO E PREVENÇÃO ................................................................................................................ 8.11.2 CLASSIFICAÇÃO E PREVENÇÃO ................................................................................................................ 210 8.11.2 CLASSIFICAÇÃO E PREVENÇÃO ................................................................................................................ 210210 8.11.2 CLASSIFICAÇÃO E PREVENÇÃO ................................................................................................................ 210 8.11.2 CLASSIFICAÇÃO NÃO E PREVENÇÃO ................................................................................................................ 210 REDIRECIONAMENTOS NÃO VALIDADOS .......................................................................................................... 8.128.12 REDIRECIONAMENTOS VALIDADOS .......................................................................................................... 211 211 8.12 REDIRECIONAMENTOS NÃO VALIDADOS .......................................................................................................... 211 8.12 REDIRECIONAMENTOS NÃO VALIDADOS .......................................................................................................... 211 8.12 REDIRECIONAMENTOS NÃO VALIDADOS .......................................................................................................... 211 8.12.1DESCRIÇÃO DESCRIÇÃO ........................................................................................................................................................... 8.12.1 DESCRIÇÃO ........................................................................................................................................................... 211 211 8.12.1 ........................................................................................................................................................... 211 8.12.1DESCRIÇÃO DESCRIÇÃO ........................................................................................................................................................... 211 8.12.1 ........................................................................................................................................................... 211 8.12.2 CLASSIFICAÇÃO E PREVENÇÃO ................................................................................................................ 8.12.2 CLASSIFICAÇÃO E ................................................................................................................ 213 8.12.2 CLASSIFICAÇÃO E PREVENÇÃO PREVENÇÃO ................................................................................................................ 213213 8.12.2 CLASSIFICAÇÃO E PREVENÇÃO ................................................................................................................ 213 8.12.2 CLASSIFICAÇÃO E PREVENÇÃO ................................................................................................................ 213 EXERCÍCIOS ................................................................................................................................................................................... EXERCÍCIOS ................................................................................................................................................................................... 215 EXERCÍCIOS ................................................................................................................................................................................... 215215 EXERCÍCIOS ................................................................................................................................................................................... EXERCÍCIOS ................................................................................................................................................................................... 215215 BASES DADOS 9 9 BASES BASES DEDE DADOS 217217 9 DE DADOS 217 BASES DADOS 9 9 BASES DEDE DADOS 217217 9.1 BASES DE DADOS E SQL ........................................................................................................................................... 9.1 BASES DE DADOS E SQL ........................................................................................................................................... 218 9.1 9.1 BASES DEDE DADOS E SQL ........................................................................................................................................... 218218 BASES DADOS E SQL ........................................................................................................................................... 218 9.1 9.2INJEÇÃO BASES DEDEDADOS E............................................................................................................................................................. SQL ........................................................................................................................................... 218 INJEÇÃO SQL 9.2 SQL ............................................................................................................................................................. 221 9.29.2INJEÇÃO DEDE SQL ............................................................................................................................................................. 221221 INJEÇÃO DE SQL ............................................................................................................................................................. 221 9.2 9.2.1 INJEÇÃO DE SQL ............................................................................................................................................................. 221 9.2.1MECANISMOS MECANISMOS ................................................................................................................................................... 223 ................................................................................................................................................... 223 9.2.1 MECANISMOS ................................................................................................................................................... 223 9.2.1MECANISMOS MECANISMOS ................................................................................................................................................... 223 9.2.1 ................................................................................................................................................... 223 9.2.2OBJETIVOS OBJETIVOS ........................................................................................................................................................ 223 9.2.2 ........................................................................................................................................................ 223 9.2.2 OBJETIVOS ........................................................................................................................................................ 223 9.2.2OBJETIVOS OBJETIVOS ........................................................................................................................................................ 223 9.2.2 ........................................................................................................................................................ 223 9.2.3 PREVENÇÃO ..................................................................................................................................................... 224 9.2.3 PREVENÇÃO ..................................................................................................................................................... 224 9.2.3 PREVENÇÃO ..................................................................................................................................................... 224 9.2.3 PREVENÇÃO ..................................................................................................................................................... 224 9.2.3 PREVENÇÃO ..................................................................................................................................................... 224 TÉCNICAS INJEÇÃO SQL ............................................................................................................................. 226 9.3 DE INJEÇÃO DE SQL ............................................................................................................................. 226 9.39.3TÉCNICAS TÉCNICAS DEDE INJEÇÃO DEDE SQL ............................................................................................................................. 226 TÉCNICAS INJEÇÃO DE SQL ............................................................................................................................. 226 9.39.39.3.1 TÉCNICAS DEDE INJEÇÃO DE SQL ............................................................................................................................. 226 9.3.1 TAUTOLOGIAS .................................................................................................................................................. 226 TAUTOLOGIAS .................................................................................................................................................. 226 9.3.1 TAUTOLOGIAS .................................................................................................................................................. 226 9.3.1TAUTOLOGIAS TAUTOLOGIAS .................................................................................................................................................. 226 9.3.1 .................................................................................................................................................. 226 9.3.2 INJEÇÃO DE UNIÕES...................................................................................................................................... 226 9.3.2 INJEÇÃO DE UNIÕES...................................................................................................................................... 226 9.3.2 INJEÇÃO DEDE UNIÕES...................................................................................................................................... 226 9.3.2INJEÇÃO INJEÇÃO UNIÕES...................................................................................................................................... 226 9.3.2 DE UNIÕES...................................................................................................................................... 226 9.3.3INJEÇÃO INJEÇÃO COMANDOS .............................................................................................................................227 9.3.3 DE COMANDOS .............................................................................................................................227 9.3.3 INJEÇÃO DEDE COMANDOS .............................................................................................................................227 9.3.3INJEÇÃO INJEÇÃO COMANDOS .............................................................................................................................227 9.3.3 DEDE COMANDOS .............................................................................................................................227 9.3.4PROCEDIMENTOS PROCEDIMENTOS ARMAZENADOS ....................................................................................................... 228 9.3.4 ARMAZENADOS ....................................................................................................... 228 9.3.4 PROCEDIMENTOS ARMAZENADOS ....................................................................................................... 228 9.3.4 PROCEDIMENTOS ARMAZENADOS ....................................................................................................... 228 9.3.4 ARMAZENADOS ....................................................................................................... 228 9.3.5PROCEDIMENTOS COMANDOS INCORRETOS .......................................................................................................................... 230 9.3.5 COMANDOS INCORRETOS .......................................................................................................................... 230 9.3.5 COMANDOS INCORRETOS .......................................................................................................................... 230 9.3.5COMANDOS COMANDOS INCORRETOS .......................................................................................................................... 230 9.3.5 INCORRETOS .......................................................................................................................... 230 ©  FCA – EDITORA DE INFORMÁTICA © FCA – EDITORA DE INFORMÁTICA © –– EDITORA DE © FCA FCA EDITORA DE INFORMÁTICA INFORMÁTICA © FCA – EDITORA DE INFORMÁTICA © FCA – EDITORA DE INFORMÁTICA

vii vii vii vii vii vii


SEGURANÇA SEGURANÇA NO NO SOFTWARE SOFTWARE SEGURANÇA NO SOFTWARE SEGURANÇA NO SOFTWARE SEGURANÇA NO SOFTWARE SEGURANÇA NO SOFTWARE 333 PROTEÇÃO PROTEÇÃO PROTEÇÃO EM EM SISTEMAS SISTEMAS OPERATIVOS OPERATIVOS 59 59 9.3.6EM INFERÊNCIA ......................................................................................................................................................... 231 3 EM SISTEMAS SISTEMAS OPERATIVOS OPERATIVOS 59 59 3 PROTEÇÃO PROTEÇÃO EM SISTEMAS OPERATIVOS 59 9.3.7 CODIFICAÇÕES ALTERNATIVAS .............................................................................................................60 233 3.1 3.1 PROTEÇÃO PROTEÇÃO DE DE RECURSOS RECURSOS .......................................................................................................................................... .......................................................................................................................................... 60 3.13.1 PROTEÇÃO DE DE RECURSOS RECURSOS .......................................................................................................................................... .......................................................................................................................................... 60 60 3.1 PROTEÇÃO PROTEÇÃO DE RECURSOS .......................................................................................................................................... 60 9.3.8 INJEÇÃO SQL DE SEGUNDA DO ORDEM ..................................................................................................... 234 3.1.1 3.1.1 MODOS MODOS DE DE FUNCIONAMENTO FUNCIONAMENTO DO PROCESSADOR PROCESSADOR .......................................................................... .......................................................................... 60 60 3.1.1 3.1.1 MODOS DE DE FUNCIONAMENTO FUNCIONAMENTO DO DO PROCESSADOR PROCESSADOR .......................................................................... .......................................................................... 60 60 3.1.1 MODOS MODOS DE FUNCIONAMENTO DO PROCESSADOR .......................................................................... 60 9.43.1.2 OUTRAS VULNERABILIDADES ............................................................................................................................... 235 3.1.2 PROTEÇÃO PROTEÇÃO PROTEÇÃO DE DE MEMÓRIA MEMÓRIA .............................................................................................................................. .............................................................................................................................. 62 62 3.1.2 3.1.2 DE DE MEMÓRIA MEMÓRIA .............................................................................................................................. .............................................................................................................................. 62 62 3.1.2 PROTEÇÃO PROTEÇÃO DE MEMÓRIA .............................................................................................................................. 62 9.4.1 CONFIGURAÇÃO POR OMISSÃO .............................................................................................................68 235 3.2 3.2 CONTROLO CONTROLO DE DE ACESSO ACESSO ................................................................................................................................................. ................................................................................................................................................. 68 68 3.2 CONTROLO DE ACESSO ................................................................................................................................................. 3.2 3.2 CONTROLO CONTROLODE DEACESSO ACESSO................................................................................................................................................. .................................................................................................................................................68 68 9.4.2 ATUALIZAÇÕES DE ...........................................................................................................70 236 3.2.1 3.2.1 UNIX, UNIX, UNIX, LINUX, LINUX, MAC MAC OX OX SSEGURANÇA ................................................................................................................................... S................................................................................................................................... ................................................................................................................................... 70 3.2.1 3.2.1 LINUX, LINUX, MAC MAC OX OX S S ................................................................................................................................... 70 70 3.2.1 UNIX, UNIX, LINUX, MAC OX S ................................................................................................................................... 70 9.4.3 DADOS ARMAZENADOS EM CLARO ....................................................................................................72 236 3.2.2 3.2.2 MAC MAC VS. VS. DAC DAC ...................................................................................................................................................... ...................................................................................................................................................... 72 3.2.2 3.2.2 MAC VS. VS. DAC DAC ...................................................................................................................................................... ...................................................................................................................................................... 7272 3.2.2MAC MAC VS. DAC ...................................................................................................................................................... 72 EXERCÍCIOS ................................................................................................................................................................................ 238 3.2.3 3.2.3 MAC MAC EM EM LINUX: LINUX: CAPACIDADES CAPACIDADES E SELINUX E SELINUX ........................................................................................... ........................................................................................... 73 73 3.2.3 3.2.3 MAC EM EM LINUX: LINUX: CAPACIDADES CAPACIDADES E ESELINUX ........................................................................................... ........................................................................................... 73 73 3.2.3MAC MAC EM LINUX: CAPACIDADES ESELINUX SELINUX ........................................................................................... 73 3.2.4 3.2.4WINDOWS.............................................................................................................................................................. WINDOWS.............................................................................................................................................................. WINDOWS.............................................................................................................................................................. 75 75 3.2.4 75 3.2.4 75 3.2.4 WINDOWS.............................................................................................................................................................. WINDOWS.............................................................................................................................................................. 75 10 EXERCÍCIOS APLICAÇÕES MÓVEIS 239 EXERCÍCIOS ................................................................................................................................................................................... ................................................................................................................................................................................... 78 78 EXERCÍCIOS EXERCÍCIOS ................................................................................................................................................................................... ................................................................................................................................................................................... 78 78 EXERCÍCIOS ................................................................................................................................................................................... 78 10.1 DISPOSITIVOS E APLICAÇÕES MÓVEIS............................................................................................................. 239 444 SEGURANÇA SEGURANÇA SEGURANÇA NA NA LINGUAGEM LINGUAGEM DE DE PROGRAMAÇÃO PROGRAMAÇÃO 79 79 10.2 AMEAÇAS ……….. ............................................................................................................................................................ 241 4 NA NA LINGUAGEM LINGUAGEM DE DE PROGRAMAÇÃO PROGRAMAÇÃO 79 79 4 SEGURANÇA SEGURANÇA NA LINGUAGEM DE PROGRAMAÇÃO 79 10.3 TOP 10 DEEVULNERABILIDADES DE APLICAÇÕES MÓVEIS ......................................................................80 245 4.1 4.1 OBJETIVOS OBJETIVOS ARQUITETURA E ARQUITETURA .................................................................................................................................... .................................................................................................................................... 80 4.14.1 OBJETIVOS E EARQUITETURA .................................................................................................................................... .................................................................................................................................... 80 80 4.1 OBJETIVOS OBJETIVOS EARQUITETURA ARQUITETURA .................................................................................................................................... 80 10.3.1 CONTROLOS FRACOS DO LADO DO SERVIDOR..............................................................................82 245 4.2 4.2SANDBOXES SANDBOXES SANDBOXES .................................................................................................................................................................. .................................................................................................................................................................. 82 4.2 4.2 .................................................................................................................................................................. .................................................................................................................................................................. 82 82 4.2 SANDBOXES SANDBOXES .................................................................................................................................................................. 82 10.3.2 ARMAZENAMENTO INSEGURO DE DADOS .......................................................................................82 246 4.2.1 4.2.1 PERMISSÕES PERMISSÕES E DOMÍNIOS E DOMÍNIOS DE DE PROTEÇÃO PROTEÇÃO ........................................................................................... ........................................................................................... 82 82 4.2.1 PERMISSÕES E DOMÍNIOS DE PROTEÇÃO ........................................................................................... 4.2.1 4.2.1 PERMISSÕES PERMISSÕESEEDOMÍNIOS DOMÍNIOSDE DEPROTEÇÃO PROTEÇÃO........................................................................................... ...........................................................................................82 82 10.3.3 PROTEÇÃO INSUFICIENTE DA COMUNICAÇÃO .................................................................................86 246 4.2.2 4.2.2 ALGORITMOS ALGORITMOS DE DE CONTROLO CONTROLO DE DE ACESSO ACESSO ............................................................................................ ............................................................................................ 86 4.2.2 ALGORITMOS DE CONTROLO DE ACESSO ............................................................................................ 86 4.2.2 4.2.2 ALGORITMOS ALGORITMOSDE DECONTROLO CONTROLODE DEACESSO ACESSO............................................................................................ ............................................................................................86 86 10.3.4 DIVULGAÇÃO INDESEJADA DE DADOS................................................................................................247 4.3 4.3SEGURANÇA SEGURANÇA SEGURANÇA DAS DAS CONVENÇÕES CONVENÇÕES DA DA LINGUAGEM LINGUAGEM ......................................................................................... ......................................................................................... 90 90 4.3 4.3 DAS DAS CONVENÇÕES CONVENÇÕES DA DA LINGUAGEM LINGUAGEM ......................................................................................... ......................................................................................... 90 90 4.3 SEGURANÇA SEGURANÇA DAS CONVENÇÕES DA LINGUAGEM ......................................................................................... 90 10.3.5................................................................................................................................................................................... AUTENTICAÇÃO E AUTORIZAÇÃO FRACAS ......................................................................................94 248 EXERCÍCIOS EXERCÍCIOS ................................................................................................................................................................................... 94 EXERCÍCIOS EXERCÍCIOS ................................................................................................................................................................................... ................................................................................................................................................................................... 94 94 EXERCÍCIOS ................................................................................................................................................................................... 94 10.3.6 CRIPTOGRAFIA INADEQUADA ................................................................................................................. 248 10.3.7 INJEÇÃO DO LADO................................................................................................................... DO CLIENTE ..............................................................................................................97 249 PARTE PARTE II – II VULNERABILIDADES – VULNERABILIDADES ................................................................................................................... ................................................................................................................... 97 97 PARTE II – PARTE ................................................................................................................... 97 PARTEIIII–VULNERABILIDADES –VULNERABILIDADES VULNERABILIDADES ................................................................................................................... 97 10.3.8 DECISÕES DE SEGURANÇA BASEADAS EM ENTRADAS NÃO CONFIÁVEIS ..................... 249 10.3.9 GESTÃO INADEQUADA DE SESSÕES ...................................................................................................99 250 5 BUFFER BUFFER OVERFLOWS OVERFLOWS 99 555 OVERFLOWS 99 BUFFER OVERFLOWS 99 5 BUFFER BUFFER OVERFLOWS 99 10.3.10 FALTA DE PROTEÇÃO DE BINÁRIOS .................................................................................................... 250 5.15.1 5.1 VULNERABILIDADES VULNERABILIDADES VULNERABILIDADES E ESUA SUA ESUA SUA PREVENÇÃO PREVENÇÃO .......................................................................................................... .......................................................................................................... 100 100 5.1 E PREVENÇÃO PREVENÇÃO .......................................................................................................... .......................................................................................................... 100 100 5.1 VULNERABILIDADES VULNERABILIDADES E SUA PREVENÇÃO .......................................................................................................... 100 EXERCÍCIOS .................................................................................................................................................................................. 251 5.2 5.2OVERFLOWS OVERFLOWS OVERFLOWS NA NA HEAP HEAP ................................................................................................................................................ ................................................................................................................................................ 102 102 5.2 NA HEAP ................................................................................................................................................ 102 5.2 NA HEAP ................................................................................................................................................ 102 5.2 OVERFLOWS OVERFLOWS NA HEAP ................................................................................................................................................ 102 OVERFLOWS OVERFLOWS NA NA PILHA PILHA ............................................................................................................................................... ............................................................................................................................................... 105 105 5.3 5.3OVERFLOWS OVERFLOWS NA NA PILHA PILHA ............................................................................................................................................... ............................................................................................................................................... 105 105 5.3 5.3 OVERFLOWS NA PILHA ............................................................................................................................................... 105 5.3 11 MÁQUINA MALICIOSA 253 BUFFER BUFFER OVERFLOWS OVERFLOWS AVANÇADOS AVANÇADOS ..................................................................................................................... ..................................................................................................................... 110110 110 5.4 5.4BUFFER OVERFLOWS OVERFLOWS AVANÇADOS AVANÇADOS ..................................................................................................................... ..................................................................................................................... 110 5.4 5.4 BUFFER OVERFLOWS AVANÇADOS ..................................................................................................................... 110 5.4 BUFFER 11.1 5.4.1 ENGENHARIA REVERSA ............................................................................................................................................ 255 OVERFLOWS OVERFLOWS AVANÇADOS AVANÇADOS NA NA HEAP HEAP ....................................................................................................... ....................................................................................................... 111 5.4.1 OVERFLOWS AVANÇADOS AVANÇADOS NA NA HEAP HEAP ....................................................................................................... ....................................................................................................... 111111111 5.4.1 5.4.1 OVERFLOWS AVANÇADOS NA HEAP ....................................................................................................... 111 5.4.1OVERFLOWS 11.1.1 FERRAMENTAS DE ENGENHARIA REVERSA ....................................................................................114 255 OVERFLOWS OVERFLOWS AVANÇADOS AVANÇADOS NA NA PILHA PILHA .................................................................................................... .................................................................................................... 114 5.4.2 5.4.2OVERFLOWS AVANÇADOS NA PILHA .................................................................................................... 114114 5.4.2 AVANÇADOS NA PILHA .................................................................................................... 5.4.2 OVERFLOWS AVANÇADOS NA PILHA .................................................................................................... 114 5.4.2 OVERFLOWS 11.1.2 PROTEÇÕES CONTRA ENGENHARIA REVERSA .............................................................................. 259 5.4.3 5.4.3ATAQUES ATAQUES ATAQUES ATRAVÉS ATRAVÉS DA DA REUTILIZAÇÃO REUTILIZAÇÃO DO DO CÓDIGO CÓDIGO DO DO PROGRAMA-ALVO PROGRAMA-ALVO .................... .................... 115 115 5.4.3 5.4.3 ATRAVÉS ATRAVÉS DA DA REUTILIZAÇÃO REUTILIZAÇÃO DO DO CÓDIGO CÓDIGO DO DO PROGRAMA-ALVO PROGRAMA-ALVO .................... .................... 115 115 5.4.3 ATAQUES ATAQUES ATRAVÉS DA REUTILIZAÇÃO DO CÓDIGO DO PROGRAMA-ALVO .................... 115 11.25.4.4 MODIFICAÇÃO DEAPONTADORES SOFTWARE ............................................................................................................................... 263 5.4.4 ATAQUES ATAQUES A A APONTADORES ....................................................................................................................... ....................................................................................................................... 117 117 5.4.4 5.4.4 ATAQUES AAAPONTADORES ....................................................................................................................... ....................................................................................................................... 117117 5.4.4ATAQUES ATAQUES AAPONTADORES APONTADORES ....................................................................................................................... 117 11.35.4.5 CÓPIA DE SOFTWARE ................................................................................................................................................ 265 OFF-BY-ONE OFF-BY-ONE ........................................................................................................................................ ........................................................................................................................................ 119 119 5.4.5 ERROS ERROS OFF-BY-ONE OFF-BY-ONE ........................................................................................................................................ ........................................................................................................................................ 119119 5.4.5 5.4.5 ERROS OFF-BY-ONE ........................................................................................................................................ 119 5.4.5ERROS ERROS 11.3.1 PROTEÇÕESDE BASEADAS EM......................................................................................................................... CONHECIMENTO................................................................................. 266 5.5 5.5VULNERABILIDADES VULNERABILIDADES VULNERABILIDADES DE INTEIROS INTEIROS ......................................................................................................................... 124 124 5.5 DE INTEIROS ......................................................................................................................... 124 5.5 DE INTEIROS ......................................................................................................................... 124 5.5 VULNERABILIDADES VULNERABILIDADES DE INTEIROS ......................................................................................................................... 124 11.3.2 PROTEÇÕES BASEADAS EM POSSE .................................................................................................... 268 OVERFLOW OVERFLOW ......................................................................................................................................................... ......................................................................................................................................................... 125 125 5.5.1 5.5.1 OVERFLOW ......................................................................................................................................................... ......................................................................................................................................................... 125 125 5.5.1 5.5.1 OVERFLOW ......................................................................................................................................................... 125 5.5.1OVERFLOW 11.45.5.2 FRAUDE EM APLICAÇÕES EM REDE .................................................................................................................... 272 UNDERFLOW UNDERFLOW ....................................................................................................................................................... ....................................................................................................................................................... 125 125 5.5.2 UNDERFLOW ....................................................................................................................................................... ....................................................................................................................................................... 125 125 5.5.2 5.5.2 UNDERFLOW ....................................................................................................................................................... 125 5.5.2UNDERFLOW EXERCÍCIOS ................................................................................................................................................................................ 275 5.5.3 5.5.3 ERROS ERROS DE DE SINAL SINAL .............................................................................................................................................. .............................................................................................................................................. 126 126 5.5.3 5.5.3 ERROS DE DE SINAL SINAL .............................................................................................................................................. .............................................................................................................................................. 126 126 5.5.3ERROS ERROS DE SINAL .............................................................................................................................................. 126 5.5.4 5.5.4 TRUNCAMENTO TRUNCAMENTO ................................................................................................................................................. ................................................................................................................................................. 127 127 5.5.4 TRUNCAMENTO ................................................................................................................................................. 127 5.5.4 5.5.4 TRUNCAMENTO TRUNCAMENTO................................................................................................................................................. .................................................................................................................................................127 127 PARTE III – TÉCNICAS E FERRAMENTAS ...............................................................................................129 277 EXERCÍCIOS EXERCÍCIOS .................................................................................................................................................................................. .................................................................................................................................................................................. 129 EXERCÍCIOS EXERCÍCIOS .................................................................................................................................................................................. .................................................................................................................................................................................. 129 129 EXERCÍCIOS .................................................................................................................................................................................. 129 AUDITORIA 279 6612 6 CORRIDAS CORRIDAS CORRIDAS MANUAL DE SOFTWARE 131 131 6 131 131 6 CORRIDAS CORRIDAS 131 12.1 MODELAÇÃO DE AMEAÇAS ...................................................................................................................................131 280 6.1 6.1 CORRIDAS CORRIDAS E ATOMICIDADE E ATOMICIDADE ....................................................................................................................................... ....................................................................................................................................... 131 6.16.1 CORRIDAS E EATOMICIDADE ....................................................................................................................................... ....................................................................................................................................... 131131 6.1 CORRIDAS CORRIDAS EATOMICIDADE ATOMICIDADE ....................................................................................................................................... 131 12.1.1 MODELOS DE AMEAÇAS .............................................................................................................................. 281 6.2 6.2TOCTOU TOCTOU TOCTOU ……….. ……….. ................................................................................................................................................................. ................................................................................................................................................................. 133 133 6.2 6.2 ……….. ……….. ................................................................................................................................................................. ................................................................................................................................................................. 133 133 6.2 TOCTOU TOCTOU ……….. ................................................................................................................................................................. 133 12.1.2 ÁRVORES DE AMEAÇAS ............................................................................................................................ 285 6.3 6.3 FICHEIROS FICHEIROS TEMPORÁRIOS TEMPORÁRIOS ......................................................................................................................................... ......................................................................................................................................... 138 138 6.3 FICHEIROS TEMPORÁRIOS ......................................................................................................................................... 138 6.3 6.3 FICHEIROS FICHEIROSTEMPORÁRIOS TEMPORÁRIOS......................................................................................................................................... .........................................................................................................................................138 138 12.1.3 ANÁLISE ARQUITETURAL DE RISCO ...................................................................................................... 287 6.4 6.4CONCORRÊNCIA CONCORRÊNCIA E EFUNÇÕES FUNÇÕES REENTRANTES.................................................................................................... REENTRANTES.................................................................................................... 140 140 6.4 E EFUNÇÕES FUNÇÕES REENTRANTES.................................................................................................... 140 6.4 CONCORRÊNCIA REENTRANTES.................................................................................................... 140 6.4CONCORRÊNCIA CONCORRÊNCIA E FUNÇÕES REENTRANTES.................................................................................................... 140 12.1.4 LIMITAÇÕES E ALTERNATIVAS ............................................................................................................... 289 6.4.1 6.4.1ROTINAS ROTINAS ROTINAS DE DE TRATAMENTO TRATAMENTO DE DE SINAIS SINAIS .................................................................................................. .................................................................................................. 141 141 6.4.1 6.4.1 DE DE TRATAMENTO TRATAMENTO DE DE SINAIS SINAIS .................................................................................................. .................................................................................................. 141 141 6.4.1 ROTINAS ROTINAS DE TRATAMENTO DE SINAIS .................................................................................................. 141 12.26.4.2 REVISÃO MANUAL DE CÓDIGO ............................................................................................................................. 290 SERVLETS SERVLETS ............................................................................................................................................................ ............................................................................................................................................................ 145 145 6.4.2 SERVLETS ............................................................................................................................................................ ............................................................................................................................................................ 145 145 6.4.2 6.4.2 SERVLETS ............................................................................................................................................................ 145 6.4.2SERVLETS EXERCÍCIOS ................................................................................................................................................................................ 295 EXERCÍCIOS .................................................................................................................................................................................. .................................................................................................................................................................................. 149 149 EXERCÍCIOS .................................................................................................................................................................................. 149 EXERCÍCIOS .................................................................................................................................................................................. 149 EXERCÍCIOS .................................................................................................................................................................................. 149 TESTE DE SOFTWARE 297 7 713 7 VALIDAÇÃO VALIDAÇÃO VALIDAÇÃO DE DE ENTRADAS ENTRADAS 151 151 7 DE DE ENTRADAS ENTRADAS 151 151 7 VALIDAÇÃO VALIDAÇÃO DE ENTRADAS 151 13.1 TESTE DE SOFTWARE E SEGURANÇA ............................................................................................................... 298 7.17.1 7.1 CONFIANÇA, CONFIANÇA, CONFIANÇA, CONFIABILIDADE CONFIABILIDADE E ENTRADAS E ENTRADAS ................................................................................................... ................................................................................................... 152 152 7.1 CONFIABILIDADE E ENTRADAS ................................................................................................... 152 7.1 CONFIANÇA, CONFIANÇA,CONFIABILIDADE CONFIABILIDADEEEENTRADAS ENTRADAS................................................................................................... ...................................................................................................152 152 13.2 INJEÇÃO DEEATAQUES ................................................................................................................................................ 301 7.2 7.2METADADOS METADADOS METADADOS METACARATERES EMETACARATERES METACARATERES ........................................................................................................................ ........................................................................................................................ 156 156 7.2 7.2 E EMETACARATERES ........................................................................................................................ ........................................................................................................................ 156 156 7.2 METADADOS METADADOS E METACARATERES ........................................................................................................................ 156 13.2.1 ARQUITETURA DE INJEÇÃO DE ATAQUES ........................................................................................ 302 STRING STRING DE DE FORMATO FORMATO .............................................................................................. .............................................................................................. 160 160 7.3 7.3VULNERABILIDADES VULNERABILIDADES VULNERABILIDADES DE DE STRING STRING DE DE FORMATO FORMATO .............................................................................................. .............................................................................................. 160 160 7.3 7.3 DE DE STRING DE FORMATO .............................................................................................. 160 7.3 VULNERABILIDADES VULNERABILIDADES DE viii vi viii vi vivivi

©  FCA – EDITORA DE INFORMÁTICA © FCA FCA – EDITORA –EDITORA EDITORA DE DE INFORMÁTICA DEINFORMÁTICA INFORMÁTICA ©© FCA ©© FCA EDITORA DEDE INFORMÁTICA © FCA –– EDITORA –––EDITORA DE INFORMÁTICA ©FCA FCA EDITORA DEINFORMÁTICA INFORMÁTICA


ÍNDICE ÍNDICE ÍNDICE ÍNDICE

8 8

14

15

16 9 9

EXERCÍCIOS ................................................................................................................................................................................... EXERCÍCIOS ................................................................................................................................................................................... 166166 13.2.2 MONITORIZAÇÃO ........................................................................................................................................... 304 EXERCÍCIOS ................................................................................................................................................................................... EXERCÍCIOS ................................................................................................................................................................................... 166166 13.2.3 ATAQUES A INJETAR ................................................................................................................................... 305 8 APLICAÇÕES WEB ........................................................................................................................................................... 306 169169 FUZZERSWEB …………. 13.3APLICAÇÕES 8 APLICAÇÕES APLICAÇÕES WEB WEB 169169 FUZZERS ........................................................................................................................................ 307 13.3.1 TIPOSWIDE DE DA WORLD WIDE WEB APLICAÇÕES WEB .................................................................................................. 8.1 8.1 DA WORLD WEB ÀSÀS APLICAÇÕES WEB .................................................................................................. 170170 8.1 DA WORLD WIDE WEB ÀS APLICAÇÕES WEB .................................................................................................. 8.1 WORLD WIDE WEB ÀS APLICAÇÕES WEB ..................................................................................................308 170170 13.3.2 ............................................................................................................................................................... TOP 10 DE VULNERABILIDADES .................................................................................................................................171 8.28.2DA TOP 10SPIKE DE VULNERABILIDADES .................................................................................................................................171 8.2TOP TOP 10 DE VULNERABILIDADES .................................................................................................................................171 8.2 10 DE VULNERABILIDADES .................................................................................................................................171 FUZZING AVANÇADO .................................................................................................................................... 310 13.3.3 INJEÇÃO ………. ................................................................................................................................................................. 8.38.3INJEÇÃO ………. ................................................................................................................................................................. 173173 8.3 INJEÇÃO ………. ................................................................................................................................................................. 173 8.3 ………. ................................................................................................................................................................. 173 13.4 INJEÇÃO VARREDORES VULNERABILIDADES .............................................................................................................. 312 8.3.1TIPOS TIPOS DE INJEÇÃO ........................................................................................................................................... 8.3.1 DEDE INJEÇÃO ........................................................................................................................................... 173173 8.3.1 TIPOS DE INJEÇÃO ........................................................................................................................................... 173 8.3.1 TIPOS DE INJEÇÃO ........................................................................................................................................... 173 PROXIES ............................................................................................................................................................................. 313 13.5 8.3.2 8.3.2CLASSIFICAÇÃO CLASSIFICAÇÃO E PREVENÇÃO ................................................................................................................ E PREVENÇÃO ................................................................................................................ 176176 8.3.2 CLASSIFICAÇÃO E PREVENÇÃO ................................................................................................................ 176 8.3.2 CLASSIFICAÇÃO E PREVENÇÃO ................................................................................................................ 176 EXERCÍCIOS ................................................................................................................................................................................... 317 8.4AUTENTICAÇÃO AUTENTICAÇÃO E GESTÃO SESSÕES ........................................................................................................... 8.4 E GESTÃO DEDE SESSÕES ........................................................................................................... 177177 AUTENTICAÇÃO E GESTÃO DE SESSÕES ........................................................................................................... 177 8.48.4AUTENTICAÇÃO E GESTÃO DE SESSÕES ........................................................................................................... 177 8.4.1DESCRIÇÃO DESCRIÇÃO .......................................................................................................................................................... 8.4.1 .......................................................................................................................................................... 177177 8.4.1DESCRIÇÃO DESCRIÇÃO .......................................................................................................................................................... 177 8.4.1 .......................................................................................................................................................... 177 ANÁLISE ESTÁTICA DE CÓDIGO 319180 8.4.2 CLASSIFICAÇÃO E PREVENÇÃO ............................................................................................................... 8.4.2 CLASSIFICAÇÃO E PREVENÇÃO ............................................................................................................... 180 8.4.2CLASSIFICAÇÃO CLASSIFICAÇÃO E PREVENÇÃO ............................................................................................................... 180 8.4.2 E PREVENÇÃO ............................................................................................................... 180 CROSS SITE SCRIPTING ................................................................................................................................................ CROSS SITE SCRIPTING ................................................................................................................................................ 182182 8.5 14.18.5 ANÁLISE ESTÁTICA BÁSICA .................................................................................................................................... 320 CROSS SITE SCRIPTING ................................................................................................................................................ 182 8.5 SITE SCRIPTING ................................................................................................................................................ 182183 8.5 CROSS 8.5.1XSS XSS POR REFLEXÃO ...................................................................................................................................... POR REFLEXÃO ...................................................................................................................................... 183 14.2 8.5.1 ANÁLISE SEMÂNTICA ................................................................................................................................................. 323 8.5.1XSS XSS POR REFLEXÃO ...................................................................................................................................... 183 8.5.1 POR REFLEXÃO ...................................................................................................................................... 183 8.5.2XSS XSS POR ARMAZENAMENTO ..................................................................................................................... 8.5.2 POR ARMAZENAMENTO ..................................................................................................................... 187187 14.2.1 VERIFICAÇÃO DE TIPOS .............................................................................................................................. 325 8.5.2XSS XSS POR ARMAZENAMENTO ..................................................................................................................... 187 8.5.2 POR ARMAZENAMENTO ..................................................................................................................... 187189 8.5.3XSS XSS BASEADO DOM .............................................................................................................................. 8.5.3 BASEADO EMEM DOM .............................................................................................................................. 189 14.2.2 ANÁLISE DE CONTROLO DE FLUXO ....................................................................................................... 326 8.5.3 XSS BASEADO EM DOM .............................................................................................................................. 189 8.5.3 BASEADO EM............................................................................................................................................ DOM .............................................................................................................................. 190 189190 8.5.4XSS INJEÇÃO CRLF ............................................................................................................................................ 8.5.4 INJEÇÃO DEDE CRLF 14.2.3 ANÁLISE FLUXO DE DADOS ............................................................................................................... 328 8.5.4INJEÇÃO INJEÇÃO DE CRLF ............................................................................................................................................ 190 8.5.4 DE CRLF ............................................................................................................................................ 190 8.5.5CLASSIFICAÇÃO CLASSIFICAÇÃO E PREVENÇÃO ................................................................................................................ 8.5.5 E PREVENÇÃO ................................................................................................................ 192192 14.3 FUNCIONAMENTO DAS FERRAMENTAS ............................................................................................................ 330 8.5.5CLASSIFICAÇÃO CLASSIFICAÇÃO E PREVENÇÃO ................................................................................................................ 192 8.5.5 E PREVENÇÃO ................................................................................................................ 192 8.6REFERÊNCIA REFERÊNCIA DIRETA A OBJETOS ......................................................................................................................... 8.6 DIRETA A............................................................................................................................................... OBJETOS ......................................................................................................................... 194194 14.4 COMENTÁRIOS FINAIS 333 REFERÊNCIA DIRETA A OBJETOS ......................................................................................................................... 194 8.68.6REFERÊNCIA DIRETA A OBJETOS ......................................................................................................................... 194 8.6.1DESCRIÇÃO DESCRIÇÃO ......................................................................................................................................................... 8.6.1 ......................................................................................................................................................... 194194 EXERCÍCIOS ................................................................................................................................................................................. 335 8.6.1DESCRIÇÃO DESCRIÇÃO ......................................................................................................................................................... 194 8.6.1 ......................................................................................................................................................... 194195 8.6.2CLASSIFICAÇÃO CLASSIFICAÇÃO E PREVENÇÃO ............................................................................................................... 8.6.2 E PREVENÇÃO ............................................................................................................... 195 8.6.2 CLASSIFICAÇÃO E PREVENÇÃO ............................................................................................................... 195 8.6.2 CLASSIFICAÇÃO E PREVENÇÃO ............................................................................................................... 195 8.7CONFIGURAÇÃO CONFIGURAÇÃO INSEGURA ...................................................................................................................................... 8.7 ...................................................................................................................................... 196196 PROTEÇÃO DINÂMICA INSEGURA 337 CONFIGURAÇÃO INSEGURA ...................................................................................................................................... 196 8.78.7CONFIGURAÇÃO INSEGURA ...................................................................................................................................... 196196 8.7.1 DESCRIÇÃO ......................................................................................................................................................... 8.7.1 DESCRIÇÃO ......................................................................................................................................................... 196 15.1 8.7.1 DETEÇÃO COM CANÁRIOS ....................................................................................................................................... 338 8.7.1DESCRIÇÃO DESCRIÇÃO ......................................................................................................................................................... 196 ......................................................................................................................................................... 196 8.7.2CLASSIFICAÇÃO CLASSIFICAÇÃO E ..................................................................................................................................... PREVENÇÃO ............................................................................................................... 8.7.2 E PREVENÇÃO ............................................................................................................... 198 341198 15.1.1 PROTEÇÃO DA HEAP 8.7.2CLASSIFICAÇÃO CLASSIFICAÇÃO E PREVENÇÃO ............................................................................................................... 198 8.7.2 ESENSÍVEIS PREVENÇÃO ............................................................................................................... 198 8.8 EXPOSIÇÃO DE DADOS SENSÍVEIS ...................................................................................................................... 200 8.8 EXPOSIÇÃO DE DADOS ...................................................................................................................... 200 HEAP NÃO EXECUTÁVEIS ........................................................................................................................ 341 15.2 PILHA E 8.8 EXPOSIÇÃO DE DADOS SENSÍVEIS ...................................................................................................................... 200 8.8 8.8.1 EXPOSIÇÃO DE DADOS SENSÍVEIS...................................................................................................................... 200 200 8.8.1DESCRIÇÃO DESCRIÇÃO ........................................................................................................................................................ 200 ........................................................................................................................................................ 15.3 8.8.1 ALEATORIZAÇÃO E OFUSCAMENTO .................................................................................................................. 200 342 8.8.1DESCRIÇÃO DESCRIÇÃO ........................................................................................................................................................ 200 ........................................................................................................................................................ 8.8.2 CLASSIFICAÇÃO E PREVENÇÃO ................................................................................................................ 8.8.2 CLASSIFICAÇÃO E PREVENÇÃO ................................................................................................................ 201201 15.3.1 ALEATORIZAÇÃO DE MEMÓRIA ............................................................................................................. 342 8.8.2 CLASSIFICAÇÃO E PREVENÇÃO ................................................................................................................ 201 8.8.2 CLASSIFICAÇÃO E PREVENÇÃO ................................................................................................................ 201 FALTA CONTROLO DE ACESSO APLICACIONAL ..................................................................................... 204 8.98.9FALTA DEDE CONTROLO DEDE ACESSO APLICACIONAL ..................................................................................... 204 15.3.2 ALEATORIZAÇÃO INSTRUÇÕES ....................................................................................................... 345 8.9 FALTA DE CONTROLO DE ACESSO APLICACIONAL ..................................................................................... 204 8.9 FALTA DEDESCRIÇÃO CONTROLO DE ACESSO APLICACIONAL ..................................................................................... 204 8.9.1DESCRIÇÃO ........................................................................................................................................................ 204 8.9.1 ........................................................................................................................................................ 204 15.3.3 OFUSCAMENTO DE APONTADORES ..................................................................................................... 346 8.9.1DESCRIÇÃO DESCRIÇÃO ........................................................................................................................................................ 204 8.9.1 ........................................................................................................................................................ 204 8.9.2 CLASSIFICAÇÃO E PREVENÇÃO .............................................................................................................. 205 8.9.2 CLASSIFICAÇÃO E PREVENÇÃO .............................................................................................................. 205 15.4 8.9.2 VERIFICAÇÃO DE INTEGRIDADE ............................................................................................................................ 346 8.9.2CLASSIFICAÇÃO CLASSIFICAÇÃO E PREVENÇÃO .............................................................................................................. 205 E PREVENÇÃO .............................................................................................................. 205 CROSS SITE REQUEST FORGERY ......................................................................................................................... 206 CROSS SITE REQUEST FORGERY ......................................................................................................................... 206 8.10 8.10 15.4.1 WINDOWS SEH ................................................................................................................................................. 346 CROSS SITE REQUEST FORGERY ......................................................................................................................... 206 8.10 CROSS SITE REQUEST FORGERY ......................................................................................................................... 206 8.10 8.10.1 DESCRIÇÃO ........................................................................................................................................................ 206 8.10.1 DESCRIÇÃO ........................................................................................................................................................ 206 15.4.2 VERIFICAÇÃO DE FIM DE VETOR ............................................................................................................ 347 8.10.1 DESCRIÇÃO ........................................................................................................................................................ 206 8.10.1 DESCRIÇÃO ........................................................................................................................................................ 206 8.10.2 CLASSIFICAÇÃO E PREVENÇÃO .............................................................................................................. 207 8.10.2 CLASSIFICAÇÃO E PREVENÇÃO .............................................................................................................. 207 15.4.3 INTEGRIDADE DE FLUXO DE CONTROLO ............................................................................................. 349 8.10.2 CLASSIFICAÇÃO E PREVENÇÃO .............................................................................................................. 207 8.10.2 CLASSIFICAÇÃO E PREVENÇÃO .............................................................................................................. 207 BIBLIOTECAS COM VULNERABILIDADES CONHECIDAS ............................................................................. 209 8.118.11BIBLIOTECAS COM VULNERABILIDADES CONHECIDAS ............................................................................. 209 15.4.4 ANÁLISE DINÂMICA DE FLUXO DECONHECIDAS DADOS ........................................................................................ 350 BIBLIOTECAS COM VULNERABILIDADES CONHECIDAS ............................................................................. 209 8.118.11BIBLIOTECAS COM VULNERABILIDADES ............................................................................. 209 8.11.1DESCRIÇÃO DESCRIÇÃO ........................................................................................................................................................ 209 ........................................................................................................................................................ 209 15.5 8.11.1 FILTRAGEM ……… .......................................................................................................................................................... 350 8.11.1DESCRIÇÃO DESCRIÇÃO ........................................................................................................................................................ 209 8.11.1 ........................................................................................................................................................ 209 8.11.2 CLASSIFICAÇÃO E PREVENÇÃO ................................................................................................................ 210 8.11.2 CLASSIFICAÇÃO E PREVENÇÃO ................................................................................................................ 210 FIREWALLS APLICACIONAIS WEB ........................................................................................................... 351 15.5.1 8.11.2 CLASSIFICAÇÃO E PREVENÇÃO ................................................................................................................ 210 8.11.2 CLASSIFICAÇÃO NÃO E PREVENÇÃO ................................................................................................................ 210 REDIRECIONAMENTOS NÃO VALIDADOS .......................................................................................................... 211 8.128.12 REDIRECIONAMENTOS VALIDADOS .......................................................................................................... 211 15.5.2 FILTRAGEM DE CÓDIGO BINÁRIO ............................................................................................................ 354 8.12 REDIRECIONAMENTOS NÃO VALIDADOS .......................................................................................................... 211 8.12 REDIRECIONAMENTOS NÃO VALIDADOS .......................................................................................................... 211 8.12.1 DESCRIÇÃO ........................................................................................................................................................... 211 8.12.1 DESCRIÇÃO ........................................................................................................................................................... 211 EXERCÍCIOS ................................................................................................................................................................................. 356 8.12.1DESCRIÇÃO DESCRIÇÃO ........................................................................................................................................................... 211 8.12.1 ........................................................................................................................................................... 211 8.12.2 CLASSIFICAÇÃO E PREVENÇÃO ................................................................................................................ 8.12.2 CLASSIFICAÇÃO E PREVENÇÃO ................................................................................................................ 213213 8.12.2 CLASSIFICAÇÃO E PREVENÇÃO ................................................................................................................ 213 8.12.2 CLASSIFICAÇÃO E PREVENÇÃO ................................................................................................................ 213 EXERCÍCIOS EXERCÍCIOS ................................................................................................................................................................................... 215215 VALIDAÇÃO E ................................................................................................................................................................................... CODIFICAÇÃO 357 EXERCÍCIOS ................................................................................................................................................................................... EXERCÍCIOS ................................................................................................................................................................................... 215215 16.1 EXPRESSÕES REGULARES....................................................................................................................................... 357 9 BASES BASES DADOS DEDE DADOS 217217 9 BASES DADOS............................................................................................................................................................... 359 16.2BASES VALIDAÇÃO DEDE DADOS 217217 BASES DE DADOS E SQL ........................................................................................................................................... 218 9.1 9.1 BASES DE DADOS E SQL ........................................................................................................................................... 218 16.2.1 ESTRATÉGIAS DE VALIDAÇÃO ................................................................................................................ 360 9.1 BASES DE DADOS E SQL ........................................................................................................................................... 218 9.1 9.2INJEÇÃO BASES DEDEDADOS E............................................................................................................................................................. SQL ........................................................................................................................................... 218 INJEÇÃO DE SQL 221 9.2 SQL ............................................................................................................................................................. 221 16.2.2 REPRESENTAÇÃO CANÓNICA ....................................................................................................................361 9.2 INJEÇÃO DE SQL ............................................................................................................................................................. 221 9.2 9.2.1 INJEÇÃO DE SQL ............................................................................................................................................................. 221 9.2.1DESCODIFICAÇÕES MECANISMOS ................................................................................................................................................... 223 MECANISMOS ................................................................................................................................................... 223 16.2.3 E SUA ORDEM ........................................................................................................ 363 9.2.1MECANISMOS MECANISMOS ................................................................................................................................................... 223 9.2.1 ................................................................................................................................................... 223 9.2.2OBJETIVOS OBJETIVOS ........................................................................................................................................................ 223 ........................................................................................................................................................ 223 16.3 9.2.2 CODIFICAÇÃO ............................................................................................................................................................... 364 9.2.2OBJETIVOS OBJETIVOS ........................................................................................................................................................ 223 9.2.2 ........................................................................................................................................................ 223 9.2.3 PREVENÇÃO ..................................................................................................................................................... 224 9.2.3 PREVENÇÃO ..................................................................................................................................................... 224 16.3.1 CODIFICAÇÃO DE SAÍDAS E XSS ............................................................................................................ 364 9.2.3 PREVENÇÃO ..................................................................................................................................................... 224 PREVENÇÃO ..................................................................................................................................................... 224 TÉCNICAS INJEÇÃO SQL ............................................................................................................................. 226 9.39.39.2.3 TÉCNICAS DEDE INJEÇÃO DEDE SQL ............................................................................................................................. 226 16.3.2 CODIFICAÇÃO DENTRO DA APLICAÇÃO .............................................................................................. 366 TÉCNICAS INJEÇÃO DE SQL ............................................................................................................................. 226 9.39.39.3.1 TÉCNICAS DEDE INJEÇÃO DE SQL ............................................................................................................................. 226 9.3.1 TAUTOLOGIAS .................................................................................................................................................. 226 TAUTOLOGIAS .................................................................................................................................................. 226 EXERCÍCIOS ................................................................................................................................................................................. 367 9.3.1TAUTOLOGIAS TAUTOLOGIAS .................................................................................................................................................. 226 9.3.1 .................................................................................................................................................. 226 9.3.2INJEÇÃO INJEÇÃO UNIÕES...................................................................................................................................... 226 9.3.2 DEDE UNIÕES...................................................................................................................................... 226 9.3.2INJEÇÃO INJEÇÃO DE UNIÕES...................................................................................................................................... 226 9.3.2 DE UNIÕES...................................................................................................................................... 226 9.3.3INJEÇÃO INJEÇÃO COMANDOS .............................................................................................................................227 9.3.3 DEDE COMANDOS .............................................................................................................................227 9.3.3INJEÇÃO INJEÇÃO COMANDOS .............................................................................................................................227 9.3.3 DEDE COMANDOS .............................................................................................................................227 9.3.4PROCEDIMENTOS PROCEDIMENTOS ARMAZENADOS ....................................................................................................... 228 9.3.4 ARMAZENADOS ....................................................................................................... 228 9.3.4 PROCEDIMENTOS ARMAZENADOS ....................................................................................................... 228 9.3.4 ARMAZENADOS ....................................................................................................... 228 9.3.5PROCEDIMENTOS COMANDOS INCORRETOS .......................................................................................................................... 230 9.3.5 COMANDOS INCORRETOS .......................................................................................................................... 230 9.3.5COMANDOS COMANDOS INCORRETOS .......................................................................................................................... 230 9.3.5 INCORRETOS .......................................................................................................................... 230 ©  FCA – EDITORA DE INFORMÁTICA © FCA – EDITORA DE INFORMÁTICA © –– EDITORA DE © FCA FCA EDITORA DE INFORMÁTICA INFORMÁTICA © FCA – EDITORA DE INFORMÁTICA © FCA – EDITORA DE INFORMÁTICA

ix vii ix vii vii vii


IPR

SEGURANÇA SEGURANÇA NO NO SOFTWARE SOFTWARE SEGURANÇA NO SOFTWARE SEGURANÇA NO SOFTWARE SEGURANÇA NO SOFTWARE 33PARTE 3 PROTEÇÃO PROTEÇÃO PROTEÇÃO EM EM SISTEMAS SISTEMAS OPERATIVOS OPERATIVOS 59 59 IV – EM TÓPICOS AVANÇADOS ...........................................................................................................59 369 3 EM SISTEMAS SISTEMAS OPERATIVOS OPERATIVOS 59 3 PROTEÇÃO PROTEÇÃO EM SISTEMAS OPERATIVOS 59 3.1 3.1 PROTEÇÃO PROTEÇÃO DE DE RECURSOS RECURSOS .......................................................................................................................................... .......................................................................................................................................... 60 60 3.13.1 PROTEÇÃO DE DE RECURSOS RECURSOS .......................................................................................................................................... .......................................................................................................................................... 60 60 3.1 PROTEÇÃO PROTEÇÃO DE RECURSOS .......................................................................................................................................... 60 3.1.1 3.1.1 MODOS MODOS DE DE FUNCIONAMENTO FUNCIONAMENTO DO DO PROCESSADOR PROCESSADOR .......................................................................... .......................................................................... 60 60 17 VIRTUALIZAÇÃO E COMPUTAÇÃO EM NUVEM 371 3.1.1 3.1.1 MODOS DE DE FUNCIONAMENTO FUNCIONAMENTO DO DO PROCESSADOR PROCESSADOR .......................................................................... .......................................................................... 60 60 3.1.1 MODOS MODOS DE FUNCIONAMENTO DO PROCESSADOR .......................................................................... 60 3.1.2 3.1.2 PROTEÇÃO PROTEÇÃO PROTEÇÃO DE DE MEMÓRIA MEMÓRIA .............................................................................................................................. .............................................................................................................................. 62 62 3.1.2 DE DE MEMÓRIA MEMÓRIA .............................................................................................................................. .............................................................................................................................. 62 3.1.2 PROTEÇÃO PROTEÇÃO DE MEMÓRIA .............................................................................................................................. 62 17.13.1.2 CONCEITOS DE VIRTUALIZAÇÃO E COMPUTAÇÃO EM NUVEM ............................................................62 373 3.2 3.2 CONTROLO CONTROLO DE DE ACESSO ACESSO ................................................................................................................................................. ................................................................................................................................................. 68 68 3.2 CONTROLO DE ACESSO ................................................................................................................................................. 68 3.2 DE ................................................................................................................................................. 3.2 CONTROLO DEACESSO ACESSO ................................................................................................................................................. 68 17.2CONTROLO CONCRETIZAÇÃO DE VIRTUALIZAÇÃO E COMPUTAÇÃO EM NUVEM .................................................68 377 3.2.1 3.2.1 UNIX, UNIX, UNIX, LINUX, LINUX, MAC MAC OX OX SS ................................................................................................................................... S................................................................................................................................... ................................................................................................................................... 70 70 3.2.1 3.2.1 LINUX, LINUX, MAC MAC OX OX S ................................................................................................................................... 70 70 3.2.1 UNIX, UNIX, LINUX, MAC OX S ................................................................................................................................... 70 17.2.1 VIRTUALIZAÇÃO DO HARDWARE ........................................................................................................... 377 3.2.2 3.2.2 MAC MAC VS. VS. DAC DAC ...................................................................................................................................................... ...................................................................................................................................................... 72 72 3.2.2 3.2.2 MAC VS. VS. DAC DAC ...................................................................................................................................................... ...................................................................................................................................................... 72 3.2.2MAC MAC VS. DAC ...................................................................................................................................................... 72 17.2.2 COMPUTAÇÃO EM NUVEM ........................................................................................................................72 380 3.2.3 3.2.3 MAC MAC EM EM LINUX: LINUX: CAPACIDADES CAPACIDADES E SELINUX E SELINUX ........................................................................................... ........................................................................................... 73 73 3.2.3 3.2.3 MAC EM EM LINUX: LINUX: CAPACIDADES CAPACIDADES E ESELINUX ........................................................................................... ........................................................................................... 73 73 3.2.3MAC MAC EM LINUX: CAPACIDADES ESELINUX SELINUX ........................................................................................... 73 17.2.3 CONTENTORES .................................................................................................................................................. 381 3.2.4 3.2.4WINDOWS.............................................................................................................................................................. WINDOWS.............................................................................................................................................................. WINDOWS.............................................................................................................................................................. 75 75 3.2.4 75 3.2.4 WINDOWS.............................................................................................................................................................. WINDOWS.............................................................................................................................................................. 75 17.33.2.4 APLICAÇÕES EM SEGURANÇA ..............................................................................................................................75 382 EXERCÍCIOS EXERCÍCIOS ................................................................................................................................................................................... ................................................................................................................................................................................... 78 78 EXERCÍCIOS EXERCÍCIOS ................................................................................................................................................................................... 78 EXERCÍCIOS ................................................................................................................................................................................... 78 17.3.1................................................................................................................................................................................... INTROSPEÇÃO .................................................................................................................................................78 383 17.3.2 PROTEÇÃO E RECUPERAÇÃO .................................................................................................................. 385 444 SEGURANÇA SEGURANÇA SEGURANÇA NA NA LINGUAGEM LINGUAGEM DE DE PROGRAMAÇÃO PROGRAMAÇÃO 79 79 4 NA LINGUAGEM LINGUAGEM DE DE PROGRAMAÇÃO PROGRAMAÇÃO 79 79 4 SEGURANÇA SEGURANÇA NA LINGUAGEM DE PROGRAMAÇÃO 79 HONEYPOTS ..................................................................................................................................................... 386 17.3.3 NA 4.1 4.1 OBJETIVOS OBJETIVOS E ARQUITETURA E ARQUITETURA .................................................................................................................................... .................................................................................................................................... 80 80 388 17.3.4 DETEÇÃO DE INTRUSÕES E ANÁLISE DE MALWARE ...................................................................80 4.14.1 OBJETIVOS E EARQUITETURA .................................................................................................................................... .................................................................................................................................... 80 4.1 OBJETIVOS OBJETIVOS EARQUITETURA ARQUITETURA .................................................................................................................................... 80 4.2 4.2SANDBOXES SANDBOXES SANDBOXES .................................................................................................................................................................. .................................................................................................................................................................. 82 82 17.3.5 DISPONIBILIDADE ...........................................................................................................................................82 389 4.2 4.2 .................................................................................................................................................................. .................................................................................................................................................................. 82 4.2 SANDBOXES SANDBOXES .................................................................................................................................................................. 82 4.2.1 4.2.1 PERMISSÕES PERMISSÕES E DOMÍNIOS E DOMÍNIOS DE DE PROTEÇÃO PROTEÇÃO ........................................................................................... ........................................................................................... 82 82 17.3.6 PROTEÇÃO FACE AO SISTEMA OPERATIVO .................................................................................... 390 4.2.1 PERMISSÕES E DOMÍNIOS DE PROTEÇÃO ........................................................................................... 82 4.2.1 4.2.1 PERMISSÕES PERMISSÕESEEDOMÍNIOS DOMÍNIOSDE DEPROTEÇÃO PROTEÇÃO........................................................................................... ...........................................................................................82 82 4.2.2 4.2.2 ALGORITMOS ALGORITMOS DE DE CONTROLO CONTROLO DE DE ACESSO ACESSO ............................................................................................ ............................................................................................ 86 86 17.3.7 COMPUTAÇÃO EM NUVEM: OUTROS USOS ...................................................................................... 392 4.2.2 ALGORITMOS DE CONTROLO DE ACESSO ............................................................................................ 86 4.2.2 4.2.2 ALGORITMOS ALGORITMOSDE DECONTROLO CONTROLODE DEACESSO ACESSO............................................................................................ ............................................................................................86 86 4.3 4.3 SEGURANÇA SEGURANÇA DAS DAS CONVENÇÕES CONVENÇÕES DA DA LINGUAGEM LINGUAGEM ......................................................................................... ......................................................................................... 90 90 17.4SEGURANÇA VULNERABILIDADES DA VIRTUALIZAÇÃO ...................................................................................................... 393 4.3 4.3 SEGURANÇA DAS DAS CONVENÇÕES CONVENÇÕES DA DA LINGUAGEM LINGUAGEM ......................................................................................... ......................................................................................... 90 90 4.3 SEGURANÇA DAS CONVENÇÕES DA LINGUAGEM ......................................................................................... 90 EXERCÍCIOS EXERCÍCIOS ................................................................................................................................................................................... ................................................................................................................................................................................... 94 94 EXERCÍCIOS ................................................................................................................................................................................ 395 EXERCÍCIOS EXERCÍCIOS ................................................................................................................................................................................... ................................................................................................................................................................................... 94 94 EXERCÍCIOS ................................................................................................................................................................................... 94

PARTE PARTE –IIII–VULNERABILIDADES VULNERABILIDADES – VULNERABILIDADES ................................................................................................................... ................................................................................................................... 97 97 18 TRUSTED COMPUTING 397 PARTE IIII II– ................................................................................................................... 97 PARTE ................................................................................................................... 97 PARTE –VULNERABILIDADES VULNERABILIDADES ................................................................................................................... 97

18.1 HARDWARE PARA SEGURANÇA .......................................................................................................................... 398 5 BUFFER BUFFER OVERFLOWS OVERFLOWS 99 18.2 TRUSTED PLATFORM MODULE..............................................................................................................................99 400 555 BUFFER OVERFLOWS 99 OVERFLOWS 99 5 BUFFER BUFFER OVERFLOWS 99 18.2.1 ARQUITETURA DO TPM.......................................................................................................... ............................................................................................................ 401 5.15.1 5.1 VULNERABILIDADES VULNERABILIDADES VULNERABILIDADES E ESUA SUA EINTERNA SUA PREVENÇÃO PREVENÇÃO .......................................................................................................... .......................................................................................................... 100 100 5.1 E PREVENÇÃO PREVENÇÃO .......................................................................................................... 100 100 5.1 VULNERABILIDADES VULNERABILIDADES ESUA SUA PREVENÇÃO .......................................................................................................... 100 18.2.2 INTERAÇÃO COM O TPM ............................................................................................................................ 403 5.2 5.2OVERFLOWS OVERFLOWS OVERFLOWS NA NA HEAP HEAP ................................................................................................................................................ ................................................................................................................................................ 102 102 5.2 NA HEAP ................................................................................................................................................ 102 5.2 NA HEAP ................................................................................................................................................ 102 5.2 OVERFLOWS OVERFLOWS NA HEAP ................................................................................................................................................ 102 18.2.3 APLICAÇÕES DO TPM .................................................................................................................................. 405 OVERFLOWS OVERFLOWS NA NA PILHA PILHA ............................................................................................................................................... ............................................................................................................................................... 105 105 5.3 5.3 OVERFLOWS NA NA PILHA PILHA ............................................................................................................................................... ............................................................................................................................................... 105 105 5.3 5.3 OVERFLOWS NA PILHA ............................................................................................................................................... 105 5.3OVERFLOWS 18.2.3.1 VERIFICAÇÃO DE INTEGRIDADE DO SISTEMA ................................................................110 405 BUFFER BUFFER OVERFLOWS OVERFLOWS AVANÇADOS AVANÇADOS ..................................................................................................................... ..................................................................................................................... 110 110 5.4 5.4BUFFER OVERFLOWS OVERFLOWS AVANÇADOS AVANÇADOS ..................................................................................................................... ..................................................................................................................... 110 5.4 5.4 BUFFER OVERFLOWS AVANÇADOS ..................................................................................................................... 110 5.4 BUFFER 18.2.3.2 ATESTAÇÃO REMOTA ................................................................................................................ 407 OVERFLOWS OVERFLOWS AVANÇADOS AVANÇADOS NA NA HEAP HEAP ....................................................................................................... ....................................................................................................... 111 5.4.1 5.4.1 OVERFLOWS AVANÇADOS AVANÇADOS NA NA HEAP HEAP ....................................................................................................... ....................................................................................................... 111111111 5.4.1 5.4.1 OVERFLOWS AVANÇADOS NA HEAP ....................................................................................................... 111 5.4.1OVERFLOWS 18.2.3.3 CIFRA DE DISCO ............................................................................................................................. 409 OVERFLOWS OVERFLOWS AVANÇADOS AVANÇADOS NA NA PILHA PILHA .................................................................................................... .................................................................................................... 114 114 5.4.2 5.4.2OVERFLOWS AVANÇADOS NA PILHA .................................................................................................... 114 5.4.2 AVANÇADOS NA PILHA .................................................................................................... 114 5.4.2 OVERFLOWS AVANÇADOS NA PILHA .................................................................................................... 114 5.4.2 OVERFLOWS 18.35.4.3 AMBIENTES DEATRAVÉS EXECUÇÃO CONFIÁVEIS ............................................................................................................ 410 5.4.3 5.4.3ATAQUES ATAQUES ATAQUES ATRAVÉS ATRAVÉS DA DA REUTILIZAÇÃO REUTILIZAÇÃO DO DO CÓDIGO CÓDIGO DO DO PROGRAMA-ALVO PROGRAMA-ALVO .................... .................... 115 115 5.4.3 ATRAVÉS DA DA REUTILIZAÇÃO REUTILIZAÇÃO DO DO CÓDIGO CÓDIGO DO DO PROGRAMA-ALVO PROGRAMA-ALVO .................... .................... 115 115 5.4.3 ATAQUES ATAQUES ATRAVÉS DA REUTILIZAÇÃO DO CÓDIGO DO PROGRAMA-ALVO .................... 115 18.3.1 ARM TRUSTZONE............................................................................................................................................. 410 5.4.4 5.4.4 ATAQUES ATAQUES A APONTADORES A APONTADORES ....................................................................................................................... ....................................................................................................................... 117 117 5.4.4 5.4.4 ATAQUES AAAPONTADORES ....................................................................................................................... ....................................................................................................................... 117117 5.4.4ATAQUES ATAQUES AAPONTADORES APONTADORES ....................................................................................................................... 117 18.3.2 INTELOFF-BY-ONE SGX ............................................................................................................................................................. 411 OFF-BY-ONE ........................................................................................................................................ ........................................................................................................................................ 119 119 5.4.5 5.4.5 ERROS ERROS OFF-BY-ONE OFF-BY-ONE ........................................................................................................................................ ........................................................................................................................................ 119119 5.4.5 5.4.5 ERROS OFF-BY-ONE ........................................................................................................................................ 119 5.4.5ERROS ERROS EXERCÍCIOS .................................................................................................................................................................................. 413 5.5 5.5 VULNERABILIDADES VULNERABILIDADES DE DE INTEIROS INTEIROS ......................................................................................................................... ......................................................................................................................... 124 124 5.5 DE INTEIROS ......................................................................................................................... 124 5.5 VULNERABILIDADES DE INTEIROS ......................................................................................................................... 124 5.5VULNERABILIDADES VULNERABILIDADES DE INTEIROS ......................................................................................................................... 124 OVERFLOW OVERFLOW ......................................................................................................................................................... ......................................................................................................................................................... 125 125 5.5.1 5.5.1 OVERFLOW ......................................................................................................................................................... ......................................................................................................................................................... 125 125 5.5.1 5.5.1 OVERFLOW ......................................................................................................................................................... 125 5.5.1OVERFLOW UNDERFLOW UNDERFLOW ....................................................................................................................................................... ....................................................................................................................................................... 125 125 5.5.2 5.5.2 19 TOLERÂNCIA A INTRUSÕES DISTRIBUÍDA 415 UNDERFLOW ....................................................................................................................................................... ....................................................................................................................................................... 125 125 5.5.2 5.5.2 UNDERFLOW ....................................................................................................................................................... 125 5.5.2UNDERFLOW 5.5.3 5.5.3 ERROS ERROS DE DE SINAL SINAL .............................................................................................................................................. .............................................................................................................................................. 126 126 19.15.5.3 CONCEITOS DE TOLERÂNCIA A INTRUSÕES ..................................................................................................... 416 5.5.3 ERROS DE DE SINAL SINAL .............................................................................................................................................. .............................................................................................................................................. 126 126 5.5.3ERROS ERROS DE SINAL .............................................................................................................................................. 126 5.5.4 5.5.4 TRUNCAMENTO TRUNCAMENTO ................................................................................................................................................. ................................................................................................................................................. 127 127 19.25.5.4 REPLICAÇÃO ................................................................................................................................................................. 419 TRUNCAMENTO ................................................................................................................................................. 127 5.5.4 5.5.4 TRUNCAMENTO TRUNCAMENTO................................................................................................................................................. .................................................................................................................................................127 127 EXERCÍCIOS EXERCÍCIOS .................................................................................................................................................................................. .................................................................................................................................................................................. 129 129 19.2.1.................................................................................................................................................................................. REPLICAÇÃO DE MÁQUINAS DE ESTADOS ......................................................................................... 419 EXERCÍCIOS EXERCÍCIOS .................................................................................................................................................................................. 129 129 EXERCÍCIOS .................................................................................................................................................................................. 129 19.2.2 QUÓRUNS BIZANTINOS............................................................................................................................... 425 666 CORRIDAS CORRIDAS CORRIDAS 131 131 19.3 RECUPERAÇÃO PROATIVA......................................................................................................................................131 429 6 131 6 CORRIDAS CORRIDAS 131 19.4CORRIDAS APLICAÇÕES DA TOLERÂNCIA A INTRUSÕES DISTRIBUÍDAS .................................................................. 431 6.1 6.1 CORRIDAS E ATOMICIDADE E ATOMICIDADE ....................................................................................................................................... ....................................................................................................................................... 131 131 6.16.1 CORRIDAS E EATOMICIDADE ....................................................................................................................................... ....................................................................................................................................... 131131 6.1 CORRIDAS CORRIDAS EATOMICIDADE ATOMICIDADE ....................................................................................................................................... 131 431 19.4.1 BITCOIN, BLOCKCHAIN E DISTRIBUTED LEDGERS ............................................................................. 6.2 6.2TOCTOU TOCTOU TOCTOU ……….. ……….. ................................................................................................................................................................. ................................................................................................................................................................. 133 133 6.2 6.2 ……….. ……….. ................................................................................................................................................................. ................................................................................................................................................................. 133 133 6.2 TOCTOU TOCTOU ……….. ................................................................................................................................................................. 133 19.4.2 DEPSKY: ARMAZENAMENTO DE DADOS NA NUVEM .................................................................. 434 6.3 6.3 FICHEIROS FICHEIROS TEMPORÁRIOS TEMPORÁRIOS ......................................................................................................................................... ......................................................................................................................................... 138 138 6.3 FICHEIROS TEMPORÁRIOS ......................................................................................................................................... 138 6.3 6.3 FICHEIROS FICHEIROSTEMPORÁRIOS TEMPORÁRIOS......................................................................................................................................... .........................................................................................................................................138 138 19.4.3 ARQUITETURA DPASA ................................................................................................................................ 436 6.4 6.4CONCORRÊNCIA CONCORRÊNCIA E EFUNÇÕES FUNÇÕES REENTRANTES.................................................................................................... REENTRANTES.................................................................................................... 140 140 6.4 E EFUNÇÕES FUNÇÕES REENTRANTES.................................................................................................... 140 6.4 CONCORRÊNCIA REENTRANTES.................................................................................................... 140 6.4CONCORRÊNCIA CONCORRÊNCIA E FUNÇÕES REENTRANTES.................................................................................................... 140 EXERCÍCIOS ................................................................................................................................................................................ 438 6.4.1 6.4.1 ROTINAS ROTINAS DE DE TRATAMENTO TRATAMENTO DE DE SINAIS SINAIS .................................................................................................. .................................................................................................. 141 141 6.4.1 6.4.1 ROTINAS DE DE TRATAMENTO TRATAMENTO DE DE SINAIS SINAIS .................................................................................................. .................................................................................................. 141141 6.4.1ROTINAS ROTINAS DE TRATAMENTO DE SINAIS .................................................................................................. 141 SERVLETS SERVLETS ............................................................................................................................................................ ............................................................................................................................................................ 145 145 6.4.2 6.4.2 SERVLETS ............................................................................................................................................................ ............................................................................................................................................................ 145 145 6.4.2 6.4.2 SERVLETS ............................................................................................................................................................ 145 6.4.2SERVLETS EXERCÍCIOS EXERCÍCIOS .................................................................................................................................................................................. .................................................................................................................................................................................. 149 149 CONCLUSÃO ........................................................................................................................................................................................ 439 EXERCÍCIOS .................................................................................................................................................................................. 149 EXERCÍCIOS .................................................................................................................................................................................. 149 EXERCÍCIOS .................................................................................................................................................................................. 149 REFERÊNCIAS BIBLIOGRÁFICAS .................................................................................................................................................. 441 7 77 VALIDAÇÃO VALIDAÇÃO VALIDAÇÃO DE DE ENTRADAS ENTRADAS 151 151 7 DE ENTRADAS ENTRADAS 151 151 7 VALIDAÇÃO VALIDAÇÃO DE ENTRADAS 151 RECURSOS NA DE WEB ........................................................................................................................................................................ 455 7.17.1 7.1 CONFIANÇA, CONFIANÇA, CONFIANÇA, CONFIABILIDADE CONFIABILIDADE E ENTRADAS E ENTRADAS ................................................................................................... ................................................................................................... 152 152 7.1 CONFIABILIDADE E ENTRADAS ................................................................................................... 152 7.1 CONFIANÇA, CONFIANÇA,CONFIABILIDADE CONFIABILIDADEEEENTRADAS ENTRADAS................................................................................................... ...................................................................................................152 152 ÍNDICE ........................................................................................................................................................................... 459 7.2 7.2REMISSIVO METADADOS METADADOS E EMETACARATERES METACARATERES EMETACARATERES METACARATERES ........................................................................................................................ ........................................................................................................................ 156 156 7.2 7.2 METADADOS E ........................................................................................................................ ........................................................................................................................ 156 156 7.2METADADOS METADADOS E METACARATERES ........................................................................................................................ 156 STRING STRING DE DE FORMATO FORMATO .............................................................................................. .............................................................................................. 160 160 7.3 7.3VULNERABILIDADES VULNERABILIDADES VULNERABILIDADES DE DE STRING STRING DE DE FORMATO FORMATO .............................................................................................. .............................................................................................. 160 160 7.3 7.3 DE DE STRING DE FORMATO .............................................................................................. 160 7.3 VULNERABILIDADES VULNERABILIDADES DE x vi vi X vivivi

©  FCA – EDITORA DE INFORMÁTICA © FCA © FCA – EDITORA – EDITORA DE INFORMÁTICA DE INFORMÁTICA ©© FCA EDITORA DEDE INFORMÁTICA ©FCA FCA EDITORA DEINFORMÁTICA INFORMÁTICA © FCA –– EDITORA – ––EDITORA DE INFORMÁTICA


IPRP IPRP IPRP TSWLatexianTemp_000032.tex TSWLatexianTemp_000032.tex TSWLatexianTemp_000032.tex 4/8/2017 4/8/2017 4/8/2017 16:16: 1816: 18 18 Page Page xi Page xi xi

ÍNDICE EXERCÍCIOS ................................................................................................................................................................................... 166 8

APLICAÇÕES WEB

169

8.1 DA WORLD WIDE WEB ÀS APLICAÇÕES WEB .................................................................................................. 170 8.2 TOP 10 DE VULNERABILIDADES.................................................................................................................................171 8.3 INJEÇÃO ………. ................................................................................................................................................................. 173 8.3.1 TIPOS DE INJEÇÃO ........................................................................................................................................... 173 8.3.2 CLASSIFICAÇÃO E PREVENÇÃO ................................................................................................................ 176 8.4 AUTENTICAÇÃO E GESTÃO DE SESSÕES ........................................................................................................... 177 8.4.1 DESCRIÇÃO .......................................................................................................................................................... 177 8.4.2 CLASSIFICAÇÃO E PREVENÇÃO ............................................................................................................... 180 8.5 CROSS SITE SCRIPTING ................................................................................................................................................182 8.5.1 XSS POR REFLEXÃO ...................................................................................................................................... 183 8.5.2 XSS POR ARMAZENAMENTO ..................................................................................................................... 187 Miguel Miguel Miguel Pupo Pupo Correia Pupo Correia Correia 8.5.3 XSS BASEADO EM DOM .............................................................................................................................. 189 8.5.4 INJEÇÃO CRLF ............................................................................................................................................ 190 Professor Professor Professor Associado Associado Associado doDEdo Departamento Departamento do Departamento de de Engenharia Engenharia de Engenharia Informática Informática Informática do do Instituto Instituto do Instituto Superior Superior Superior TécTéc-Téc8.5.5 CLASSIFICAÇÃO E PREVENÇÃO ................................................................................................................192 nico nico da nico da Universidade da Universidade Universidade de de Lisboa. de Lisboa. Lisboa. É membro É membro É membro sénior sénior sénior do do Grupo do Grupo Grupo de de Sistemas de Sistemas Sistemas Distribuídos Distribuídos Distribuídos do do do 8.6 REFERÊNCIA DIRETA A OBJETOS ......................................................................................................................... 194 Laboratório Laboratório Laboratório Associado Associado INESC-ID. INESC-ID. INESC-ID. Participou Participou Participou emem vários em vários vários projetos projetos projetos europeus europeus europeus relacionados relacionados relacionados com com com 8.6.1Associado DESCRIÇÃO ......................................................................................................................................................... 194 segurança segurança segurança (SafeCloud, (SafeCloud, (SafeCloud, PCAS, PCAS, PCAS, TCLOUDS, TCLOUDS, TCLOUDS, ReSIST, ReSIST, ReSIST, CRUTIAL CRUTIAL CRUTIAL e MAFTIA). e MAFTIA). e MAFTIA). Tem Tem mais Tem mais de mais de 150 de 150 8.6.2 CLASSIFICAÇÃO E PREVENÇÃO ............................................................................................................... 195 150 publicações publicações emem revistas em revistas revistas e conferências e conferências e ...................................................................................................................................... conferências internacionais internacionais internacionais e éemembro éemembro é membro sénior sénior sénior do do IEEE. do IEEE. IEEE. 8.7publicações CONFIGURAÇÃO INSEGURA 196 8.7.1 DESCRIÇÃO ......................................................................................................................................................... 196 8.7.2 CLASSIFICAÇÃO E PREVENÇÃO ............................................................................................................... 198 Paulo Paulo Paulo Jorge Jorge Jorge Sousa Sousa Sousa 8.8 EXPOSIÇÃO DE DADOS SENSÍVEIS...................................................................................................................... 200 DESCRIÇÃO ........................................................................................................................................................ CEO CEO eCEO CSO e8.8.1 CSO e da CSO da Maxdata da Maxdata Maxdata Software, Software, Software, uma uma PME uma PME PME portuguesa portuguesa portuguesa queque cria que cria software cria software software para para apara área a200 área a área EePREVENÇÃO ................................................................................................................ 201emem da da Saúde Saúde da 8.8.2 Saúde há há 4CLASSIFICAÇÃO décadas 4 hádécadas 4 décadas e pretende e pretende pretende tornar-se tornar-se tornar-se uma uma referência uma referência referência internacional. internacional. internacional. É doutorado É doutorado É doutorado em 8.9 FALTA DE CONTROLO DE ACESSO APLICACIONAL ..................................................................................... 204 Informática Informática Informática pela pela Universidade pela Universidade Universidade de de Lisboa Lisboa de Lisboa (UL). (UL). Tem (UL). Tem participado Tem participado participado emem vários em vários vários projetos projetos projetos europeus europeus europeus 8.9.1 DESCRIÇÃO ........................................................................................................................................................ 204 e nacionais e nacionais e nacionais relacionados relacionados com com segurança, com segurança, segurança, e foi e foi vencedor e foi vencedor vencedor do do Prémio do Prémio Prémio Científico Científico Científico IBM IBM 2007 IBM 2007 . 2007 . . 8.9.2relacionados CLASSIFICAÇÃO E PREVENÇÃO .............................................................................................................. 205 Entre Entre Entre 2001 2001 e 2001 2010, eSITE 2010, e REQUEST 2010, foi foi investigador foi investigador investigador e......................................................................................................................... professor e professor e professor (2007-2010) (2007-2010) (2007-2010) da da Faculdade da Faculdade Faculdade de de Ciências de Ciências Ciências da da da CROSS FORGERY 206 8.10 UL.UL. OUL. seu O8.10.1 seu Otrabalho seu trabalho trabalho científico científico científico tem tem mais tem mais de mais de 800 de 800 citações. 800 citações. citações. DESCRIÇÃO ........................................................................................................................................................ 206 8.10.2 CLASSIFICAÇÃO E PREVENÇÃO .............................................................................................................. 207 8.11 BIBLIOTECAS COM VULNERABILIDADES CONHECIDAS ............................................................................. 209 8.11.1 DESCRIÇÃO ........................................................................................................................................................ 209 8.11.2 CLASSIFICAÇÃO E PREVENÇÃO ................................................................................................................210 8.12 REDIRECIONAMENTOS NÃO VALIDADOS .......................................................................................................... 211 8.12.1 DESCRIÇÃO ........................................................................................................................................................... 211 8.12.2 CLASSIFICAÇÃO E PREVENÇÃO ................................................................................................................ 213 EXERCÍCIOS ................................................................................................................................................................................... 215

OS OS OS AUTORES AUTORES AUTORES

9

BASES DE DADOS

217

9.1 BASES DE DADOS E SQL ........................................................................................................................................... 218 9.2 INJEÇÃO DE SQL ............................................................................................................................................................. 221 9.2.1 MECANISMOS................................................................................................................................................... 223 9.2.2 OBJETIVOS ........................................................................................................................................................ 223 9.2.3 PREVENÇÃO ..................................................................................................................................................... 224 9.3 TÉCNICAS DE INJEÇÃO DE SQL ............................................................................................................................. 226 9.3.1 TAUTOLOGIAS.................................................................................................................................................. 226 9.3.2 INJEÇÃO DE UNIÕES...................................................................................................................................... 226 9.3.3 INJEÇÃO DE COMANDOS .............................................................................................................................227 9.3.4 PROCEDIMENTOS ARMAZENADOS ....................................................................................................... 228 9.3.5 COMANDOS INCORRETOS .......................................................................................................................... 230 xi xi xi vii

c©  FCA c FCA c –FCA FCA EDITORA DE INFORMÁTICA INFORMÁTICA –– EDITORA EDITORA – DE EDITORA DE INFORMÁTICA DE INFORMÁTICA

© FCA – EDITORA DE INFORMÁTICA



IPRP IPRP TSWLatexianTemp_000032.tex TSWLatexianTemp_000032.tex 4/8/2017 4/8/2017 18 18 Page Page xi xi IPRP TSWLatexianTemp_000032.tex 4/8/2017 16:16: 1816: Page xiii

OS OS AUTORES AUTORES PREFÁCIO Miguel Pupo Pupo Correia Correia OsMiguel problemas actuais da segurança informática residem numa confluência preocupante de dois factores: por um lado, o aumento das ameaças aos sistemas, redes e infra-estruturas Professor Professor Associado Associado do Departamento do Departamento de Engenharia de Engenharia Informática Informática do Instituto do Instituto Superior Superior Téc-Téce, por outro, a persistência das fragilidades dos mesmos sistemas. O primeiro factor não niconico da da Universidade Universidade de de Lisboa. Lisboa. É membro É membro sénior sénior do do Grupo Grupo de de Sistemas Sistemas Distribuídos Distribuídos do do desaparecerá tão cedo, pelo que urge abordar o segundo, tarefa para a qual o presente Laboratório Laboratório Associado Associado INESC-ID. INESC-ID. Participou Participou emem vários vários projetos projetos europeus europeus relacionados relacionados com com livro dá uma contribuição preciosa. segurança segurança (SafeCloud, (SafeCloud, PCAS, PCAS, TCLOUDS, TCLOUDS, ReSIST, ReSIST, CRUTIAL CRUTIAL e MAFTIA). e MAFTIA). Tem Tem mais mais de de 150150 publicações emacerca em revistas revistas conferências e conferências internacionais e éemembro é membro sénior sénior do do IEEE. IEEE. Sepublicações havia dúvidas do eprimeiro factor,internacionais elas terão desaparecido face a ataques recentes, como a “revolta das coisas”, em Outubro de 2016, um ataque de negação de serviço Paulo Paulo Jorge Jorge Sousa Sousa global protagonizado por improváveis dispositivos, como camâras de vigilância, leitores de DVD ou impressoras. Ou ainda o “rapto para resgate”, em Maio de 2017, pelo pacote CEO CEO e CSO e CSO da da Maxdata Maxdata Software, Software, uma uma PME PME portuguesa portuguesa queque criacria software software para para a área a área WannaCry, que fez a cifração forçada de inúmeros sistemas de informação em todo o da Saúde da Saúde há 4 hádécadas 4 décadas e pretende e pretende tornar-se tornar-se uma uma referência referência internacional. internacional. É doutorado É doutorado emem mundo, pedindo um pagamento pela chave de decifração. Mas, talvez o pior esteja para Informática Informática pelapela Universidade Universidade de Lisboa de Lisboa (UL). (UL). Tem Tem participado participado emem vários vários projetos projetos europeus europeus vir, se um dia uma esmagadora percentagem de uma “nuvem” comercial for alvo desse e nacionais e nacionais relacionados relacionados com com segurança, segurança, e foi e foi vencedor vencedor do do Prémio Prémio Científico Científico IBM IBM 2007 2007 . . ransomware e o atacante, um ciberterrorista, deitar fora a chave... Entre Entre 2001 2001 e 2010, e 2010, foi foi investigador investigador e professor e professor (2007-2010) (2007-2010) da da Faculdade Faculdade de de Ciências Ciências da da UL.UL. O seu O seu trabalho trabalho científico científico tem mais mais dedo de 800 800 citações. citações. Torna-se, pois, crucial mitigar ostem problemas segundo factor, causado pelas debilidades arquitecturais e infra-estruturais, pela fragilidade e inoperacionalidade de políticas e planos de contingência e, finalmente, pelas vulnerabilidades crónicas do software. O presente livro, na sua 2.a edição, pretende abordar estas últimas. A compreensão da importância do rigor na escrita e configuração correcta de software e, por maioria de razão, segura, tem sido ofuscada por critérios como “rapidez”, “facilidade” ou “funcionalidade”. Infelizmente, hoje em dia começa-se a assistir aos perigos do software que: “rapidamente” rebenta de forma acidental ou cai nas mãos de piratas informáticos; “facilmente” permite a intrusão de vizinhos indesejáveis nos nossos sistemas; disponibiliza, também aos hackers, ofuscantes mas, quiçá, dispensáveis “funcionalidades”. Uma obra completa e actual sobre segurança de software era necessária, o que ficou atestado pelo sucesso da 1.a edição de Segurança no Software, pela pena de Miguel Correia e Paulo Sousa, que ao longo de 19 capítulos divididos em quatro partes nos guiam pelos temas fundamentais da disciplina. Começando pela Protecção e avançando de imediato para uma cobertura muito completa do tema das Vulnerabilidades, o livro continua com o tratamento de Técnicas e Ferramentas, completando-se, para estudos continuados, com uma parte de Tópicos Avançados.

xiii xi xi xiii

c – FCA c –FCA c ©  FCA –EDITORA EDITORA DEINFORMÁTICA INFORMÁTICA EDITORA –DE EDITORA DE INFORMÁTICA DE INFORMÁTICA FCA


IPRP IPRP

TSWLatexianTemp_000032.tex TSWLatexianTemp_000032.tex

4/8/2017 4/8/2017

16:16: 1818

Page Page 14xiv

SEGURANÇA SEGURANÇA NO NO SOFTWARE SOFTWARE

A No integridade entanto, esta diz respeito área evoluiu à ausência imenso nos de alterações últimos anos, nãoquer autorizadas em ferramentas ao sistema e metodoou à informação logias de ataque, em causa. quer de defesa, pedindo uma actualização. Sete anos depois, os autores oferecem-nos uma revisão abrangente e cativante desta problemática. Muito pouco do A disponibilidade é a prontidão do sistema para fornecer um serviço ou da informação que aconteceu nestes sete anos terá ficado por cobrir nesta 2.a edição, na qual, além de para ser acedida. uma actualização de todos os capítulos, se abordam novos temas, como a segurança no desenvolvimentoa de software a segurança na linguagem O ou dramático Frequentemente, estas três éeainda adicionado o atributo de da programação. autenticidade, seja, vulnerabilidades emoaplicações móveis merece obviamente relevo,este bem daincremento medida emdas que a informação ou serviço fornecido são genuínos. Por vezes, como o das ameaças, é reforçado. Tópicos tecnológicos atributo é recrudescimento denominado autenticação, mascujo estetratamento termo aplica-se mais propriamente ao ato entretanto foram trazidos para aouribalta do palco da segurança não são esquecidos, deque verificar a autenticidade de alguém de algo. como a computação em nuvem, os contentores, os ambientes de execução confiáveis, Na definição dos atributos usámos duas vezes o termo “não autorizada”. A definição do que a Bitcoin e a Blockchain. Esta evolução tecnológica tem acelerado a maturação e encuré ou não autorizado, ou, de forma mais genérica, do conjunto de requisitos de segurança tado o horizonte de utilização industrial de técnicas outrora do âmbito académico, como a que têm de ser satisfeitos pelo sistema, constitui a sua política de segurança. A política tolerância a intrusões distribuída, que merece actualização nesta edição. é geralmente definida pela organização onde se insere o sistema e pode ser apresentada Seria difícilde pensar em alguém melhor para escrever este livro militar do quepode Miguel Correia sob a forma um documento escrito. Por exemplo, uma política definir que e Paulo Sousa,classificado com umacomo experiência iniciada e temperada por vários um documento “confidencial” só pode ser lido por pessoas com anos o nívelde internacional na Faculdade de Ciências da Universidade de Lisboa (FCUL) – deinvestigação autorização (clearance) correspondente. com projectos internacionais extremamente bem-sucedidos e leccionação de disciplinas Um tema vasto ligado à segurança é o da privacidade. Sob o ponto de vista dos sistemas de ponta em segurança ao mais alto nível, como o Mestrado em Segurança Informática técnicos, a privacidade é a confidencialidade de dados pessoais (nome, morada, números (MSI) da FCUL em parceria com a Universidade de Carnegie Mellon (EUA) – e continuada de identificação, números de telefone, dados de cartões de crédito, etc.). nas suas presentes carreiras profissionais. É, portanto, com imenso prazer que encorajo o leitor a deambular pelos vários capítu-

do livro, o qual apresenta uma resenha completíssima e actual do que deve ser um 1.1los VULNERABILIDADES

curso de segurança de software, desde as agradáveis citações motivadoras na abertura de Um conceito fundamental domínio da segurança software é ode deprofundidade vulnerabilidade. cada capítulo, às matériasnonele contidas, descritas de com um misto cienUma vulnerabilidade é um defeito do sistema (de software ou outro) que ser explo-de tífica para iniciados e de clareza para uma larga audiência de cientistas epode engenheiros rado por um atacante com o objetivoem de segurança. violar a política de segurança. As vulnerabilidades computadores não especializados podem ser classificadas com base em três categorias [229]: Luxemburgo, 21 de Julho de 2017 Vulnerabilidade de projeto – introduzida durante a fase de projeto do software (obtenção de requisitos e desenho). Um exemplo é a decisão de usar um mecanismo 1 Paulo Esteves Veríssimo de autenticação fraco ou não considerar que a comunicação pode ser observada na rede; Professor Catedrático da Universidade do Luxemburgo Vulnerabilidade de codificação (ou de implementação) – introduzida durante a programação (ou codificação) do software, ou seja, um bug com implicações de segurança. Um exemplo é a falta de verificação de limites de escrita num buffer que permite um ataque de buffer overflow (Capítulo 5); Vulnerabilidade operacional – causada pelo ambiente no qual o software é executado ou pela sua configuração. Um exemplo é a existência de contas sem senha (password) num sistema de gestão de bases de dados. A segurança de software diz respeito a estes três tipos de vulnerabilidades. No li1 Por vontade dointeressar autor, o texto deste prefácio não respeita o novoas Acordo vro vão-nos muito particularmente de Ortográfico. codificação, que nos parecem ser c ©  c –FCA 14xiv xiv FCA EDITORA – EDITORA DEDE INFORMÁTICA DE INFORMÁTICA FCA – EDITORA INFORMÁTICA

IPR


IPRPIPRP TSWLatexianTemp_000032.tex 4/8/2017 16: 18 Page 9 Page IPRP IPRP TSWLatexianTemp_000032.tex TSWLatexianTemp_000032.tex 4/8/2017 4/8/2017 1818 Page 9 9 TSWLatexianTemp_000032.tex 4/8/2017 16: 16: 1816: Page xv

INTRODUÇÃO INTRODUÇÃO INTRODUÇÃO PREFÁCIO NosAGRADECIMENTOS dias de hoje quase não é possível passar um momento da nossa vida sem que, de AGRADECIMENTOS AGRADECIMENTOS

um modo ou de outro, sejamos afetados pelo que se passa no mundo digital. Desde o a 1.a Edição 1.a 1.Edição Edição quase omnipresente smartphone até aos mais discretos sensores, as probabilidades de algum aspeto da nossa vidaa contribuição, estar ser acompanhado um sistema informático são Este livro não teria existido sem apoio e apoio encorajamento de muitas pessoas. Este Este livro livro não não teria teria existido existido sem sem aa contribuição, a contribuição, apoio epor encorajamento e encorajamento de de muitas muitas pessoas. pessoas. cada vez mais próximas dos 100%. De forma ubíqua, estes sistemas estão presentes em Um todos primeiro agradecimento vaivida paraevai oacompanham-nos Prof. Paulo Esteves Veríssimo, por incontáveis raUm Um primeiro agradecimento vai para para o Prof. o Prof. Paulo Paulo Esteves Veríssimo, Veríssimo, por por incontáveis incontáveis ra-raosprimeiro aspetos daagradecimento nossa ao Esteves longo desta. Tendo este panorama zõesem entre as quais a de nos ter ensinado muito do que sabemos sobre investigação zões zões entre entre as as quais quais a de a de nos nos ter ter ensinado ensinado muito muito do do que que sabemos sabemos sobre sobre investigação investigação mente, o desenvolvimento de software de forma segura assume uma relevância cada científica ecientífica por–ter a acedido prefaciar este livro, o que muito nos honra. Ahonra. este juntamos e acedido por e por terinvisível ter acedido avida prefaciar este este livro, livro, o na que o que muito muito nos nos honra. A este A este juntamos vez científica maior embora – anaprefaciar dos indivíduos, operação das organizações ejuntamos no um forte agradecimento a dois colegas com quem temos tido o privilégio de trabalhar ao umum forte forte agradecimento agradecimento a dois a dois colegas colegas com com quem quem temos temos tido tido o privilégio o privilégio dede trabalhar trabalhar aoao funcionamento das sociedades. longo dos anos edos que são apoio Prof. Nuno Ferreira Neves eNeves Prof. Alysson longo longo dos anos anos e que eum que são são umfundamental: um apoio apoio fundamental: fundamental: Prof. Prof. Nuno Nuno Ferreira Ferreira Neves e Prof. e Prof. Alysson Alysson Numa altura em que os ciberataques e as preocupações com a privacidade e segurança Neves Bessani. Neves Neves Bessani. Bessani. dos dados são um elemento constante do nosso dia a dia, é de saudar a nova edição Um atualizada agradecimento muito especial vai paraum osvai nossos colegas e colegas funcionários do DepartaUm Um agradecimento agradecimento muito muito especial especial vai para para osos nossos nossos colegas e construído funcionários e funcionários doprofisdo DepartaDepartade Segurança no Software, repositório de informação por mento de Informática da Faculdade de Ciências da Universidade de Lisboa e do LASIGE, mento mento de de Informática Informática da da Faculdade Faculdade de de Ciências Ciências da da Universidade Universidade de de Lisboa Lisboa e do e do LASIGE, sionais reconhecidos internacionalmente que partilham connosco o seu conhecimentoLASIGE, e comexperiência. oscom quais tido o prazer trabalhar. O nossoOmuito obrigado ainda a ainda todos com ostemos os quais quais temos temos tido tido ode prazer o prazer dede trabalhar. trabalhar. O nosso nosso muito muito obrigado obrigado ainda aos todos a todos osos membros da equipa de investigação Navigators, muito especialmente aos Prof. António membros membros dada equipa equipa dede investigação investigação Navigators, Navigators, muito muito especialmente especialmente aos aos Prof. Prof. António António Segurança noProf. Software éJosé uma viagem deProf. que, deMarcelo uma forma acessível, Casimiro Costa, José Rufino, Prof. Hans Pexploração . Hans Reiser, Prof. Marcelo Pasin, Prof. Mário Casimiro Casimiro Costa, Costa, Prof. Prof. José Rufino, Rufino, Prof. Hans P. Reiser, P . em Reiser, Prof. Prof. Marcelo Pasin, Pasin, Prof. Prof. Mário Mário a esclarecida eDr. clara, os autores apresentam importantes eAntunes, relevantes para todos osMara aSantos temas Giuliana Veronese, Dr. JoãoDr. Dr. LuísDr. MarCalha, Dr. Henrique Moniz, Dr. Giuliana Giuliana Santos Santos Veronese, Veronese, Dr. João João Antunes, Antunes, Dr. Luís Luís MarCalha, Calha, Dr. Henrique Henrique Moniz, Moniz, Dr.Dr. a projetos que estão envolvidos em É euma viagem em que o leitorMuito éMuito a Dixit, a de desenvolvimento. Mônica Dr. Jeferson Souza Dr. Pedro Martins. Muito ques, Dr. João Craveiro, Dr. Mônica Mônica Dixit, Dixit, Dr.Dr. Jeferson Jeferson Souza Souza e Dr. e Dr. Pedro Pedro Martins. Martins. ques, ques, Dr. Dr. João João Craveiro, Craveiro, Dr.Dr. apresentado aos conceitos básicos e estruturais de “desenvolvimento de software” e “se- tãotão obrigado ainda aos nossos colegas dacolegas UFSC, que trabalham tão perto nós estando tão obrigado obrigado ainda ainda aos aos nossos nossos colegas dada UFSC, UFSC, que que trabalham trabalham tãode tão perto perto dede nós nós estando estando gurança” e o modo como se interligam, levando-o de seguida pelo mundo – por muitos longe: Prof. Joni da Silva Fraga e Prof. Lau Cheuk Lung. Por fim, um agradecimento a alguns longe: longe: Prof. Prof. Joni Joni dada Silva Silva Fraga Fraga e Prof. e Prof. Lau Lau Cheuk Cheuk Lung. Lung. PorPor fim, fim, umum agradecimento agradecimento a alguns a alguns desconhecido – especialmente das vulnerabilidades, ocarreira modo como podem surgire eprofessores exprofessores especialmente marcantes na identificando nossa de investigadores e professores professores professores especialmente marcantes marcantes nacarreira na nossa nossa carreira dede investigadores investigadores e ser professores ploradas. AProf. viagem avança pelos mecanismos disponíveis para evitar, mitigar ou eliminar universitários: Paulo Fonseca Pinto, Prof. Vítor Vargas eVargas Prof. Luís Rodrigues. universitários: universitários: Prof. Prof. Paulo Paulo Fonseca Fonseca Pinto, Pinto, Prof. Prof. Vítor Vítor Vargas e Prof. e Prof. Luís Luís Rodrigues. Rodrigues. estas situações e termina com uma perspetiva do que pode ser o futuro e os desafios que Esteselivro foilivro escrito a pensar nos nossos alunos futuros, mas deve muito aos nossos Este Este livro foifoi escrito escrito a pensar a pensar nos nos nossos nossos alunos alunos futuros, futuros, mas mas deve deve muito muito aos aos nossos nossos avizinham. alunos do passado das cadeiras de Segurança de Software (FCUL), Sistemas de Software alunos alunos dodo passado passado das das cadeiras cadeiras dede Segurança Segurança dede Software Software (FCUL), (FCUL), Sistemas Sistemas dede Software Software AlgoSeguros que talvez não e seja óbvio para o Software leitor éo facto de que oeles conhecimento contido nestas Seguros (FCUL) e Segurança em Software (IST). Para eles um forte muito obrigado. Alguns Seguros (FCUL) (FCUL) Segurança e Segurança emem Software (IST). (IST). Para Para eles um um forte forte muito muito obrigado. obrigado. Alguns Alguns páginas pode ajudar a salvar vidas e melhorar a qualidade de vida das populações. alunos do último ano lectivo reviram muitos capítulos do livro,dofacto pelo qual estamos alunos alunos dodo último último ano ano lectivo lectivo reviram reviram muitos muitos capítulos capítulos do livro, livro, facto facto pelo pelo qual qual estamos estamos muito agradecidos: Albertoautomóveis, Bruno, Carlos Silva, Fábio Souto, Fernando André, Francisco muito muito agradecidos: agradecidos: Alberto Alberto Bruno, Bruno, Carlos Carlos Silva, Silva, Fábio Fábio Souto, Souto, Fernando Fernando André, André, Francisco Francisco Dispositivos médicos, navios, aeronaves, satélites, redes de distribuição eléLameira, Francisco Rocha, Francisco Vieira, Gustavo Nascimento, Joaquim Rosa, Paulo Lameira, Lameira, Francisco Francisco Rocha, Rocha, Francisco Francisco Vieira, Vieira, Gustavo Gustavo Nascimento, Nascimento, Joaquim Joaquim Rosa, Rosa, Paulo Paulo trica, centros de comando e controlo ou sistemas de comunicações são alguns exemplos Dias,dePaulo Moniz, Rui Almeida, Sérgio Serrano e Tiago Sousa. Alguns colegas e alunos de Dias, Dias, Paulo Paulo Moniz, Moniz, RuiRui Almeida, Almeida, Sérgio Sérgio Serrano Serrano ea Tiago e Tiago Sousa. Sousa. Alguns Alguns colegas colegas e alunos e alunos dede sistemas cujo funcionamento afeta diretamente nossa vida. Redes sociais e sistemas doutoramento reviramreviram também alguns capítulos: Prof. Pasin, Prof. Alysson Neves doutoramento doutoramento reviram também também alguns alguns capítulos: capítulos: Prof. Prof. Marcelo Marcelo Pasin, Pasin, Prof. Prof. Alysson Alysson Neves Neves de comunicações podem apoiar a recuperação de Marcelo regiões afetadas por desastres e o dea a aSantos Veronese e Dr.a Ibéria aMedeiros. a Giuliana Bessani, Dr. Giuliana Santos Santos Veronese Veronese Dr. e sensores Dr.Ibéria Ibéria Medeiros. Medeiros. de forma contínua o Bessani, Bessani, Dr.Dr. senvolvimento deGiuliana zonas carenciadas. Redesede monitorizam fornecimento de energia, água, gás esido outros recursos – como alimentos eagências roupa – ade cidades O nosso de investigação tem suportado por diversas agências de financiaO trabalho O nosso nosso trabalho trabalho dede investigação investigação tem tem sido sido suportado suportado por por diversas diversas agências de financiafinanciae países. E todos estes elementos têm como característica comum executar software que mento amento quem Comissão Europeia (projectos MAFTIA, CRUTIAL, RESIST,RESIST, mento aagradecemos: quem a quem agradecemos: agradecemos: Comissão Comissão Europeia Europeia (projectos (projectos MAFTIA, MAFTIA, CRUTIAL, CRUTIAL, RESIST, controla o modo como operam, pelo assegurar estaeoperação é feita de forma CORTEX, HIDENETS, ESFORS) e Fundação para a Ciência e Tecnologia (programas multiCORTEX, CORTEX, HIDENETS, HIDENETS, ESFORS) ESFORS) e Fundação eque Fundação para para aque Ciência a Ciência Tecnologia e Tecnologia (programas (programas multimulticonfiável e segura é um objetivo tão importante quanto a velocidade de operação ou as anual eanual CMU|Portugal, projectos DEFEATS, COPE, RITAS, AJECT, REGENESYS, RED, anual e e CMU|Portugal, CMU|Portugal, projectos projectos DEFEATS, DEFEATS, COPE, COPE, RITAS, RITAS, AJECT, AJECT, REGENESYS, REGENESYS, RED, RED, funcionalidades oferecidas. É obrigatório que o software que controla os sistemas informáDIVERSE, FTH-Grid, TISD). OTISD). nosso por estes apoios. DIVERSE, DIVERSE, FTH-Grid, FTH-Grid, TISD). Oagradecimento O nosso nosso agradecimento agradecimento por por estes estes apoios. apoios. ticos que fazem parte da nossa vida cumpra com padrões rígidos de qualidade e, sempre, O nosso ainda àsainda pessoas da FCA da – Editora de Informática que foram um Oagradecimento O nosso nosso agradecimento agradecimento ainda às às pessoas pessoas da FCA FCA – Editora – Editora dede Informática Informática que que foram foram umum de segurança. enormeenorme apoio naapoio edição do livro,do muito especialmente à Sandraà Correia. enorme apoio nana edição edição do livro, livro, muito muito especialmente especialmente Sandra à Sandra Correia. Correia. O conhecimento obtido com a leitura dos vários capítulos desta obra apoiará alunos, proPor gramadores, fim,Por mas mais importante, o nosso às nossas famílias, Por fim, fim, mas mas mais mais importante, importante, o agradecimento nosso o nosso agradecimento agradecimento às nossas nossas famílias, famílias, que que sempre sempre gestores de projeto, testers, especialistas de às segurança e,que de sempre uma forma nos geral, apoiaram, que estiveram sempre presentes ao longo da escrita do livro e, como não nos nos apoiaram, apoiaram, que que estiveram estiveram sempre sempre presentes presentes ao ao longo longo da da escrita escrita do do livro livro e, e, como como não qualquer profissional que participe em projetos de software a desenvolver um espí-não poderia deixar de ser, a quem este é dedicado. poderia poderia deixar deixar de de ser, ser, a quem a quem este este é dedicado. é dedicado. rito crítico relativamente ao produto final para o qual contribui. Acima de tudo, este é um 9

c FCA –FCA EDITORA INFORMÁTICA c DE c ©  FCA FCA – EDITORA – DE EDITORA DE INFORMÁTICA DE INFORMÁTICA FCA EDITORA INFORMÁTICA –c–EDITORA DE INFORMÁTICA

xv xv

9 9


IPRP IPRP

TSWLatexianTemp_000032.tex TSWLatexianTemp_000032.tex

4/8/2017 4/8/2017

16:16: 1818

Page Page 14xvi

SEGURANÇA NO SOFTWARE SEGURANÇA NO SOFTWARE

que ajudará leitor a àpensar como manternão e operar um produto melhor,oumais A livro integridade diz orespeito ausência decriar, alterações autorizadas ao sistema à robusto, mais fiável e mais seguro. informação em causa. profissionalé de segurança, é umpara livrofornecer que, desde a sua primeira edição, tem A Como disponibilidade a prontidão doeste sistema um serviço ou da informação umser lugar garantido na minha biblioteca. Como Presidente da AP2SI, tenho a certeza de para acedida. que contribuirá para o desenvolvimento de profissionais mais esclarecidos e para a criação Frequentemente, a estas três é ainda adicionado o atributo da autenticidade, ou seja, de produtos melhores, mais robustos e de melhor qualidade. da medida em que a informação ou o serviço fornecido são genuínos. Por vezes, este atributo é denominado autenticação, mas este termo aplica-se mais propriamente ao ato Lisboa, 9 de julho de 2017 de verificar a autenticidade de alguém ou de algo. Na definição dos atributos usámos duas vezes o termo “não autorizada”. A definição do que Eng.o Jorge Pinto é ou não autorizado, ou, de forma mais genérica, do conjunto de requisitos de segurança que têm de ser satisfeitos pelo sistema, constitui adasua política de segurança. A política Presidente AP2SI – Associação Portuguesa para a é geralmente definida pela organização onde se insere o sistema e pode ser apresentada Promoção da Segurança da Informação sob a forma de um documento escrito. Por exemplo, uma política militar pode definir que um documento classificado como “confidencial” só pode ser lido por pessoas com o nível de autorização (clearance) correspondente. Um tema vasto ligado à segurança é o da privacidade. Sob o ponto de vista dos sistemas técnicos, a privacidade é a confidencialidade de dados pessoais (nome, morada, números de identificação, números de telefone, dados de cartões de crédito, etc.).

1.1 VULNERABILIDADES Um conceito fundamental no domínio da segurança de software é o de vulnerabilidade. Uma vulnerabilidade é um defeito do sistema (de software ou outro) que pode ser explorado por um atacante com o objetivo de violar a política de segurança. As vulnerabilidades podem ser classificadas com base em três categorias [229]: Vulnerabilidade de projeto – introduzida durante a fase de projeto do software (obtenção de requisitos e desenho). Um exemplo é a decisão de usar um mecanismo de autenticação fraco ou não considerar que a comunicação pode ser observada na rede; Vulnerabilidade de codificação (ou de implementação) – introduzida durante a programação (ou codificação) do software, ou seja, um bug com implicações de segurança. Um exemplo é a falta de verificação de limites de escrita num buffer que permite um ataque de buffer overflow (Capítulo 5); Vulnerabilidade operacional – causada pelo ambiente no qual o software é executado ou pela sua configuração. Um exemplo é a existência de contas sem senha (password) num sistema de gestão de bases de dados. A segurança de software diz respeito a estes três tipos de vulnerabilidades. No livro vão-nos interessar muito particularmente as de codificação, que nos parecem ser c –FCA c ©  xvi – EDITORA DE INFORMÁTICA 14xvi FCA EDITORA DEDE INFORMÁTICA FCA – EDITORA INFORMÁTICA

IPR


IPRP IPRP TSWLatexianTemp_000032.tex TSWLatexianTemp_000032.tex 4/8/2017 4/8/2017 18 18 Page xi xi IPRP TSWLatexianTemp_000032.tex 4/8/2017 16:16: 1816: Page 1Page

OS OSAUTORES AUTORES INTRODUÇÃO Miguel Miguel Pupo Pupo Correia Correia

When I asked the head of network security for AT&T what he would do if someone made himAssociado Cyber Czardo forDepartamento a day, he didn’t hesitate. “Software.” Ed Amoroso more security Professor Professor Associado do Departamento de Engenharia de Engenharia Informática Informática do Instituto dosees Instituto Superior Superior Téc-Técissues in a day than most computer security specialists see in a year. He has written four do do niconico da da Universidade Universidade de de Lisboa. Lisboa. É membro É membro sénior sénior do do Grupo Grupo de de Sistemas Sistemas Distribuídos Distribuídos books on the subject and teaches an engineering course on cyber security. “Software is most Laboratório Laboratório Associado Associado INESC-ID. INESC-ID. Participou Participou emem vários vários projetos projetos europeus europeus relacionados relacionados com com of the problem. We have to find a way to write software which has many fewer errors and segurança segurança (SafeCloud, (SafeCloud, PCAS, PCAS, TCLOUDS, TCLOUDS, ReSIST, ReSIST, CRUTIAL CRUTIAL e MAFTIA). e MAFTIA). Tem Tem mais mais de de 150 which is more secure.” 150 publicações publicações em revistas revistas e conferências e conferências internacionais internacionais éemembro éThreat membro sénior doSecurity do IEEE. IEEE. Richard em A. Clarke e Robert K. Knake, “Cyberwar – The eNext tosénior National and What To Do About It”

Paulo Paulo Jorge Jorge Sousa Sousa CEO CEO e wouldn’t CSO e CSO da have da Maxdata Maxdata Software, Software, uma PME PME portuguesa portuguesa que que criacria software software a área a área We to spend so muchuma time, money, and effort on network security if para wepara didn’t da Saúde da Saúde há 4 hádécadas 4 décadas e pretende e pretende tornar-se tornar-se uma uma referência referência internacional. internacional. É doutorado É doutorado have such bad software security.emem Informática Informática pelapela Universidade Universidade de Lisboa de Lisboa (UL). Tem participado participado em vários vários projetos projetos europeus europeus John(UL). Viega e Tem Gary McGraw,em “Building Secure Software” e nacionais e nacionais relacionados relacionados com com segurança, segurança, e foi e foi vencedor vencedor do do Prémio Prémio Científico Científico IBM IBM 2007 2007 . . Entre Entre 2001 2001 e 2010, e 2010, foi foi investigador investigador e professor e professor (2007-2010) (2007-2010) da da Faculdade Faculdade de de Ciências Ciências da Nas últimas duas décadas, o termo “Internet” entrou no léxico de toda a humanidade. da UL. O seu O seu trabalho trabalho científico científico tem tem mais mais de ede 800 citações. citações. DoUL. meio restrito da investigação académica do800 Departamento de Defesa americanos, a rede de redes passou a instrumento de uso pessoal e componente central na economia mundial. Como todas as realidades humanas, esta comunidade virtual sofre dos bens e males da nossa condição. No espaço e no tempo crescentes que a comunicação social dedica à Internet, desde há muito que começam a ter um lugar significativo novas formas de comportamento malicioso tornadas possíveis por esta tecnologia. Uma das formas mais antigas deste tipo de comportamentos é o vandalismo perpetrado através de vermes (worms) que se propagam automaticamente pela rede, levando à paralisia de computadores e comunicação. O primeiro exemplo conhecido é o Morris worm de 1988, mas depois muitos outros foram notícia, como o Code Red, o Sasser, o Stuxnet e o Conficker. O cibercrime com o objetivo de obtenção de lucro é outra destas realidades, tendo-se multiplicado ao longo do tempo as formas de o cometer. Delas são exemplo o roubo de números de cartão de crédito ou de credenciais de acesso a bancos on-line e a extorsão através de software que cifra dados das vítimas, que têm de pagar um resgate para os reaverem (chamado, com algum humor, de ransomware). Outra forma de cibercrime são 11 xi c FCA cEDITORA c FCA ©  – –EDITORA DE –FCA EDITORA – EDITORA DE INFORMÁTICA DE INFORMÁTICA FCA DEINFORMÁTICA INFORMÁTICA

xi


IPRP

TSWLatexianTemp_000032.tex

4/8/2017

16: 18

Page 14

SEGURANÇA SEGURANÇA NO NO SOFTWARE SOFTWARE

A os integridade ataques dediz negação respeito de àserviço ausência quede deixam alterações as vítimas não autorizadas (por exemplo, ao sítios sistema de empreou à informação sas ou governamentais) em causa. inacessíveis aos seus utilizadores legítimos. O caso que tornou notícia este tipo de ataque deu-se em fevereiro de 2000, tendo sítios como Yahoo!, eBay A disponibilidade é a prontidão do sistema para fornecer um serviço ou da informação e Amazon.com ficado inacessíveis durante várias horas. Em 2014, um ataque deste tipo para ser acedida. alegadamente gerou 400 Gigabits por segundo de tráfego. Frequentemente, a estas três é ainda adicionado o atributo da autenticidade, ou seja, O ciberterrorismo e a ciberguerra são atividades ainda pouco conhecidas, mas das quais da medida em que a informação ou o serviço fornecido são genuínos. Por vezes, este existem casos pontuais. Em maio de 2007, agosto de 2008 e início de 2014, a Estónia, a atributo é denominado autenticação, mas este termo aplica-se mais propriamente ao ato Geórgia e a Ucrânia foram, respetivamente, vítimas de atos que se inserem numa desde verificar a autenticidade de alguém ou de algo. tas categorias, embora seja difícil discernir exatamente qual. Ataques oriundos da vizinha deixaram inúmeros serviços devezes e-government e comerciais indisponíveis. NaRússia definição dos atributos usámos duas o termo “não autorizada” . A definição Se do foram que de autorizado, terrorismo ou depende de quemdo os conjunto realizou –de pessoas individualmente é atos ou não ou,guerra, de forma mais genérica, requisitos de segurançaou que umtêm Estado de ser –, osatisfeitos que permanece pelo sistema, um mistério. constitui a sua política de segurança. A política é geralmente definida pela organização onde se insere o sistema e pode ser apresentada Apesar da inegável importância deste tipo de criminalidade, é enganoso pensar que é unisob a forma de um documento escrito. Por exemplo, uma política militar pode definir que camente o seu impacto económico e psicológico que está em causa. De facto, o cibercrime um documento classificado como “confidencial” só pode ser lido por pessoas com o nível pode ter um efeito muito mais devastador. A série de filmes Die Hard tem-se caracterizado de autorização (clearance) correspondente. por apresentar crimes de grandes e improváveis proporções, sempre resolvidos in extremis e a vasto contragosto polícia éJohn representado pelo Willis. No Um tema ligado àpelo segurança o daMcClane, privacidade. Sob o ponto deator vistaBruce dos sistemas quarto filme da série, éum bando de malfeitores resolve lançar a(nome, América numa números nova idade técnicos, a privacidade a confidencialidade de dados pessoais morada, deda identificação, pedra, destruindo números a infraestrutura de telefone, dados de produção de cartões e distribuição de crédito, de etc.). eletricidade do país. Para o efeito, executam uma série de ataques através da Internet, dirigidos aos computadores que controlam essas infraestruturas, e tentam concluir o processo com uma intrusão numa central de distribuição particularmente crítica. 1.1físicaVULNERABILIDADES Entre 2006 fundamental e 2009 desenvolvemos colegas dedevárias instituições investiUm conceito no domíniocom da segurança software é o de europeias vulnerabilidade. gação em segurança (informática) de infraestruturas críticas, sobretudo da infraestrutura Uma vulnerabilidade é um defeito do sistema (de software ou outro) que pode ser exploelétrica, noatacante âmbito do projeto CriticaldeUtility ResilienceAs (CRUTIAL) [88, 36]2 . rado por um com o objetivo violarInfrastructurAL a política de segurança. vulnerabilidades O filme parecer com merabase ficção, que o nosso podem serpode classificadas emmas três o categorias [229]:trabalho mostrou é que um ataque exclusivamente informático na vida real seria, muito provavelmente, suficiente para concluir o ataque com a vantagem de deixar salvo de(obJohn Vulnerabilidade desucesso projeto(com – introduzida durante a faseos deterroristas projeto doasoftware McClane). Notícias recentes referem que ciberataques contra centrais elétricas na Ucrânia tenção de requisitos e desenho). Um exemplo é a decisão de usar um mecanismo terão largos fraco setores população desse sem energiapode durante o Natal de 2015 dedeixado autenticação ou da não considerar que país a comunicação ser observada na [179]. rede; EsteVulnerabilidade tipo de ataques de pode ter não apenas umimplementação) efeito económico radical – destruir toda codificação (ou de – introduzida durante aa economia de um país, no caso do referido filme –, como também causar a perda de vidas programação (ou codificação) do software, ou seja, um bug com implicações de sehumanas, porUm exemplo, noécaso dede umverificação ataque a de uma central Aliás,buffer este último gurança. exemplo a falta limites denuclear. escrita num que exemplo nem sequer é fruto da nossa imaginação, uma vez que em janeiro de 2003 o permite um ataque de buffer overflow (Capítulo 5); já referido verme Sasser invadiu a rede da central nuclear de Davis-Besse (EUA), tendo Vulnerabilidade operacional causada pelo ambiente qual softwaredaé central exedeixado os sistemas de supervisão– de parâmetros críticos deno um dosoreatores cutado ou pela sua algumas configuração. inoperacionais durante horas.Um exemplo é a existência de contas sem senha (password) num sistema de gestão de bases de dados. A segurança de software diz respeito a estes três tipos de vulnerabilidades. No li2 http://crutial.cesiricerca.it/ vro vão-nos interessar muito particularmente as de codificação, que nos parecem ser 14 2

c cFCA FCA – EDITORA EDITORA DEDE DE INFORMÁTICA INFORMÁTICA ©  FCA –– EDITORA INFORMÁTICA

IPR


IPRPIPRP TSWLatexianTemp_000032.tex 4/8/2017 16: 18 Page IPRP IPRP TSWLatexianTemp_000032.tex TSWLatexianTemp_000032.tex TSWLatexianTemp_000032.tex 4/8/2017 4/8/2017 4/8/2017 16: 16: 1816: 1818 9 Page Page 9 9

INTRODUÇÃO INTRODUÇÃO INTRODUÇÃO INTRODUÇÃO

AGRADECIMENTOS AGRADECIMENTOS AGRADECIMENTOS SEGURANÇA INFORMÁTICA E INTERNET a 1.a Edição 1.a 1.Edição Ediçãointitulada “Segurança”, o escritor brasileiro Luís Fernando Veríssimo apreNuma crónica 3 .A resumidamente, a uma solução eficaz para este de problemas Estesenta livro não teria existido sem a contribuição, apoio e apoio encorajamento deé,muitas pessoas. Este Este livro livro não não teria teria existido existido sem sem a tipo contribuição, a contribuição, apoio e encorajamento e história encorajamento dede muitas muitas pessoas. pessoas. seguinte. Um condomínio de luxo tem como ponto forte a segurança, mas os assaltos Um sucedem-se. primeiro agradecimento vai para o vai Prof. Paulo Esteves Veríssimo, por incontáveis raUm Um primeiro primeiro agradecimento vai para para o Prof. o Prof. Paulo Paulo Esteves Esteves Veríssimo, Veríssimo, porpor incontáveis incontáveis Poragradecimento isso, novos mecanismos de segurança vão sendo instalados: os muros ra-razõessão entre as quais a de nos ter ensinado muito do que sabemos sobre investigação zões zões entre entre as as quais quais a de a de nos nos ter ter ensinado ensinado muito muito do do que que sabemos sabemos sobre sobre investigação investigação eletrificados, grades são postas nas janelas, as entradas e saídas são cada vez mais científica ecientífica por tere acedido a acedido prefaciar este livro, oassaltos que muito nos honra. Ahonra. este juntamos científica por e controladas. por terter acedido a prefaciar aentanto, prefaciar este livro, livro, o que ocontinuam que muito muito nos honra. A este AAeste juntamos juntamos cuidadosamente No oseste a nos suceder-se. crónica um forte agradecimento a dois colegas com quem temos tido o privilégio de trabalhar ao umum forte forte agradecimento a dois aninguém dois colegas colegas com com quem quem temos temos tido tido o privilégio o privilégio dede trabalhar trabalhar termina com a agradecimento solução eficaz: mais pode entrar ou sair do edifício. De facto, os aoao longo dos anos e que são um apoio fundamental: Prof. Nuno Ferreira Neves e Prof. Alysson longo longo dos dos anos anos e que e que são são um um apoio apoio fundamental: fundamental: Prof. Prof. Nuno Nuno Ferreira Ferreira Neves Neves e Prof. e Prof. Alysson Alysson assaltos terminam, mas surgem novos problemas: as tentativas de fuga e os motins dos Neves Bessani. Neves Neves Bessani. Bessani. moradores que querem ser livres.

Um A agradecimento muito especial vai paravai osvai nossos colegas e colegas funcionários do DepartaUm Um agradecimento agradecimento muito muito especial especial para para osos nossos nossos colegas e funcionários eanáloga: funcionários dodo DepartaDepartasolução para os problemas de criminalidade informática poderia ser desligar os mento de Informática da Faculdade de Ciências da Universidade de Lisboa e do LASIGE, mento mento de de Informática Informática da da Faculdade Faculdade de de Ciências Ciências da da Universidade Universidade de de Lisboa Lisboa e do e do LASIGE, LASIGE, computadores da rede e trancá-los num espaço fechado. No entanto, tal como na crónica, comesta oscom quais temos tido o prazer trabalhar. O nosso obrigado ainda todos com os os quais quais temos temos tido tido ode prazer o prazer dede trabalhar. trabalhar. O nosso nosso muito muito obrigado obrigado ainda aos todos a todos não parece ser uma solução viável. Por isso,Oémuito necessário estudar ea ainda concretizar a osos membros da equipa de investigação Navigators, muito especialmente aos Prof. António membros membros dada equipa equipa de investigação investigação Navigators, Navigators, muito muito especialmente especialmente aos aos Prof. Prof. António António segurança informática oude cibersegurança. Casimiro Costa, Prof. José Rufino, Prof. Hans P. Hans Reiser, Prof. Marcelo Pasin, Prof. Mário Casimiro Casimiro Costa, Costa, Prof. Prof. José José Rufino, Rufino, Prof. Prof. Hans P. Reiser, P . Reiser, Prof. Prof. Marcelo Marcelo Pasin, Pasin, Prof. Prof. Mário Mário a a aSantos Diga-se, em abono da Dr. verdade, o problema da segurança informática surgiu muito Giuliana Veronese, Dr. JoãoDr. Antunes, Dr. Luís MarCalha, Dr. Henrique Moniz, Giuliana Giuliana Santos Santos Veronese, Veronese, Dr. João João Antunes, Antunes, Dr. Dr. Luís Luís MarMarCalha, Calha, Dr.Dr. Henrique Henrique Moniz, Moniz, Dr.que Dr. a a até a antes da expansão daDr. Internet e das próprias redes de ecomputadores. Em Martins. 1967 , preoMônica Dixit, Dr. Jeferson Souza Dr. Pedro Martins. Muito ques, Dr. João Craveiro, Mônica Mônica Dixit, Dixit, Dr.Dr. Jeferson Jeferson Souza Souza e Dr. e Dr. Pedro Pedro Martins. Muito Muito ques, ques, Dr. Dr. João João Craveiro, Craveiro, Dr.Dr. cupado com a confidencialidade daUFSC, informação em computadores multitarefa, o Defense obrigado ainda aos nossos colegas dacolegas que trabalham tão perto nós estando tão obrigado obrigado ainda ainda aos aos nossos nossos colegas dada UFSC, UFSC, que que trabalham trabalham tãode tão perto perto dede nós nós estando estando tãotão Science Board americano criou um grupo de trabalho para estudar o assunto. O relatório longe: Prof. Joni da Silva Fraga e Prof. Lau Cheuk Lung. Por fim, um agradecimento a alguns longe: longe: Prof. Prof. Joni Joni dada Silva Silva Fraga Fraga e Prof. e Prof. Lau Lau Cheuk Cheuk Lung. Lung. PorPor fim, fim, umum agradecimento agradecimento a alguns a alguns desse grupo eraespecialmente confidencial e foi tornado público sócarreira em 1970 [260], mas um artigo cienprofessores especialmente marcantes na nossa carreira de investigadores e professores professores professores especialmente marcantes marcantes na na nossa nossa carreira dede investigadores investigadores e professores e professores tífico sobre o tema foi publicado em Prof. 1968 [118]. AVítor disciplina foi-se desenvolvendo, tendo universitários: Prof. Paulo Fonseca Pinto, Vítor Vargas eVargas Prof. Luís Rodrigues. universitários: universitários: Prof. Prof. Paulo Paulo Fonseca Fonseca Pinto, Pinto, Prof. Prof. Vítor Vargas e Prof. e Prof. Luís Luís Rodrigues. Rodrigues. surgido rapidamente muitos dos conceitos e mecanismos basilares, tais como os prinEstecípios livro foi escrito adepensar nos nossos alunos futuros, mas deve muito aos nossos Este Este livro foifoi escrito escrito a pensar a pensar nos nos nossos alunos alunos futuros, futuros, mas deve deve muito muito aos aos nossos nossos delivro projeto sistemas seguros, o nossos controlo de acesso, amas segurança multinível, os alunos do passado das cadeiras de Segurança de Software (FCUL), Sistemas de Software alunos alunos do do passado passado das das cadeiras cadeiras de de Segurança Segurança de de Software Software (FCUL), (FCUL), Sistemas Sistemas de de Software Software modelos de segurança, os núcleos de segurança, etc. Porém, a insegurança informática Seguros (FCUL) Segurança em Software (IST). Para eles um forte muito obrigado. Alguns Seguros Seguros (FCUL) (FCUL) e Segurança e Segurança emem Software Software (IST). (IST). Para Para eles eles um um forte forte muito muito obrigado. obrigado. Alguns Alguns também se e desenvolveu. A divulgação do PC, ou computador pessoal, criou uma oportualunos do último ano lectivo reviram muitos capítulos do livro, facto pelo qual estamos alunos alunos do do último último ano ano lectivo lectivo reviram reviram muitos muitos capítulos capítulos do do livro, livro, facto facto pelo pelo qual qual estamos estamos nidade para a difusão de vírus informáticos que se propagavam através de disquetes. O muito agradecidos: Alberto Bruno, Carlos Fábio Souto, Fernando André, Francisco muito muito agradecidos: agradecidos: Alberto Alberto Bruno, Bruno, Carlos Carlos Silva, Silva, Fábio Fábio Souto, Souto, Fernando Fernando André, André, Francisco Francisco aparecimento dos modems permitiu a Silva, ligação remota a computadores e o aparecimento Lameira, Francisco Rocha, Francisco Vieira, Gustavo Nascimento, Joaquim Rosa, Paulo Lameira, Lameira, Francisco Francisco Rocha, Rocha, Francisco Francisco Vieira, Vieira, Gustavo Gustavo Nascimento, Nascimento, Joaquim Joaquim Rosa, Rosa, Paulo Paulo de ataques através desse meio. Dias, Paulo Moniz, Rui Almeida, Sérgio Serrano e Tiago Sousa. Alguns colegas e alunos de Dias, Dias, Paulo Paulo Moniz, Moniz, RuiRui Almeida, Almeida, Sérgio Sérgio Serrano Serrano e Tiago e Tiago Sousa. Sousa. Alguns Alguns colegas colegas e alunos e alunos dede Com adoutoramento divulgação da Internet, a segurança de computadores eProf. a Pasin, segurança de redes doutoramento reviramreviram também alguns capítulos: Prof. Marcelo Pasin, Alysson Neves doutoramento reviram também também alguns alguns capítulos: capítulos: Prof. Prof. Marcelo Marcelo Pasin, Prof. Prof. Alysson Alysson Neves Neves a a aSantos Veronese aMedeiros. a tornaram-se indissociáveis. O número deaataques informáticos ganhou proporções até enGiuliana e Dr. Ibéria Bessani, Dr. Giuliana Giuliana Santos Santos Veronese Veronese e Dr. e Dr. Ibéria Ibéria Medeiros. Medeiros. Bessani, Bessani, Dr. Dr. tão desconhecidas. As razões são diversas e discutíveis, mas duas delas são inegáveis. O nosso trabalho de investigação tem sido suportado porvítimas diversas agências de financiaO nosso nosso trabalho trabalho dede investigação investigação tem tem sido sido suportado suportado porpor diversas diversas agências agências dede financiafinanciaPor Oum lado, uma enorme quantidade de potenciais ficou disponível através da mento a quem agradecemos: Comissão Europeia (projectos MAFTIA, CRUTIAL, RESIST, mento mento a quem a quem agradecemos: agradecemos: Comissão Comissão Europeia Europeia (projectos (projectos MAFTIA, MAFTIA, CRUTIAL, CRUTIAL, RESIST, RESIST, interconexão criada pela rede. Por outro lado, como dizia um cartoon de Peter Steiner na CORTEX, HIDENETS, ESFORS) e Fundação para a Ciência e Tecnologia (programas multiCORTEX, CORTEX, HIDENETS, HIDENETS, ESFORS) ESFORS) e Fundação e Fundação para para a Ciência a Ciência e Tecnologia e Tecnologia (programas (programas multirevista New Yorker, On the Internet, nobody knows you’re a dog. Dito de outro modo, a multianual eanual CMU|Portugal, projectos DEFEATS, COPE, RITAS, AJECT, REGENESYS, RED, de anual e e CMU|Portugal, CMU|Portugal, projectos projectos DEFEATS, DEFEATS, COPE, COPE, RITAS, RITAS, AJECT, AJECT, REGENESYS, REGENESYS, RED, RED, Internet cria um sentimento de invisibilidade e anonimato que pode gerar um “efeito DIVERSE, FTH-Grid, TISD). O nosso agradecimento por estes apoios. DIVERSE, DIVERSE, FTH-Grid, FTH-Grid, TISD). TISD). O O nosso nosso agradecimento agradecimento por por estes estes apoios. apoios. desinibição” e facilitar a incursão em atividades criminosas. Em resposta, surgiu uma legiãoOde mecanismos de segurança redes: segura, distribuição deque chaves O nosso agradecimento ainda àsainda pessoas da FCAcomunicação – Editora de Informática que foram um O nosso nosso agradecimento agradecimento ainda àsde às pessoas pessoas da da FCA FCA – Editora – Editora dede Informática Informática que foram foram umum criptográficas, infraestruturas de chave pública, anteparas de segurança (firewalls), detetoenormeenorme apoio naapoio edição do livro,do muito especialmente à Sandraà Correia. enorme apoio nana edição edição do livro, livro, muito muito especialmente especialmente Sandra à Sandra Correia. Correia. res de intrusões, dinheiro digital, etc. Surgiu também uma miríade de empresas que fazem Por auditoria, fim,Por mas mais importante, o nossoo agradecimento às nossas famílias, que sempre Por fim, fim, mas mas mais mais importante, nosso o nosso agradecimento agradecimento às às nossas nossas famílias, que que sempre sempre consultoria e importante, concretização de segurança, tendo também hojefamílias, em dia inúmeras nos organizações apoiaram, queadquirido estiveram sempre presentes ao longo da escrita do livro e, como não nos nos apoiaram, apoiaram, que que estiveram estiveram sempre sempre presentes presentes ao ao longo longo da da escrita escrita do do livro livro e, e, como como não não know-how próprio na área. poderia poderia deixar de ser, adequem é dedicado. poderia deixar deixar de ser, ser, aeste quem a quem este este é dedicado. é dedicado. 3

Cf. Luís Fernando Verríssimo. Comédias para se Ler na Escola. Objetiva, 2001.

9

c FCA –c EDITORA INFORMÁTICA c– FCA c DE FCA – EDITORA – DE EDITORA DE INFORMÁTICA DE INFORMÁTICA ©  FCA EDITORA INFORMÁTICA

3

9 9


IPRP IPRP

TSWLatexianTemp_000032.tex TSWLatexianTemp_000032.tex

4/8/2017 4/8/2017

16:16: 1818

Page Page 144

SEGURANÇA SEGURANÇA NO NO SOFTWARE SOFTWARE

A Esta integridade reação das diz organizações respeito à ausência à insegurança de alterações data já de nãoháautorizadas vários anos, ao sendo, sistemaporouessa à informação razão, talvez em expectável causa. que a situação estivesse controlada. No entanto, não é isso que as estatísticas indicam. Anualmente, a PWC realiza um estudo intitulado The Global State A disponibilidade é a prontidão do sistema para fornecer um serviço ou da informação of Information Security 4 . A edição relativa a 2015 deste estudo reporta que, apesar de para ser acedida. 91% das empresas inquiridas terem uma abordagem sólida à cibersegurança, observaram um aumento dea38% número de adicionado incidentes odeatributo segurança e de 56% de roubos Frequentemente, estasdotrês é ainda da autenticidade, ou seja,de Relatórios empresas, Symantec,Por Microsoft, Panda dapropriedade medida emintelectual. que a informação oudeo outras serviço fornecidocomo são genuínos. vezes, este Security, McAfee ou IBM, apresentam dados preocupantes. atributo é denominado autenticação, mas esteigualmente termo aplica-se mais propriamente ao ato de verificar a autenticidade de alguém ou de algo. Na definição dos atributos usámos duas vezes o termo “não autorizada”. A definição do que (IN)SEGURO é SOFTWARE ou não autorizado, ou, de forma mais genérica, do conjunto de requisitos de segurança que têm de ser satisfeitos pelo sistema, constitui a sua política deesegurança. A política Esta argumentação mostra que a segurança da Internet tem sido continua a ser um proé blema. geralmente definida pela organização onde se insere o sistema e pode ser apresentada No entanto, a questão não reside exclusivamente na Internet em si. Como explicam sob a forma de um[255], documento escrito. Poroutra exemplo, uma política militar pode definir que Viega e McGraw o problema é de natureza: um documento classificado como “confidencial” só pode ser lido por pessoas com o nível de autorização (clearance) correspondente. We wouldn’t have to spend so much time, money, and effort on network securityvasto if weligado didn’tàhave such bad security. Think aboutdethe most Um tema segurança é o software da privacidade. Sob o ponto vista dosrecent sistemas security vulnerability about which you’ve read. Maybe it’s(nome, a killer morada, packet that altécnicos, a privacidade é a confidencialidade de dados pessoais números lows an attacker tode crash some dados serverde by cartões sendingde it acrédito, particular packet. Maybe de identificação, números telefone, etc.). 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 1.1 VULNERABILIDADES authentication system. These are all software issues. Um conceito fundamental no domínio da segurança de software é o de vulnerabilidade. Uma vulnerabilidade é um defeito do sistema (de software ou outro) que pode ser exploDe facto, é inegável que um número incomensurável dos atuais problemas de segurança rado por um atacante com o objetivo de violar a política de segurança. As vulnerabilidades está relacionado com vulnerabilidades de software, ou seja, com bugs de projeto, codifipodem ser classificadas com base em três categorias [229]: cação ou configuração, que deixam o software sujeito a abusos de piratas informáticos. Por exemplo, uma consulta ao catálogo Common Vulnerabilities and Exposures (CVE) rede projeto – introduzida a fase de projeto (obvelaVulnerabilidade que em 2010 foram registadas mais de durante 5000 vulnerabilidades e do quesoftware esse número tenção de requisitos e desenho). Um exemplo é a decisão de usar um mecanismo ultrapassou as 9000 em 20145 . de autenticação fraco ou não considerar que a comunicação pode ser observada na Sobrede; o ponto de vista técnico, a situação é consequência de três fatores [255]: a complexidade do software atual, a sua extensibilidade e a conectividade da Internet e outras redes. deaspeto, codificação (ou de implementação) – sistema introduzida durante a Em Vulnerabilidade relação ao primeiro um produto de software como um operativo é uma programação (ou codificação) do software, ou seja, um bug com implicações de sedas peças de engenharia mais complexas jamais criadas pelo ser humano. Por exemplo, o gurança. Um exemplo falta OS de verificação de limites de cerca escrita que Microsoft Windows Vista eé oa Mac X 10.4 (“Tiger”) tinham denum 50 ebuffer 85 milhões permite ataque de6 buffer (Capítulo 5);2 mil milhões de linhas de código7 . e em overflow 2015 a Google teria de linhas deum código-fonte A extensibilidade é talvez menos –evidente, por isso relevante.é Qual Vulnerabilidade operacional causadamas pelonem ambiente no menos qual o software exe- é o software que existe no nosso computador ou smartphone? Pode ser fácil enumerar cutado ou pela sua configuração. Um exemplo é a existência de contas sem senha o (password) num sistema de gestão de bases de dados. 4

http://www.pwc.com/gsiss 5 http://cve.mitre.org A 6 segurança de software diz respeito a estes três tipos de vulnerabilidades. No lihttp://www.informationisbeautiful.net/visualizations/million-lines-of-code/ 7 http://www.wired.com/2015/09/google-2-billion-lines-codeand-one-place/ vro vão-nos interessar muito particularmente as de codificação, que nos parecem ser

14 4

c c FCA FCA FCA – EDITORA EDITORA DEDE DE INFORMÁTICA INFORMÁTICA ©  –– EDITORA INFORMÁTICA

IPR


IPRPIPRP TSWLatexianTemp_000032.tex 4/8/2017 16: 18 Page 9 Page IPRP IPRP TSWLatexianTemp_000032.tex TSWLatexianTemp_000032.tex 4/8/2017 4/8/2017 1818 9 9 TSWLatexianTemp_000032.tex 4/8/2017 16: 16: 1816: Page 5Page

INTRODUÇÃO INTRODUÇÃO INTRODUÇÃO INTRODUÇÃO sistema operativo A, o editor de texto B e os jogos C e D, mas inúmeros outros compoAGRADECIMENTOS AGRADECIMENTOS AGRADECIMENTOS

nentes de software entram de forma quase sub-reptícia em qualquer computador. São as a 1.a Edição 1.a 1.Edição Edição atualizações de segurança, os drivers para apresentar um novo formato de media, o pequeno utilitário para fazer determinada app ou applet Como é que se Este livro não teria existido sem a contribuição, apoio eaapoio encorajamento deJava. muitas pessoas. Este Este livro livro não não teria teria existido existido sem sem a contribuição, a operação, contribuição, apoio e encorajamento ea encorajamento de de muitas muitas pessoas. pessoas. pode defender algo se nem se sabe o que é que se pretende exatamente proteger? Por Um último, primeiro agradecimento vai para o vai Prof. Paulo Esteves Veríssimo, por ra- tais ra-raUm Um primeiro primeiro agradecimento agradecimento vai para para oInternet Prof. o Prof. Paulo Paulo Esteves Esteves Veríssimo, Veríssimo, porpor incontáveis incontáveis temos a conectividade criada pela e, cada vez mais, porincontáveis outras redes, zõescomo entre as quais a de nos ter ensinado muito do que sabemos sobre investigação zões zões entre entre as as quais quais a de a de nos nos ter ter ensinado ensinado muito muito do do que que sabemos sabemos sobre sobre investigação investigação as redes sem fios Wi-Fi, UMTS/3G e LTE/4G, ou Bluetooth. Este problema ainda se científica e por ter acedido a prefaciar este livro, o que muito nos honra. A este juntamos científica científica e por e por ter ter acedido acedido a prefaciar a prefaciar este este livro, livro, o que o que muito muito nos nos honra. honra. A este A este juntamos juntamos torna mais significativo com a Internet of Things, que se estima irá ter 26 mil milhões de um forte agradecimento a dois colegas com quem temos tido o privilégio trabalhar ao um um forte forte agradecimento agradecimento a dois aàdois colegas colegas com com quem quem temos temos tido tido o privilégio o de privilégio dede trabalhar trabalhar aoao dispositivos embebidos ligados Internet em 2020. longo dos anos e que são um apoio fundamental: Prof. Nuno Ferreira Neves e Prof. Alysson longo longo dos dos anos anos e que e que são são umum apoio apoio fundamental: fundamental: Prof. Prof. Nuno Nuno Ferreira Ferreira Neves Neves e Prof. e Prof. Alysson Alysson Estes trêsBessani. fatores podem parecer cruciais, mas a realidade é mais complexa e, claro, it’s Neves Bessani. Neves Neves Bessani. the economy, stupid. Da mesma forma que vulnerabilidades num pacote de software são Um descobertas agradecimento especial vai osvai nossos colegas e colegas funcionários do DepartaUm Um agradecimento agradecimento muito muito especial especial vai para para osos nossos nossos colegas ea funcionários e funcionários do DepartaDepartapormuito investigadores oupara piratas informáticos, também empresa quedodesenmento de Informática da Faculdade de Ciências da Universidade de Lisboa e do LASIGE, mento mento de de Informática Informática da da Faculdade Faculdade de de Ciências Ciências da da Universidade Universidade de de Lisboa Lisboa e do e do LASIGE, LASIGE, volve esse pacote pode obter um nível de segurança adequado, desde que lhe dedique comos osrecursos quais tido o prazer de trabalhar. O nosso muito obrigado ainda a todos os com com ostemos os quais quais temos temos tido tido o prazer o prazer de de trabalhar. trabalhar. O O nosso nosso muito muito obrigado obrigado ainda ainda a todos a todos necessários. A questão são os custos: para um dado produto de software S, osos membros da equipa de investigação Navigators, muitoe especialmente aos Prof. António membros membros dada equipa dede de investigação investigação Navigators, Navigators, muito muito especialmente especialmente aos Prof. Prof. António António quanto custa obter oequipa nível segurança adequado quanto custa ignorar o aos problema? Ou Casimiro Costa, José Rufino, Prof. Hans P. Hans Reiser, Prof. Marcelo Pasin, Prof. Mário Casimiro Casimiro Costa, Costa, Prof. Prof. José José Rufino, Rufino, Prof. Prof. Hans Padequado . Reiser, P . Reiser, Prof. Prof. Marcelo Marcelo Pasin, Pasin, Prof. Prof. Mário melhor, se é Prof. preciso investir C para obter um nível de segurança, vale ou não aMário a a aSantos Veronese, Dr. João Antunes, Dr. Luís MarGiuliana Calha, Dr. Henrique Moniz, Dr. Giuliana Giuliana Santos Santos Veronese, Veronese, Dr. Dr. João João Antunes, Antunes, Dr. Dr. Luís Luís MarCalha, Calha, Dr. Dr. Henrique Henrique Moniz, Moniz, Dr. Dr. pena fazer esse investimento? Se for investido C’ muito menor do que C, será que o lucroMara a Dixit, a Mônica Dr. Jeferson Souza e Dr. Pedro Martins. Muito ques, Dr. João Craveiro, Dr. Mônica Mônica Dixit, Dixit, Dr. Dr. Jeferson Jeferson Souza Souza e Dr. e Dr. Pedro Pedro Martins. Martins. Muito Muito ques, ques, Dr. Dr. João João Craveiro, Craveiro, Dr. Dr. conseguido não será superior, dado o valor inferior do investimento? Há uns anos David obrigado ainda aos nossos colegas da UFSC, que trabalham tão perto nós estando tão obrigado ainda ainda aos aos nossos colegas dade da UFSC, UFSC, que que trabalham trabalham tãode tão perto perto dede nós nós estando estando Riceobrigado publicou um livro nonossos qualcolegas expressa forma enérgica o estado do software atual e tãotão longe: Prof. Joni da Silva Fraga e Prof. Lau Cheuk Lung. Por fim, um agradecimento a alguns longe: longe: Prof. Prof. Joni Joni dada Silva Silva Fraga Fraga e Prof. e Prof. Lau Lau Cheuk Cheuk Lung. Lung. Por fim, fim, umum agradecimento alguns a alguns aponta o dedo à indústria do software: ele afirma que nosPor tornámos sixagradecimento billion crashatest professores especialmente marcantes na nossa decarreira investigadores e professores professores professores especialmente marcantes nacarreira na nossa nossa carreira dede investigadores investigadores e professores e professores dummies desta especialmente indústria [212]. marcantes universitários: Prof. Paulo Fonseca Pinto, Prof. Vítor Vargas eVargas Prof. Luís Rodrigues. universitários: universitários: Prof. Prof. Paulo Paulo Fonseca Fonseca Pinto, Pinto, Prof. Prof. Vítor Vítor Vargas e Prof. e Prof. Luís Luís Rodrigues. Rodrigues. Este livro foilivro escrito a pensar nos nossos alunos futuros, mas deve muito aos nossos Este Este livro foifoi escrito escrito a pensar a pensar nos nos nossos nossos alunos futuros, futuros, mas mas deve deve muito muito aos aos nossos nossos SEGURANÇA DE SOFTWARE Ealunos O LIVRO alunos do passado das cadeiras de Segurança de Software (FCUL), Sistemas de Software alunos alunos dodo passado passado das das cadeiras cadeiras dede Segurança Segurança dede Software Software (FCUL), (FCUL), Sistemas Sistemas dede Software Software Seguros (FCUL) e Segurança em (IST). eles um forte muito obrigado. Alguns Seguros Seguros (FCUL) (FCUL) e Segurança e Segurança emem Software Software (IST). (IST). Para Para eles eles um um forte muito muito obrigado. obrigado. Alguns O tema do presente livro é aSoftware segurança dePara software, ou seja, oforte projeto, programação eAlguns alunos do último ano lectivo reviram muitos capítulos do livro,dofacto pelo qual estamos alunos alunos dodo último último ano ano lectivo lectivo reviram reviram muitos muitos capítulos capítulos do livro, livro, facto facto pelo pelo qual qual estamos estamos manutenção de software sem vulnerabilidades que possam ser exploradas para quebrar muito Bruno, Carlos Silva, Fábio Souto, Fernando André, muito muito agradecidos: agradecidos: Alberto Alberto Bruno, Bruno, Carlos Carlos Silva, Fábio Fábio Souto, Souto, Fernando Fernando André, André, Francisco Francisco umagradecidos: conjunto deAlberto propriedades de segurança. A Silva, segurança de software diz Francisco respeito, em Lameira, Francisco Rocha, Francisco Vieira, Gustavo Nascimento, Joaquim Rosa, Paulo Lameira, Lameira, Francisco Francisco Rocha, Rocha, Francisco Francisco Vieira, Vieira, Gustavo Gustavo Nascimento, Nascimento, Joaquim Joaquim Rosa, Rosa, Paulo Paulo nosso entender, à segurança do sistema – do computador – como um todo. Não se refere Dias,apenas Paulo Moniz, Rui Almeida, Sérgio Serrano e Tiago Sousa. Alguns colegas e alunos de Dias, Dias, Paulo Moniz, Moniz, Rui Almeida, Almeida, Sérgio Sérgio Serrano e Tiago emas Tiago Sousa. Alguns Alguns colegas alunos e alunos àPaulo segurança deRui cada programa ou Serrano aplicação, àSousa. segurança decolegas toda a epilha de dede doutoramento também alguns capítulos: Prof. Marcelo Pasin, Prof. Neves doutoramento doutoramento reviram reviram também também alguns alguns capítulos: capítulos: Prof. Prof. Marcelo Marcelo Pasin, Pasin, Prof. Prof. Alysson Alysson Neves Neves software: oreviram hipervisor, sistema operativo, servidor aplicacional, base deAlysson dados, aplicação, a a aSantos Veronese e Dr.a Ibéria aMedeiros. a Giuliana Bessani, Dr. Giuliana Giuliana Santos Santos Veronese Veronese e Dr. e Dr. Ibéria Ibéria Medeiros. Medeiros. Bessani, Bessani, Dr. Dr. bibliotecas, etc. Esta segurança depende necessariamente do hardware e das suas propriedades enosso mecanismos segurança. Como tal, diríamos que asdiversas áreas daagências informática mais O nosso de investigação tem sido suportado por diversas agências de financiaO trabalho O nosso trabalho trabalho dede de investigação investigação tem tem sido sido suportado suportado porpor diversas agências dede financiafinanciarelacionadas com a segurança de software são a Arquitetura e Organização de Computamento amento quem Comissão Europeia (projectos MAFTIA, CRUTIAL, RESIST,RESIST, mento aagradecemos: quem a quem agradecemos: agradecemos: Comissão Comissão Europeia Europeia (projectos (projectos MAFTIA, MAFTIA, CRUTIAL, CRUTIAL, RESIST, dores e os Sistemas Operativos, que na efronteira entre o multihardware CORTEX, HIDENETS, ESFORS) e Fundação para aprecisamente Ciência e Tecnologia (programas CORTEX, CORTEX, HIDENETS, HIDENETS, ESFORS) ESFORS) e Fundação eestão Fundação para para a Ciência a Ciência Tecnologia e Tecnologia (programas (programas multimultisoftware [142]. Outras áreas muito próximas são as Linguagens de Programação, a anuale oeanual CMU|Portugal, projectos DEFEATS, COPE, RITAS, AJECT, REGENESYS, RED, anual e e CMU|Portugal, CMU|Portugal, projectos projectos DEFEATS, DEFEATS, COPE, COPE, RITAS, RITAS, AJECT, AJECT, REGENESYS, REGENESYS, RED, RED, Engenharia deFTH-Grid, Software enosso a Gestão de Informação. DIVERSE, FTH-Grid, TISD). OTISD). por estes apoios. DIVERSE, DIVERSE, FTH-Grid, TISD). Oagradecimento O nosso nosso agradecimento agradecimento porpor estes estes apoios. apoios. O objetivo doagradecimento livro é ainda dotar às oainda leitor das ferramentas mentais quede lhe permitam perceber e umum O nosso pessoas da FCA da – Editora de Informática que foram um Oagradecimento O nosso nosso agradecimento ainda às às pessoas pessoas da FCA FCA – Editora – Editora de Informática Informática que que foram foram lidar com o problema da segurança do computador e do seu software. O livro identifica enormeenorme apoio naapoio edição do livro,do muito especialmente à Sandraà Correia. enorme apoio nana edição edição do livro, livro, muito muito especialmente especialmente Sandra à Sandra Correia. Correia. os problemas de segurança em sistemas de software modernos e apresenta paradigmas, Por modelos fim,Por mas mais importante, olidar nosso às nossas famílias, que sempre Por fim, mas mas mais mais importante, importante, o agradecimento nosso oesses nosso agradecimento agradecimento às às nossas nossas famílias, famílias, que que sempre sempre efim, ferramentas para com problemas. nos apoiaram, que estiveram sempresempre presentes ao longoaoda escrita do livro do e,do como nos nos apoiaram, apoiaram, que que estiveram estiveram sempre presentes presentes ao longo longo dada escrita escrita livro livro e,não e, como como não não O livro é resultado da nossa 12 anos de ensino de segurança de software poderia deixar de ser, ade quem é dedicado. poderia poderia deixar deixar de ser, ser, aeste quem a experiência quem este este é dedicado. édededicado. na Faculdade de Ciências da Universidade de Lisboa (FCUL), nas disciplinas de Segurança 9

c FCA –c EDITORA INFORMÁTICA c– FCA c DE FCA – EDITORA – DE EDITORA DE INFORMÁTICA DE INFORMÁTICA ©  FCA EDITORA INFORMÁTICA

5

9 9


IPRP IPRP

TSWLatexianTemp_000032.tex TSWLatexianTemp_000032.tex

4/8/2017 4/8/2017

16:16: 1818

Page Page 146

SEGURANÇA SEGURANÇA NO NO SOFTWARE SOFTWARE

A de integridade Software edizSistemas respeito de à ausência Software de Seguros, alterações e nonão Instituto autorizadas Superior ao Técnico sistema(IST) ou àda informação Universidade em causa. de Lisboa, na disciplina de Segurança em Software. As três disciplinas são leccionadas em programas de mestrado. A disponibilidade é a prontidão do sistema para fornecer um serviço ou da informação Emser Portugal e outros países, a segurança é geralmente ensinada no contexto de disciplinas para acedida. de sistemas computacionais, como as de Sistemas Operativos, Redes de Computadores Frequentemente, a estas três é ainda adicionado o atributo da autenticidade, ou seja, e Sistemas Distribuídos. Em alguns casos, como nas licenciaturas e alguns mestrados da da medida em que a informação ou o serviço fornecido são genuínos. Por vezes, este FCUL e do IST, existe uma disciplina exclusivamente dedicada à segurança. Nos casos em atributo é denominado autenticação, mas este termo aplica-se mais propriamente ao ato que a segurança aparece numa disciplina com um tema mais amplo e ortogonal, como sisde verificar a autenticidade de alguém ou de algo. temas operativos, os temas focados são naturalmente os relacionados com essa disciplina Na(p.ex., definição controlo dos atributos de acesso usámos discricionário duas vezes no sistema o termo operativo). “não autorizada” No caso . A definição das disciplinas do queiné teiramente ou não autorizado, dedicadas ou, àde segurança, forma mais são genérica, geralmente do conjunto focados de temas requisitos como adecriptografia, segurança a que proteção têm deeser a segurança satisfeitosde pelo redes. sistema, constitui a sua política de segurança. A política é geralmente definida pela organização onde se insere o sistema e pode ser apresentada Este conjunto de tópicos é fundamental para a segurança de sistemas informáticos e, sob a forma de um documento escrito. Por exemplo, uma política militar pode definir que como tal, o seu ensino num curso superior de Informática parece-nos imprescindível. No um documento classificado como “confidencial” só pode ser lido por pessoas com o nível entanto, no estado atual da (in)segurança, parece-nos igualmente fundamental ensinar e de autorização (clearance) correspondente. aprender segurança de software. Aliás, têm vindo a aparecer apelos precisamente nesse Um sentido. tema vasto Um caso ligado que à segurança teve amplaédifusão o da privacidade. foi o de Mary Sob Ann o ponto Davidson, de vista a Chief dosSecurity sistemas Oftécnicos, ficer da aOracle, privacidade que enviou é a confidencialidade uma carta aos reitores de dados daspessoais principais(nome, universidades morada, americanas números dea identificação, apelar à necessidade númerosde deformação telefone,dos dados engenheiros de cartõesinformáticos de crédito, etc.). nesta área [84]: We at Oracle have (...) determined that most developers we hire have not

1.1 VULNERABILIDADES been adequately trained in basic secure coding principles in their undergradu-

ate or graduate computer science programs. We have therefore had to develop Um conceito fundamental no domínio da segurança de software é o de vulnerabilidade. and roll out our own in-house security training program at significant time and Uma vulnerabilidade é um defeito do sistema (de software ou outro) que pode ser exploexpense. (...) We strongly recommend that universities adopt secure coding rado por um atacante com o objetivo de violar a política de segurança. As vulnerabilidades practices as part of their computer science curricula, to improve the security of podem ser classificadas com base em três categorias [229]: all commercial software, and ensure that their graduates remain competitive in the job market. In the future, Oracle plans to give hiring preference to students Vulnerabilidade de projeto – introduzida durante a fase de projeto do software (obwho have received such training and can demonstrate competence in software tenção de requisitos e desenho). Um exemplo é a decisão de usar um mecanismo security principles. de autenticação fraco ou não considerar que a comunicação pode ser observada na rede; As duas principais associações profissionais da área da informática, a ACM e a IEEE Vulnerabilidade de codificação (ou de orientações implementação) introduzida durantedea liComputer Society, fornecem periodicamente sobre– curricula de cursos programação (ou codificação) do software, ou seja, um bug com implicações de secenciatura em Informática. A última edição é de 2013 e contém uma área de conhecimento gurança. Um exemplo é a falta de verificação de limites de escrita num buffer sobre segurança – Information Assurance and Security – que inclui alguns tópicos que sobre permitede um ataque de buffer overflowDesign (Capítulo segurança software: Secure Software and5); Engineering, Platform Security e Web Security [142]. Vulnerabilidade operacional – causada pelo ambiente no qual o software é executado oudopela sua configuração. Um exemplo é a existência de contas senhae, A definição conteúdo das disciplinas de Segurança de Software atrássem referidas (password) num sistema de gestão bases denão dados. consequentemente, deste livro, foi umde processo trivial e evolutivo. As dificuldades encontradas foram fundamentalmente duas. A primeira foi a inexistência de uma definição A clara segurança dizque respeito três tipos de vulnerabilidades. No lido quede é esoftware dos temas englobaa aestes segurança de software: não existe sequer um vro vão-nos interessar muitoopinião, particularmente as de codificação, que parecem ser livro/manual que, na nossa cubra convenientemente aquilo quenos deve ser estudado 14 6

c c FCA FCA FCA – EDITORA EDITORA DEDE DE INFORMÁTICA INFORMÁTICA ©  –– EDITORA INFORMÁTICA

IPR


IPRPIPRP TSWLatexianTemp_000032.tex 4/8/2017 16: 18 Page 9 Page IPRP IPRP TSWLatexianTemp_000032.tex TSWLatexianTemp_000032.tex TSWLatexianTemp_000032.tex 4/8/2017 4/8/2017 4/8/2017 16: 16: 1816: 1818 Page 7Page 9 9

INTRODUÇÃO INTRODUÇÃO INTRODUÇÃO INTRODUÇÃO neste contexto. Em 2002 foram editados dois livros que abrangiam em grande parte o que AGRADECIMENTOS AGRADECIMENTOS AGRADECIMENTOS

era a segurança de software no início da década passada: os de Viega e McGraw [255] a a 1.a Edição 1.Edição Edição e de1. Howard e LeBlanc [130]. No entanto, a área evoluiu e essas obras ficaram bastante desatualizadas (p.ex., osem tratamento do importante da análise de estática depessoas. código, funEste livro não teria existido a contribuição, apoio etema encorajamento muitas Este Este livro livro não não teria teria existido existido sem sem a contribuição, a contribuição, apoio apoio e encorajamento e encorajamento dede muitas muitas pessoas. pessoas. damental hoje em dia, está muito desatualizado no primeiro e não existe no segundo). Um Depois primeiro agradecimento vai para olivros, Prof. Paulo Esteves por incontáveis ra- foi ra-raUm Um primeiro primeiro agradecimento agradecimento vai vai para para otanto Prof. o Prof. Paulo Paulo Esteves Esteves Veríssimo, Veríssimo, porpor incontáveis incontáveis da publicação destes dois quanto éVeríssimo, do nosso conhecimento, não zõeseditado entre as quais a de nos ter ensinado muito do que sabemos sobre investigação zões zões entre entre as as quais quais a de a de nos nos ter ter ensinado ensinado muito muito do do que que sabemos sabemos sobre sobre investigação investigação mais nenhum com pretensões de abarcar toda a segurança de software, apesar científica e por ter acedido a prefaciar este livro, o que muito nos honra. A este juntamos científica científica e por e por ter ter acedido acedido a prefaciar a prefaciar este este livro, livro, o que o que muito muito nos nos honra. honra. A este A este juntamos juntamos de o número de livros publicados na área ter aumentado. um forte agradecimento a dois colegas com quem temos tido o privilégio de trabalhar ao umum forte forte agradecimento agradecimento a dois a dois colegas colegas com com quem quem temos temos tido tido o privilégio o privilégio dede trabalhar trabalhar aoao A dos segunda dificuldade é que a área tem sofrido mudanças rápidas e inesperadas. Disto é longo anos e que são apoio Prof. Nuno Ferreira Neves eNeves Prof. Alysson longo longo dos dos anos anos e que eum que são são umfundamental: um apoio apoio fundamental: fundamental: Prof. Prof. Nuno Nuno Ferreira Ferreira Neves e Prof. e Prof. Alysson Alysson exemplo o já referido caso das ferramentas de análise estática de código, que em poucos Neves Bessani. Neves Neves Bessani. Bessani. anos passaram de pequenos protótipos de investigação a ferramentas comerciais compleUm xas agradecimento muito especial vai paravai osvai nossos colegas evulnerabilidades funcionários dode DepartaUm agradecimento agradecimento muito muito especial especial para para osos nossos colegas e funcionários e funcionários dodo DepartaDepartae Um amplamente usadas. Um segundo exemplo é nossos o dascolegas injeção de mento de Informática da Faculdade de Ciências da Universidade de Lisboa e do LASIGE, mento mento de de Informática Informática da da Faculdade Faculdade de de Ciências Ciências da da Universidade Universidade de de Lisboa Lisboa e do e do LASIGE, LASIGE, SQL, mal conhecidas nos inícios de 2000 mas que em poucos anos ascenderam ao topo comdas oscom quais tido o prazer trabalhar. O nossoOmuito obrigado ainda a ainda todos com ostemos os quais quais temos temos tido tido ode prazer o prazer de trabalhar. trabalhar. O nosso nosso muito muito obrigado obrigado ainda aos todos a todos osos vulnerabilidades de aplicações webdemais importantes [264]. membros da equipa de investigação Navigators, muito especialmente aos Prof. António membros membros dada equipa equipa dede investigação investigação Navigators, Navigators, muito muito especialmente especialmente aos aos Prof. Prof. António António O livro responde aJosé esteRufino, desafioProf. desenvolvendo quatro conjuntos de temas, corresponCasimiro Costa, Prof. Hans P. Hans Reiser, Prof. Marcelo Pasin, Prof. Mário Casimiro Casimiro Costa, Costa, Prof. Prof. José José Rufino, Rufino, Prof. Prof. Hans P. Reiser, P . Reiser, Prof. Prof. Marcelo Marcelo Pasin, Pasin, Prof. Prof. Mário Mário asuas partes: dendo cada um Moniz, a uma das a aSantos Veronese, Dr. João Antunes, Dr. Luís MarGiuliana Calha, Dr. Henrique Dr. Giuliana Giuliana Santos Santos Veronese, Veronese, Dr.Dr. João João Antunes, Antunes, Dr.Dr. Luís Luís MarMarCalha, Calha, Dr.Dr. Henrique Henrique Moniz, Moniz, Dr.Dr. a a Dixit, a Mônica Dr. Jeferson Souza eSouza Dr. Pedro Martins. Muito ques, Dr. João Craveiro, Dr. Mônica Mônica Dixit, Dixit, Dr.Dr. Jeferson Jeferson Souza e Dr. e Dr. Pedro Pedro Martins. Martins. Muito Muito ques, ques, Dr. Dr. João João Craveiro, Craveiro, Dr.Dr. Parte I.ainda Panorâmica e Proteção – da aUFSC, primeira parte livro traça uma panorâmica obrigadoobrigado ainda aos nossos colegas dacolegas UFSC, que trabalham tãodoperto nós estando tão obrigado ainda aos aos nossos nossos colegas da UFSC, que que trabalham trabalham tãode tão perto perto dede nós nós estando estando tãotão sobre o problema da segurança de software, introduzindo conceitos básicos e aa alguns selonge: Prof. Joni da Silva Fraga e Prof. Lau Cheuk Lung. Por fim, um agradecimento a alguns longe: longe: Prof. Prof. Joni Joni dada Silva Silva Fraga Fraga e Prof. e Prof. Lau Lau Cheuk Cheuk Lung. Lung. PorPor fim, fim, umum agradecimento agradecimento a alguns gurança noespecialmente desenvolvimento do Apresenta ainda osinvestigadores principais mecanismos professores especialmente marcantes nasoftware. nossa decarreira investigadores e professores professores professores especialmente marcantes marcantes nacarreira na nossa nossa carreira dede investigadores e professores e professores de proteção emProf. sistemas operativos convencionais eVargas na Luís linguagem de programação, universitários: Prof. Paulo Fonseca Pinto, Prof. Vítor Vargas eVargas Prof. Rodrigues. universitários: universitários: Prof. Paulo Paulo Fonseca Fonseca Pinto, Pinto, Prof. Prof. Vítor Vítor e Prof. e Prof. Luís Luís Rodrigues. Rodrigues. demonstrando que não resolvem o problema da segurança de software; Este livro foilivro escrito a pensar nos nossos alunos futuros, mas deve muito aos nossos Este Este livro foifoi escrito escrito a pensar a pensar nos nos nossos nossos alunos alunos futuros, futuros, mas mas deve deve muito muito aos aos nossos nossos Parte Vulnerabilidades – de a de segunda parte explica em profundidade as vulnealunos do passado das cadeiras de Segurança de Software (FCUL), Sistemas de Software alunos alunos doII.do passado passado das das cadeiras cadeiras Segurança Segurança dede Software Software (FCUL), (FCUL), Sistemas Sistemas dede Software Software rabilidades deesoftware (buffer overflows, corridas, falta de validação deAlguns entradas, SegurosSeguros (FCUL) e Segurança em Software (IST). Para eles um forte muito obrigado. Seguros (FCUL) (FCUL) Segurança e Segurança emem Software Software (IST). (IST). Para Para eles eles um um forte forte muito muito obrigado. obrigado. Alguns Alguns etc.), mostrando igualmente como o programador pode evitar criar esses problemas alunos do último ano lectivo reviram muitos capítulos do livro,dofacto pelo qual estamos alunos alunos dodo último último ano ano lectivo lectivo reviram reviram muitos muitos capítulos capítulos do livro, livro, facto facto pelo pelo qual qual estamos estamos durante a concretização doCarlos software. São destacados osSouto, casos especialmente impormuito agradecidos: Alberto Alberto Bruno, Silva, Fábio Souto, Fernando André, Francisco muito muito agradecidos: agradecidos: Alberto Bruno, Bruno, Carlos Carlos Silva, Silva, Fábio Fábio Souto, Fernando Fernando André, André, Francisco Francisco tantes das aplicações web eFrancisco móveis. Esta Gustavo parte pretende atingir Joaquim um dos Paulo objetivos Lameira,Lameira, Francisco Rocha, Francisco Vieira, Gustavo Nascimento, Joaquim Rosa, Lameira, Francisco Francisco Rocha, Rocha, Francisco Vieira, Vieira, Gustavo Nascimento, Nascimento, Joaquim Rosa, Rosa, Paulo Paulo fundamentais do livro: a compreensão das vulnerabilidades de software e a forma Dias, Paulo Moniz, Rui Almeida, Sérgio Serrano e Tiago Sousa. Alguns colegas e alunos de Dias, Dias, Paulo Paulo Moniz, Moniz, RuiRui Almeida, Almeida, Sérgio Sérgio Serrano Serrano e Tiago e Tiago Sousa. Sousa. Alguns Alguns colegas colegas e alunos e alunos dede direta de as evitar; doutoramento reviram também alguns capítulos: Prof. Marcelo Pasin, Prof. Alysson Neves doutoramento doutoramento reviram reviram também também alguns alguns capítulos: capítulos: Prof. Prof. Marcelo Marcelo Pasin, Pasin, Prof. Prof. Alysson Alysson Neves Neves a a aSantos Veronese e Dr.a Ibéria aMedeiros. a Giuliana Bessani,Bessani, Dr. Giuliana Giuliana Santos Santos Veronese Veronese e Dr. e Dr.Ibéria Ibéria Medeiros. Medeiros. Bessani, Dr.Dr. Parte III. Técnicas e Ferramentas – tendo em vista a meta de obter software (mais) O nossoO trabalho investigação temIIsido suportado pornão diversas agências de financiaseguro, ode conteúdo dainvestigação Parte é tem necessário mas suficiente, já agências que os programaO nosso nosso trabalho trabalho dede investigação tem sido sido suportado suportado por por diversas diversas agências dede financiafinanciamento amento quem Europeia (projectos MAFTIA, CRUTIAL, RESIST, dores são humanos eComissão cometem erros. Europeia Por outro (projectos lado, muitas vezes existe software mento aagradecemos: quem a quem agradecemos: agradecemos: Comissão Comissão Europeia (projectos MAFTIA, MAFTIA, CRUTIAL, CRUTIAL, RESIST, RESIST, CORTEX, HIDENETS, e Fundação para aA Ciência e Tecnologia (programas multilegado que jáESFORS) contém vulnerabilidades. terceira do livro explica, então, diverCORTEX, CORTEX, HIDENETS, HIDENETS, ESFORS) ESFORS) e Fundação e Fundação para para a Ciência aparte Ciência e Tecnologia e Tecnologia (programas (programas multimultianual eanual CMU|Portugal, projectos DEFEATS, COPE, RITAS, AJECT, REGENESYS, RED, sas técnicas e ferramentas que permitem lidar comRITAS, asRITAS, vulnerabilidades, assumindo anual e e CMU|Portugal, CMU|Portugal, projectos projectos DEFEATS, DEFEATS, COPE, COPE, AJECT, AJECT, REGENESYS, REGENESYS, RED, RED, DIVERSE, FTH-Grid, TISD). OTISD). nosso agradecimento por apoios. estas duas dificuldades. Alguns exemplos sãoestes metodologias de revisão de código, DIVERSE, DIVERSE, FTH-Grid, FTH-Grid, TISD). O O nosso nosso agradecimento agradecimento porpor estes estes apoios. apoios. ferramentas deainda análise automática deFCA código e teste baseado em injeção de ataques; O nossoOagradecimento àsainda pessoas da – Editora de Informática que foram um O nosso nosso agradecimento agradecimento ainda às às pessoas pessoas da da FCA FCA – Editora – Editora dede Informática Informática que que foram foram umum enormeenorme apoio naapoio edição do livro, muito especialmente à Sandra enorme apoio nana edição edição do do livro, livro, muito especialmente especialmente à Correia. Sandra à Sandra Correia. Correia. Parte IV. Tópicos Avançados – muito a quarta parte do livro apresenta um conjunto de tópicos avançados de segurança software. São temas que têmfamílias, sido investigados Por fim,Por mas mais importante, o nossoo agradecimento às nossas famílias, que sempre Por fim, fim, mas mas mais mais importante, importante, nosso odenosso agradecimento agradecimento às às nossas nossas famílias, que que sempre sempre nos últimos anos e que começam a ter aplicações práticas no domínio da segurança nos apoiaram, que estiveram sempresempre presentes ao longoaoda escrita do livro do e,do como nos nos apoiaram, apoiaram, que que estiveram estiveram sempre presentes presentes ao longo longo dada escrita escrita livro livro e,não e, como como não não de software, mas que têm interesse prático do que os temas da Parte poderia poderia deixar de ser, ade quem é dedicado. poderia deixar deixar de ser, ser, aeste quem aainda quem este este émenor dedicado. é dedicado. III. 9

c FCA –c EDITORA INFORMÁTICA c––FCA c DE FCA EDITORA FCA – EDITORA – DE DE EDITORA INFORMÁTICA DE INFORMÁTICA DE INFORMÁTICA ©  FCA EDITORA INFORMÁTICA

7

9 9


IPRP IPRP

TSWLatexianTemp_000032.tex TSWLatexianTemp_000032.tex

4/8/2017 4/8/2017

16:16: 1818

Page Page 148

SEGURANÇA SEGURANÇA NO NO SOFTWARE SOFTWARE

A Ointegridade livro foi escrito diz tendo respeito emàvista ausência dois tipos de alterações de leitores.não Por um autorizadas lado, pretende ao sistema servir de ou maà informação nual para disciplinas em causa. de Segurança de Software a nível universitário: licenciatura, mestrado e pós-graduações. Por outro lado, destina-se também ao profissional da Informática inteA disponibilidade é a prontidão do sistema para fornecer um serviço ou da informação ressado em desenvolver software seguro ou em auditar e proteger software já existente. para ser acedida. A este último poderá ser particularmente útil a Parte II, na qual são explicadas as princiFrequentemente, pais vulnerabilidades a estas e como três éasainda evitar,adicionado e a Parte oIII,atributo na qualda sãoautenticidade, apresentadas técnicas ou seja, e daferramentas, medida em como que aoinformação teste de software ou o serviço e a validação fornecido de entradas. são genuínos. Por vezes, este atributo é denominado autenticação, mas este termo aplica-se mais propriamente ao ato de verificar a autenticidade de alguém ou de algo. NaA definição dos atributos usámos duas vezes o termo “não autorizada”. A definição do que 2.a EDIÇÃO é ou não autorizado, ou, de forma mais genérica, do conjunto de requisitos de segurança Esta 2.adeedição do livro épelo uma versão constitui atualizadaa sua e aumentada dosegurança. livro que foi publicado que têm ser satisfeitos sistema, política de A política em 2010. Num período de se cerca de o sete anos eapode área ser evoluiu muito, de é originalmente geralmente definida pela organização onde insere sistema apresentada modo que o livro sofreu alterações significativas. Em geral, todo o texto foi revisto sob a forma de um documento escrito. Por exemplo, uma política militar pode definir que e expandido com novo material. Em concreto: um documento classificado como “confidencial” só pode ser lido por pessoas com o nível de autorização (clearance) correspondente. Um tema à segurança é o da Sob odeponto de vista dos um sistemas Navasto Parteligado I, o tema da segurança noprivacidade. desenvolvimento software ganhou capítulo técnicos, a privacidade de ambiente dados pessoais (nome, morada, próprio (Capítuloé a2)confidencialidade e a segurança do de execução passou números a contemde identificação, de telefone, dadosoperativos de cartões(Capítulo de crédito, plar tantonúmeros a proteção nos sistemas 3),etc.). como a segurança na linguagem de programação (Capítulo 4);

1.1 VULNERABILIDADES

A Parte II ganhou um novo capítulo sobre vulnerabilidades em aplicações móveis Um conceito fundamental no domínio da segurança de software é ocomo de vulnerabilidade. (Capítulo 10) e apresenta vulnerabilidades e ataques recentes, o Heartbleed, e Uma vulnerabilidade é umde defeito do como sistema (de software ou Programming; outro) que pode ser explotécnicas avançadas ataque, a Return-Oriented rado por um atacante com o objetivo de violar a política de segurança. As vulnerabilidades podem ser classificadas com base em três categorias [229]: Na Parte III, no capítulo sobre auditoria manual de software (Capítulo 12), a secção Vulnerabilidade dede projeto – introduzida durantee aaumentada, fase de projeto do software (obsobre modelação ameaças foi reestruturada pois esta atividade tem tenção requisitosparticularmente e desenho). Um exemplo éOa decisão usaranálise um mecanismo vindo de a tornar-se importante. capítulo de sobre estática de decódigo autenticação fraco considerar que a comunicação pode ser observada na (Capítulos 14)ou foi não muito estendido, pois, de abordagem promissora, esta forma rede; de análise passou a essencial no processo de desenvolvimento de software. Todos os capítulos foram atualizados; Vulnerabilidade de codificação (ou de implementação) – introduzida durante a programação (ou codificação) do software, ou seja, um bug com implicações de segurança. Um é a17falta de verificação limites de escrita numebuffer que Na Parte IV, exemplo no Capítulo foi dado destaque de à computação em nuvem aos contenpermite de buffer overflow (Capítulo 5); 2010. O Capítulo 18 foi expandido tores, um queataque ganharam enorme importância desde com informaçãooperacional sobre as concretizações da ambiente Intel e da no ARM deoambientes exeVulnerabilidade – causada pelo qual software édeexecução confiáveis. A tolerância a intrusões distribuída deixou de ser um tema teórico, cutado ou pela sua configuração. Um exemplo é a existência de contas sem senha por um lado com a explosão de interesse a Bitcoin e a Blockchain, por outro (password) num sistema de gestão de basessobre de dados. com a possibilidade de usar diversas nuvens heterogéneas, tendo por isso sido muito atualizado o Capítulo 19. A segurança de software diz respeito a estes três tipos de vulnerabilidades. No livro vão-nos interessar muito particularmente as de codificação, que nos parecem ser 14 8

c c FCA FCA FCA – EDITORA EDITORA DEDE DE INFORMÁTICA INFORMÁTICA ©  –– EDITORA INFORMÁTICA

IPR


IPRP IPRP TSWLatexianTemp_000032.tex TSWLatexianTemp_000032.tex 4/8/2017 4/8/2017 1818 Page Page 9 9 IPRP TSWLatexianTemp_000032.tex 4/8/2017 16: 16: 1816: Page 377

INTRODUÇÃO INTRODUÇÃO VIRTUALIZAÇÃO E COMPUTAÇÃO EM NUVEM 17

AGRADECIMENTOS AGRADECIMENTOS 17.2 CONCRETIZAÇÃO DE VIRTUALIZAÇÃO E a a 1. 1.Edição Edição COMPUTAÇÃO EM NUVEM Este Este livro não não teria teria existido existido sem sem aencarregado contribuição, a contribuição, apoio apoio e encorajamento e encorajamento dede muitas pessoas. pessoas. O SO é olivro componente de software de administrar os recursos demuitas hardware de um computador. Assim sendo, opara projeto de Paulo um SO convencional, como oincontáveis Windows Um Um primeiro primeiro agradecimento agradecimento vaivai para o Prof. o Prof. Paulo Esteves Esteves Veríssimo, Veríssimo, porpor incontáveis ra-raou ozões Linux, toma como premissa que este software vai do ser executado diretamente sobre zões entre entre as as quais quais a de a de nos nos terter ensinado ensinado muito muito do que que sabemos sabemos sobre sobre investigação investigação o hardware da máquina. A virtualização vem quebrar premissa, já que entre o juntamos SO e científica científica e por e por terter acedido acedido a prefaciar a prefaciar este este livro, livro, o esta que o que muito muito nos nos honra. honra. A este A este juntamos o hardware vai-se interpor, pelo menos, o hipervisor, como pode ser observado na Figura umum forte forte agradecimento agradecimento a dois a dois colegas colegas com com quem quem temos temos tido tido o privilégio o privilégio dede trabalhar trabalhar aoao 17.2.longo No entanto, aefilosofia básica da fundamental: virtualização éProf. aProf. deNuno que qualquer SO éeexecutado longo dos dos anos anos que e que são são umum apoio apoio fundamental: Nuno Ferreira Ferreira Neves Neves Prof. e Prof. Alysson Alysson sobre o hipervisor sem modificação. Este princípio exige que o hipervisor forneça ao SO Neves Neves Bessani. Bessani. uma interface (quase) idêntica à do hardware do computador. Um Um agradecimento agradecimento muito muito especial especial vaivai para para osos nossos nossos colegas colegas e funcionários e funcionários dodo DepartaDepartaEstamento necessidade de oferecer uma interface semelhante à do hardware está associada a mento dede Informática Informática dada Faculdade Faculdade dede Ciências Ciências dada Universidade Universidade dede Lisboa Lisboa e do e do LASIGE, LASIGE, trêscom princípios de temos projeto dotido hipervisor (tendo em vista aplicações de segurança): com osos quais quais temos tido o prazer o prazer de de trabalhar. trabalhar. OO nosso nosso muito muito obrigado obrigado ainda ainda a todos a todos osos membros membros dada equipa equipa dede investigação investigação Navigators, Navigators, muito muito especialmente especialmente aos aos Prof. Prof. António António Compatibilidade – o hipervisor deve ser capaz de executar um SO de forma seCasimiro Casimiro Costa, Costa, Prof. Prof. José José Rufino, Rufino, Prof. Prof. Hans Hans P. Reiser, P. Reiser, Prof. Prof. Marcelo Marcelo Pasin, Pasin, Prof. Prof. Mário Mário melhante àquela em que este a aseria executado sobre o hardware da máquina, sem Giuliana Giuliana Santos Santos Veronese, Veronese, Dr.Dr. João João Antunes, Antunes, Dr.Dr. Luís Luís MarMarCalha, Calha, Dr.Dr. Henrique Henrique Moniz, Moniz, Dr.Dr. reduzir a sua fiabilidade; a a Mônica Dixit, Dixit, Dr.Dr. Jeferson Jeferson Souza Souza e Dr. e Dr. Pedro Pedro Martins. Martins. Muito Muito ques, ques, Dr.Dr. João João Craveiro, Craveiro, Dr.Dr.Mônica Desempenho –aos o hipervisor deve ser capaz de executar um SO sem afetar con- tãotão obrigado obrigado ainda ainda aos nossos nossos colegas colegas dada UFSC, UFSC, que que trabalham trabalham tão tão perto perto dede nós nós estando estando sideravelmente a velocidade de execução, face ao que seria obtido se este fosse longe: longe: Prof. Prof. Joni Joni dada Silva Silva Fraga Fraga e Prof. e Prof. Lau Lau Cheuk Cheuk Lung. Lung. PorPor fim, fim, umum agradecimento agradecimento a alguns a alguns executado diretamente sobre o hardware da máquina; professores professores especialmente especialmente marcantes marcantes nana nossa nossa carreira carreira dede investigadores investigadores e professores e professores Simplicidade –Prof. oPaulo hipervisor devePinto, ter tamanho e complexidade limitados, de modo a universitários: universitários: Prof. Paulo Fonseca Fonseca Pinto, Prof. Prof. Vítor Vítor Vargas Vargas e Prof. e Prof. Luís Luís Rodrigues. Rodrigues. ser possível garantir a sua segurança e fiabilidade. Este Este livro livro foifoi escrito escrito a pensar a pensar nos nos nossos nossos alunos alunos futuros, futuros, mas mas deve deve muito muito aos aos nossos nossos alunos alunos dodo passado passado das das cadeiras cadeiras dede Segurança Segurança dede Software Software (FCUL), (FCUL), Sistemas Sistemas dede Software Software Seguros Seguros (FCUL) (FCUL) e Segurança e Segurança em Software Software (IST). (IST). Para Para eles eles umum forte forte muito muito obrigado. obrigado. Alguns Alguns 17.2.1 VIRTUALIZAÇÃO DOemHARDWARE alunos alunos dodo último último ano ano lectivo lectivo reviram reviram muitos muitos capítulos capítulos dodo livro, livro, facto facto pelo pelo qual qual estamos estamos muito muito agradecidos: agradecidos: Alberto Alberto Bruno, Carlos Carlos Silva, Silva, Fábio Fábio Souto, Fernando André, Francisco Francisco Nesta secção vamos considerar osBruno, princípios referidos sob oSouto, ponto deFernando vista doAndré, processador Lameira, Lameira, Francisco Francisco Rocha, Rocha, Francisco Francisco Vieira, Vieira, Gustavo Gustavo Nascimento, Nascimento, Joaquim Joaquim Rosa, Rosa, Paulo Paulo (CPU), da memória e das entradas/saídas (I/O). Dias, Dias, Paulo Paulo Moniz, Moniz, RuiRui Almeida, Almeida, Sérgio Sérgio Serrano Serrano e Tiago e Tiago Sousa. Sousa. Alguns Alguns colegas colegas e alunos e alunos dede Umdoutoramento processador diz-se virtualizável se capítulos: suportar execução direta, ouProf. seja, se puder doutoramento reviram reviram também também alguns alguns capítulos: Prof. Prof. Marcelo Marcelo Pasin, Pasin, Prof. Alysson Alysson Neves Neves executar as Dr. instruções deSantos linguagem-máquina de a a a auma VM, permitindo que o hipervisor Giuliana Giuliana Santos Veronese Veronese e Dr. e Dr. Ibéria Ibéria Medeiros. Medeiros. Bessani, Bessani, Dr. mantenha o controlo do sistema. Os processadores Intel e AMD suportam execução diO nosso nosso trabalho trabalho dede investigação investigação tem sido sido suportado suportado porpor diversas diversas agências agências dede financiafinanciaretaOdesde meados dos anos 2000. Natem Secção 3.1 vimos que um CPU tem habitualmente mento mento a quem a quem agradecemos: agradecemos: Comissão Comissão Europeia Europeia (projectos (projectos MAFTIA, MAFTIA, CRUTIAL, CRUTIAL, RESIST, RESIST, dois modos de execução: modo núcleo e modo utilizador. A execução direta exige um novo CORTEX, CORTEX, HIDENETS, HIDENETS, ESFORS) ESFORS) e Fundação e Fundação para para a Ciência a Ciência e Tecnologia e Tecnologia (programas (programas multimodo de execução, mais privilegiado do que estes dois, o modo hipervisor. O hipervisor multianual anual e e CMU|Portugal, CMU|Portugal, projectos projectos COPE, COPE, RITAS, RITAS, AJECT, AJECT, REGENESYS, RED, RED, é executado neste último modo, o SODEFEATS, deDEFEATS, cada VM em modo núcleo e osREGENESYS, processos dos DIVERSE, DIVERSE, FTH-Grid, FTH-Grid, TISD). TISD). O O nosso nosso agradecimento agradecimento por por estes estes apoios. apoios. utilizadores em modo utilizador. Por vezes, o modo hipervisor é designado por modo hospedeiro e osagradecimento outros dois indistintamente por modo convidado (ou, respetivamente, host OO nosso nosso agradecimento ainda ainda às às pessoas pessoas dada FCA FCA – Editora – Editora de de Informática Informática que que foram foram umum e guest). enorme enorme apoio apoio nana edição edição dodo livro, livro, muito muito especialmente especialmente à Sandra à Sandra Correia. Correia. Quando ofim, código em modo convidado tentaagradecimento executar umaàs instrução privilegiada, ésempre gePorPor fim, mas mas mais mais importante, importante, o nosso o nosso agradecimento às nossas nossas famílias, famílias, que que sempre radanos uma interrupção e executada uma rotina de tratamento de interrupção em modo nos apoiaram, apoiaram, que que estiveram estiveram sempre sempre presentes presentes aoao longo longo dada escrita escrita dodo livro livro e, e, como como não não hospedeiro, ou seja, noser, hipervisor. Por o SO de uma VM não pode desligar as poderia poderia deixar deixar dede ser, a quem a quem este este éexemplo, dedicado. é dedicado. interrupções do CPU, porque isso comprometeria o funcionamento do próprio hipervisor. 377 9 9 377

c– FCA c FCA c FCA – EDITORA EDITORA DE INFORMÁTICA DE INFORMÁTICA ©  FCA EDITORA INFORMÁTICA – EDITORA DE– DE INFORMÁTICA


IPRP IPRP

TSWLatexianTemp_000032.tex TSWLatexianTemp_000032.tex

4/8/2017 4/8/2017

16:16: 1818

Page Page 14378

SEGURANÇA SEGURANÇA NO NO SOFTWARE SOFTWARE

A Assim, integridade se umadizVM respeito tentar executar à ausência a instrução de alterações que desliga não autorizadas as interrupções ao sistema (instrução oucli à informação em Assembly em causa. x86), é gerada uma interrupção e chamado o hipervisor, permanecendo as interrupções ligadas. O hipervisor limita-se a guardar numa tabela a informação de que A disponibilidade é a prontidão do sistema para fornecer um serviço ou da informação as interrupções estão desligadas na VM em causa e a emular o comportamento habitual para ser acedida. das interrupções (são armazenadas até serem novamente ligadas). O funcionamento das Frequentemente, interrupções no apróprio estas hipervisor três é ainda e nas adicionado restantes o VM atributo não da é, portanto, autenticidade, afetadoou por seja, essa dachamada medida àem instrução que a informação cli. ou o serviço fornecido são genuínos. Por vezes, este atributo é denominado autenticação, mas este termo aplica-se mais propriamente ao ato Para retornar ao modo convidado, o hipervisor usa uma instrução específica, por exemplo, de verificar a autenticidade de alguém ou de algo. a instrução vmrun no caso dos processadores AMD [243]. Esta instrução causa o armaNazenamento definição dos de atributos alguma informação usámos duas de vezes contexto o termo do CPU “nãonuma autorizada” tabela. A contendo definiçãoestruturas do que Control Block (VMCB). Sempre que ocorre uma interrupção salto para o é Virtual ou nãoMachine autorizado, ou, de forma mais genérica, do conjunto de requisitos dee segurança que hipervisor, têm de ser a estrutura satisfeitos correspondente pelo sistema,aconstitui uma determinada a sua política VM éde restaurada, segurança. ou A seja, política usada é para geralmente atualizardefinida o estado pela doorganização CPU. A Figura onde 17.3 seilustra insereestas o sistema mudanças e podedeser modo apresentada convidado sob para a forma modo de hospedeiro um documento e vice-versa. escrito. Por exemplo, uma política militar pode definir que um documento classificado como “confidencial” só pode ser lido por pessoas com o nível de autorização (clearance) correspondente. Fluxo de execução

Um tema vasto ligado à segurança é o da privacidade. Sob o ponto de vista dos do sistemas CPU técnicos, a privacidade é a confidencialidade de dados pessoais (nome, morada, números ... de identificação, números de telefone, dados de cartões de crédito, etc.). ... ... ... ...

1.1 VULNERABILIDADES Instrução privilegiada (p.ex., cli)

Interrupção ...

Contexto armazenado numa VMCB Um conceito fundamental no domínio da segurança de software é o ...de vulnerabilidade. ... pode ser exploUma vulnerabilidade é um defeito do sistema (de software ou outro) que rado por um atacante com o objetivo de violar a política de segurança. ... As vulnerabilidades ... podem ser classificadas com base em três Retorno categorias [229]: vmrun ... Contexto recuperado da VMCB ... Vulnerabilidade de projeto – introduzida durante a fase de projeto do software (ob... tenção de requisitos e desenho). Um exemplo é a decisão de usar um mecanismo ... ... fraco ou não considerar que a comunicação pode ser observada na de autenticação ... rede;

Vulnerabilidade de codificação (ou de implementação) – introduzida durante a CPU em modo convidado CPU em modo hospedeiro programação (ou codificação) do software, ou seja, um bug (instruções com implicações de sedo hipervisor) (instruções do sistema operativo da VM) gurança. Um exemplo é a falta de verificação de limites de escrita num buffer que permite um ataque de buffer overflow (Capítulo 5);

FIGURA 17.3 – EXEMPLO DE MUDANÇAS DE MODO CONVIDADO PARA MODO HOSPEDEIRO E VICE-VERSA EM PROCESSADORES AMD; OS RETÂNGULOS REPRESENTAM INSTRUÇÕES EXECUTADAS PELO CPU

Vulnerabilidade operacional – causada pelo ambiente no qual o software é executado ou pela sua configuração. Um exemplo é a existência de contas sem senha (password) sistema não de gestão de bases de dados. Nalguns casos, num o hipervisor pode usar a execução direta fornecida pelo processador e tem de resolver de outra forma os problemas criados pela instrução cli e outras. Isso dia, quando a execução direta três está desligada, mas sobretudo acontecia A acontece, segurançahoje de em software diz respeito a estes tipos de vulnerabilidades. No lisempre desde o ressurgimento da virtualização dos anos 90)que aténos que parecem a Intel e AMD vro vão-nos interessar muito particularmente as (fim de codificação, ser c ©  c– FCA 14378 378 FCA EDITORA – EDITORA DEDE INFORMÁTICA DE INFORMÁTICA FCA – EDITORA INFORMÁTICA

IPR


IPRP IPRP TSWLatexianTemp_000032.tex TSWLatexianTemp_000032.tex 4/8/2017 4/8/2017 1818 Page Page 9 9 IPRP TSWLatexianTemp_000032.tex 4/8/2017 16: 16: 1816: Page 379

INTRODUÇÃO INTRODUÇÃO VIRTUALIZAÇÃO E COMPUTAÇÃO EM NUVEM 17 começaram a suportar essa execução (meados dos anos 2000). Antes desse suporte exisAGRADECIMENTOS AGRADECIMENTOS tir, o hipervisor era executado em modo núcleo e o SO em modo utilizador. A primeira a 1.a 1.Edição Edição solução para o problema foi a tradução binária dinâmica, usada pela VMware. A ideia é queEste quando o SO tenta executar uma instrução privilegiada gerada uma interrupção, que Este livro livro não não teria teria existido existido sem sem a contribuição, a contribuição, apoio apoio e encorajamento eé encorajamento dede muitas muitas pessoas. pessoas. passa o controlo ao hipervisor. O hipervisor traduz (dinamicamente) a instrução binária para Um primeiro primeiro agradecimento agradecimento para para o Prof. o por Prof. Paulo Paulo Esteves Esteves Veríssimo, por por incontáveis incontáveis umaUm sequência de instruções quevai avai emulam, exemplo, para Veríssimo, a instrução cli põe numa ra-razões zões entre entre as as quais quais a de a de nos nos ter ter ensinado ensinado muito muito do do que que sabemos sabemos sobre sobre investigação investigação tabela informação de que as interrupções estão desligadas na VM onde foi executada a inscientífica científica e por e por terter acedido a prefaciar a prefaciar este este livro, livro, o pelo que o que muito muito nos nos honra. honra. A este Ainstruções este juntamos juntamos trução. A outra solução éacedido a para-virtualização, usada Xen. Neste caso, as umum forte forte agradecimento agradecimento a dois a dois colegas colegas com com quem quem temos temos tido tido o privilégio o privilégio dede trabalhar trabalhar privilegiadas existentes no SO da VM são previamente (de forma estática) substituídas por aoao longo longo dos dos anos anos eque que e que são são umum apoio fundamental: fundamental: Prof. Prof. Nuno Nuno Ferreira Ferreira Neves Neves e Prof. e Prof. Alysson Alysson excertos de código emulem o apoio mesmo comportamento e que não contenham instruNeves Neves Bessani. Bessani. ções privilegiadas. Esta solução exige que os SO sejam portados para serem executados sobre o agradecimento hipervisor, masmuito émuito mais eficiente do que primeira, pois diminui o número de inUm Um agradecimento especial especial vaivai para para osaos nossos nossos colegas colegas e funcionários e funcionários dodo DepartaDepartaterrupções e mudanças de contexto; as aplicações não precisam de ser modificadas, visto mento mento dede Informática Informática dada Faculdade Faculdade dede Ciências Ciências dada Universidade Universidade dede Lisboa Lisboa e do e do LASIGE, LASIGE, quecom são executadas em modo previsto. com osos quais quais temos temos tido tido o utilizador prazer o prazer decomo de trabalhar. trabalhar. OO nosso nosso muito muito obrigado obrigado ainda ainda a todos a todos osos membros da da equipa equipa de investigação investigação Navigators, Navigators, muito muito especialmente aos Prof. Prof. António António Ummembros segundo aspeto da de concretização da virtualização é aespecialmente virtualização daaos memória. Casimiro Casimiro Costa, Costa, Prof. Prof. José José Rufino, Rufino, Prof. Prof. Hans Hans P . Reiser, P . Reiser, Prof. Prof. Marcelo Marcelo Pasin, Pasin, Prof. Prof. Mário Como referido na Secção 3.1.2, a gestão da memória é geralmente feita de modo coope-Mário a a Giuliana Giuliana Santos Santos Veronese, Veronese, Dr. João João Antunes, Dr. Dr. Luís Luís MarMarCalha, Calha, Dr. Henrique Henrique Moniz, Moniz, Dr.Dr. rativo peloDr. processador e pelo SO, com o apoio da unidade de Dr. gestão deAntunes, memória (MMU). a a Mônica Mônica Dixit, Dixit, Dr. Dr. Jeferson Jeferson Souza Souza e Dr. e Dr. Pedro Pedro Martins. Martins. Muito Muito ques, ques, Dr. Dr. João João Craveiro, Craveiro, Dr. Dr. Quando se usa virtualização, o hipervisor tem que se interpor nesta cooperação e admiobrigado obrigado ainda ainda aos nossos nossos colegas colegas da UFSC, UFSC, que que trabalham trabalham tãotão perto perto dede nós nós estando nistrar a utilização daaos memória que é da feita por cada VM. O hipervisor deve ter asestando suas tãotão longe: longe: Prof. Prof. Joni Joni da da Silva Silva Fraga e Prof. e Prof. Lau Lau Cheuk Cheuk Lung. Lung. PorPor fim, fim, umum agradecimento agradecimento a alguns a alguns próprias tabelas de páginas e Fraga manter nestas tabelas versões-sombra das tabelas das diprofessores professores especialmente especialmente marcantes marcantes na na nossa nossa carreira carreira de de investigadores investigadores e professores e professores versas VM. Quando uma VM modifica as suas tabelas de páginas, o hipervisor tem de universitários: universitários: Prof. Prof. Paulo Fonseca Fonseca Pinto, Pinto, Prof. Prof. Vítor Vítor Vargas Vargas e Prof. e Prof. Luís Luís Rodrigues. Rodrigues. modificar igualmente asPaulo suas tabelas de modo a manter as sombras atualizadas. Este Este livro livro foifoi escrito escrito a simples, pensar a pensar nos nos nossos nossos alunos alunos futuros, futuros, mas mas deve deve muito muito aos nossos nossos Apesar de aparentemente esta solução de virtualização de memória temaos alguns alunos alunos do do passado passado das das cadeiras cadeiras de de Segurança Segurança de de Software Software (FCUL), (FCUL), Sistemas Sistemas de de Software Software desafios associados. Um aspeto incontornável é o de que o hipervisor deve limitar o núSeguros Seguros (FCUL) (FCUL) e epágina Segurança emem Software Software (IST). (IST). Para Para eles eles um um forte forte muito obrigado. mero de molduras deSegurança (page frames) usadas por cada VM, oumuito seja, o obrigado. espaçoAlguns deAlguns alunos alunos do do último último ano ano lectivo lectivo reviram reviram muitos muitos capítulos capítulos do do livro, livro, facto facto pelo pelo qual qual estamos estamos memória física usado. A solução para este problema é a mesma que para um SO: fazer muito muito agradecidos: Alberto Bruno, Bruno, Carlos Carlos Silva, Silva, Fábio Fábio Souto, Souto, Fernando André, André, Francisco Francisco swap out agradecidos: para disco de Alberto páginas quando for necessário espaço emFernando memória física. No enLameira, Lameira, Francisco Francisco Rocha, Rocha, Francisco Francisco Vieira, Vieira, Gustavo Gustavo Nascimento, Nascimento, Joaquim Joaquim Rosa, Rosa, tanto, o acesso a páginas de memória swapped out é muito lento, pois exige carregarPaulo a Paulo Dias, Dias, Paulo Moniz, Moniz, RuiRui Almeida, Almeida, Sérgio Sérgio Serrano Serrano e Tiago egestão Tiago Sousa. Sousa. Alguns colegas colegas e alunos e alunos página dePaulo disco para RAM, logo, os SO fazem uma muitoAlguns criteriosa de quais as dede doutoramento doutoramento reviram reviram também também alguns alguns capítulos: capítulos: Prof. Prof. Marcelo Marcelo Pasin, Pasin, Prof. Alysson Alysson Neves Neves páginas que são swapped out usando diversos critérios (p.ex., o critério deProf. fazer swap out, a a a a Giuliana Giuliana Santos Santos Veronese Veronese e Dr. e Dr. Ibéria Ibéria Medeiros. Medeiros. Bessani, Bessani, Dr. Dr. em primeiro lugar, das páginas que não são acedidas há mais tempo). Ora, o hipervisor nãoOtem acesso fácil ade este tipo de informação específica depor cada VM, logo, não consegue O nosso nosso trabalho trabalho de investigação investigação tem tem sido sido suportado suportado por diversas diversas agências agências dede financiafinanciaminimizar o impacto do swap out. Uma solução interessante para este problema é a usada mento mento a quem a quem agradecemos: agradecemos: Comissão Comissão Europeia Europeia (projectos (projectos MAFTIA, MAFTIA, CRUTIAL, CRUTIAL, RESIST, RESIST, no VMware ESX Server: oESFORS) hipervisor cria e controla um na memória de CORTEX, CORTEX, HIDENETS, HIDENETS, ESFORS) e Fundação e Fundação para para a Ciência a “processo-balão” Ciência e Tecnologia e Tecnologia (programas (programas multimulticada VM, e quando precisa que uma VM liberte molduras de páginas, enche o balão, ou anual anual e e CMU|Portugal, CMU|Portugal, projectos projectos DEFEATS, DEFEATS, COPE, COPE, RITAS, RITAS, AJECT, AJECT, REGENESYS, REGENESYS, RED, RED, seja, força o processo aTISD). pedir páginas de memória; a memória do balão pode ser DIVERSE, DIVERSE, FTH-Grid, FTH-Grid, TISD). Omais O nosso nosso agradecimento agradecimento porpor estes estes apoios. apoios. usada pelo hipervisor, já que o processo, de resto, não serve para nada. OO nosso nosso agradecimento agradecimento ainda ainda às às pessoas pessoas dada FCA FCA – Editora – Editora dede Informática Informática que que foram foram umum Outra questão interessante nado gestão da memória é que,à muitas vezes, as diversas VM enorme enorme apoio apoio nana edição edição do livro, livro, muito muito especialmente especialmente Sandra à Sandra Correia. Correia. correm o mesmo SO, o que causa um enorme desperdício de memória. Alguns hipervisoPor fim, fim, mas mas mais mais importante, importante, o nosso o que nosso agradecimento agradecimento àsapenas às nossas nossas famílias, famílias, sempre sempre res Por detetam esta situação e garantem em memória está uma cópiaque deque cada nos nos apoiaram, apoiaram, que que estiveram estiveram sempre sempre presentes presentes ao ao longo longo da da escrita escrita do do livro livro e, e, como como não não página de memória do SO. poderia poderia deixar deixar dede ser, ser, a quem a quem este este é dedicado. é dedicado. 379 9 9 379

c– FCA c FCA c FCA – EDITORA EDITORA DE INFORMÁTICA DE INFORMÁTICA ©  FCA EDITORA DE INFORMÁTICA – EDITORA DE– INFORMÁTICA


IPRP IPRP

TSWLatexianTemp_000032.tex TSWLatexianTemp_000032.tex

4/8/2017 4/8/2017

16:16: 1818

Page Page 14380

SEGURANÇA SEGURANÇA NO NO SOFTWARE SOFTWARE

A Ointegridade terceiro aspeto diz é respeito a virtualização à ausência dasde entradas/saídas. alterações não Os autorizadas computadores ao sistema atuais contêm ou à informação uma grande emvariedade causa. de dispositivos de I/O, com requisitos de desempenho exigentes (p.ex., os das placas gráficas ou de rede), que são acedidos usando mecanismos de muito A disponibilidade é a prontidão do sistema para fornecer um serviço ou da informação baixo nível, como interrupções e acesso direto a memória (DMA), e que usam inúmeros para ser acedida. gestores de dispositivos (device drivers). Este cenário tornava, no início, a virtualização dos Frequentemente, dispositivos de entrada/saída a estas três um é ainda problema adicionado complicado. o atributo da autenticidade, ou seja, da medida em que a informação ou o serviço fornecido são genuínos. Por vezes, este A solução atual para este problema passa pelo uso de um dispositivo chamado IOMMU. atributo é denominado autenticação, mas este termo aplica-se mais propriamente ao ato Este dispositivo funciona de modo análogo à MMU. A IOMMU permite ao SO de uma de verificar a autenticidade de alguém ou de algo. VM aceder corretamente a dispositivos de I/O baseados em DMA, pois faz o mapeamento Naentre definição o espaço dos atributos de endereçamento usámos duasusado vezespor o termo esses“não dispositivos autorizada” na . AVM definição e o espaço do quede do ou, hipervisor. Além a IOMMU faz o controlo de acesso aos dispoé endereçamento ou não autorizado, de forma maisdisso, genérica, do conjunto de requisitos de segurança que sitivos têm de de I/O, ser satisfeitos permitindo,pelo por sistema, exemplo,constitui que o hipervisor a sua política atribuade o uso segurança. de um dispositivo A política a é uma geralmente única VM. definida pela organização onde se insere o sistema e pode ser apresentada sob a forma de um documento escrito. Por exemplo, uma política militar pode definir que um documento classificado como “confidencial” só pode ser lido por pessoas com o nível COMPUTAÇÃO EM NUVEM de17.2.2 autorização (clearance) correspondente. Um temajávasto ligado àasegurança é o –danomeadamente, privacidade. Sob o ponto de vista Como foi referido, virtualização a virtualização tipo dos I ousistemas nativa – é técnicos, a privacidade é a confidencialidade de dados pessoais (nome, morada, uma das tecnologias que torna possível a computação em nuvem. Neste tipo números de virtualidezação, identificação, de telefone, dados de cartões no topo números do hardware corre um hipervisor sobrede o crédito, qual sãoetc.). executadas várias VM (Figura 17.2b). Vários serviços de computação em nuvem que seguem o modelo IaaS (p.ex., EC2) consistem, simplesmente, em alugar este tipo de VM aos consumidores. No caso do 1.1modelo VULNERABILIDADES PaaS, os serviços têm software adicional, por exemplo, um servidor aplicacional e um SGBD. No modelo SaaS, o serviço é uma aplicação completa, com todas as camadas Um conceito fundamental no domínio da segurança de software é o de vulnerabilidade. de software necessárias instaladas em cima das VM. Uma vulnerabilidade é um defeito do sistema (de software ou outro) que pode ser explorado por atacante com objetivo No de violar a política de segurança. As vulnerabilidades Esta é aum visão partindo dooservidor. entanto, um fornecedor de computação em nuvem podem come base em três pode ser ter classificadas entre centenas centenas de categorias milhar de [229]: servidores. Esta escala cria grandes problemas de administração da infraestrutura. Toda a gestão de utilizadores, de imagens (VMVulnerabilidade pré-criadas, comdeo projeto SO instalado) e dos durante diversosa serviços (SGBD,doarmazenamento, – introduzida fase de projeto software (obDNS, etc.) tem de ser feita de forma Um automática. além de dasusar VM um dosmecanismo clientes, um tenção de requisitos e desenho). exemplo Assim, é a decisão fornecedor de nuvem temoumuitas VM a executarem os seus próprios serviços internos. de autenticação fraco não considerar que a comunicação pode ser observada na Além disso, tem software próprio para a administração desta infraestrutura. Dois dos mais rede; conhecidos são o OpenStack, criado inicialmente pela Rackspace mas agora aberto2 , e o Vulnerabilidade Heroku da Salesforce3de . codificação (ou de implementação) – introduzida durante a programação (ou codificação) do software, ou seja, um bug com implicações de seAlguns dos componentes não podem faltar num sistemadedeescrita computação em nuvem gurança. Um exemplo que é a falta de verificação de limites num buffer que são permite os que se descrevem a seguir. Qualquer nuvem deve ter um portal de administração um ataque de buffer overflow (Capítulo 5); que permite aos consumidores solicitarem as diversas operações deste tipo: criar/apagar Vulnerabilidade operacional – causadaVM, pelogerir ambiente no qualetc. o software é exeutilizadores, mudar permissões, criar/apagar pagamentos, Este portal é gecutado ou pela sua configuração. Um exemplo é a existência de contas sem senha ralmente uma aplicação web. Quando existem operações sobre VM – criar, apagar, hibernar (password) num sistema decom gestão de que bases de dados. –, este componente comunica outro, realiza essas operações e que designamos A 2 segurança de software diz respeito a estes três tipos de vulnerabilidades. No lihttps://www.openstack.org 3 https://www.heroku.com vro vão-nos interessar muito particularmente as de codificação, que nos parecem ser c ©  c– EDITORA 14380 380 FCA FCA – EDITORA DEDE INFORMÁTICA DE INFORMÁTICA FCA – EDITORA INFORMÁTICA

IPR


IPRP IPRP TSWLatexianTemp_000032.tex TSWLatexianTemp_000032.tex 4/8/2017 4/8/2017 1818 Page Page 9 9 IPRP TSWLatexianTemp_000032.tex 4/8/2017 16: 16: 1816: Page 381

INTRODUÇÃO INTRODUÇÃO VIRTUALIZAÇÃO E COMPUTAÇÃO EM NUVEM 17 por AGRADECIMENTOS controlador de VM, do qual geralmente existem várias instâncias em cada nuvem. Os AGRADECIMENTOS componentes de controlo de armazenamento fazem de intermediários no acesso aos a 1.a 1.Edição Edição sistemas de armazenamento, que guardam VM e dados dos consumidores. Por fim, os clientes que acedem às aplicações que correm na nuvem acedem-lhes através de um portal Este Este livro livro não não teria teria existido existido sem sem a contribuição, a contribuição, apoio apoio e encorajamento e encorajamento dede muitas muitas pessoas. pessoas. de acesso que tem funções de balanceamento de carga (dividir os pedidos por diversos Um Um primeiro primeiro agradecimento agradecimento vaivai para para o Prof. o Prof. Paulo Paulo Esteves Esteves Veríssimo, Veríssimo, porpor incontáveis incontáveis ra-raservidores), de firewall, etc. zões zões entre entre as as quais quais a de a de nos nos terter ensinado ensinado muito muito dodo que que sabemos sabemos sobre sobre investigação investigação científica científica e por e por terter acedido acedido a prefaciar a prefaciar este este livro, livro, o que o que muito muito nos nos honra. honra. A este A este juntamos juntamos umum forte forte agradecimento agradecimento a dois a dois colegas colegas com com quem quem temos temos tido tido o privilégio o privilégio dede trabalhar trabalhar aoao 17.2.3 CONTENTORES longo longo dos dos anos anos e que e que são são umum apoio apoio fundamental: fundamental: Prof. Prof. Nuno Nuno Ferreira Ferreira Neves Neves e Prof. e Prof. Alysson Alysson Neves Neves Bessani. Bessani. Como já vimos, os contentores são um mecanismo que permite isolar aplicações executadasUm num SO convencional, sem recurso um hipervisor, daí este tipo virtualização ser Um agradecimento agradecimento muito muito especial especial vaiavai para para osos nossos nossos colegas colegas e funcionários e de funcionários dodo DepartaDepartadesignado por virtualização a nível do SO. Dois dos sistemas mais conhecidos são o Linux mento mento dede Informática Informática dada Faculdade Faculdade dede Ciências Ciências dada Universidade Universidade dede Lisboa Lisboa e do e do LASIGE, LASIGE, Containers equais oquais Docker, sendo vamos explicar a concretização destes dois.ainda No entanto, com com osos temos temos tido tido oque prazer o prazer dede trabalhar. trabalhar. OO nosso nosso muito muito obrigado obrigado ainda a todos a todos osos existem outros: rkt e OpenVZ também para Linux, Jails para BSD, Zones para Solaris, etc. membros membros dada equipa equipa dede investigação investigação Navigators, Navigators, muito muito especialmente especialmente aos aos Prof. Prof. António António 4 Casimiro Casimiro Costa, Costa, Prof. Prof. José José Rufino, Rufino, Prof. Prof. Hans Hans P. Reiser, P. Reiser, Prof. Prof. Marcelo Marcelo Pasin, Prof. Prof. Mário Mário é um mecanismo de virtualização quePasin, permite isolar O sistema Linux Containers (LXC) a a Giuliana Giuliana Santos Santos Veronese, Veronese, Dr. Dr. João João Antunes, Antunes, Dr. Dr. Luís Luís MarCalha, Calha, Dr. Dr. Henrique Henrique Moniz, Moniz, Dr. Dr. conjuntos de processos em contentores. Este isolamento é fundamentalmente fornecido Mara a Mônica Mônica Dixit, Dr.Dr. Jeferson Jeferson Souza Souza e Dr. e Dr. Pedro Pedro Martins. Martins. Muito Muito ques, Dr.Dr. João João Craveiro, Craveiro, Dr.Dr. por ques, dois mecanismos do Linux: cgroups eDixit, namespaces. obrigado obrigado ainda ainda aos aos nossos nossos colegas colegas dada UFSC, UFSC, que que trabalham trabalham tãotão perto perto dede nós nós estando estando tãotão Os longe: cgroups (ouJoni control groups) são conjuntos de Lung. processos sobre osagradecimento quais se podem longe: Prof. Prof. Joni dada Silva Silva Fraga Fraga e Prof. e Prof. Lau Lau Cheuk Cheuk Lung. PorPor fim, fim, umum agradecimento a alguns a alguns realizar, pelo menos, quatro tipos de operações: limitar o seu consumo de recursos do professores professores especialmente especialmente marcantes marcantes nana nossa nossa carreira carreira dede investigadores investigadores e professores e professores computador (CPU, memória e I/O); definir a sua prioridade no acesso a esses recursos; universitários: universitários: Prof. Prof. Paulo Paulo Fonseca Fonseca Pinto, Pinto, Prof. Prof. Vítor Vítor Vargas Vargas e Prof. e Prof. Luís Luís Rodrigues. Rodrigues. contabilizar os recursos utilizados; e controlar a sua execução (congelar, extrair um checkEste livro livro foifoi escrito escrito a pensar a pensar nos nos nossos nossos alunos alunos futuros, mas deve deve muito muito aos aos nossos nossos point eEste reiniciar). Um contentor consiste, portanto, num futuros, grupo demas processos deste tipo. Em alunos alunos do do passado passado das das cadeiras cadeiras de de Segurança Segurança de de Software Software (FCUL), (FCUL), Sistemas Sistemas de de Software Software termos de segurança, o aspeto mais interessante é o de limitar o consumo de recursos, Seguros (FCUL) (FCUL) e Segurança e Segurança emem Software Software (IST). (IST). Para Para eles eles um um forte forte muito muito obrigado. obrigado. Alguns Alguns por Seguros exemplo, não deixando um grupo/contentor usar mais do que um CPU, mais memória alunos alunos dodo último último ano ano lectivo reviram muitos muitos capítulos capítulos dodo livro, livro, facto facto pelo qual qual estamos estamos do que o espaço definido, oulectivo fazerreviram operações de I/O a um ritmo superior aopelo definido (p.ex., muito muito agradecidos: agradecidos: Alberto Alberto Bruno, Bruno, Carlos Silva, Silva, Fábio Fábio Souto, Souto, Fernando Fernando André, André, Francisco Francisco escrever no disco ou enviar dados para Carlos a rede). Lameira, Lameira, Francisco Francisco Rocha, Rocha, Francisco Francisco Vieira, Vieira, Gustavo Gustavo Nascimento, Nascimento, Joaquim Joaquim Rosa, Rosa, Paulo Paulo Os Dias, namespaces são uma forma de isolar os nomes (ou identificadores) usados por um Dias, Paulo Paulo Moniz, Moniz, RuiRui Almeida, Almeida, Sérgio Sérgio Serrano Serrano e Tiago e Tiago Sousa. Sousa. Alguns Alguns colegas colegas e alunos e alunos dede determinado gruporeviram de processos, neste caso dentroProf. deProf. um contentor. PorProf. exemplo, cada doutoramento doutoramento reviram também também alguns alguns capítulos: capítulos: Marcelo Marcelo Pasin, Pasin, Prof. Alysson Alysson Neves Neves contentor tem um de processos; assim, quando a a namespace para os seus identificadores a a Giuliana Giuliana Santos Santos Veronese Veronese e Dr. e Dr. Ibéria Ibéria Medeiros. Medeiros. Bessani, Bessani, Dr.Dr. um processo é criado dentro de um contentor, é-lhe atribuído um identificar privado, usado OO nosso nosso trabalho trabalho de de investigação investigação tem tem sido sido suportado suportado porpor diversas diversas agências agências dede financiafinanciaapenas dentro desse contentor. O Linux suporta diversos tipos de namespaces além dos mento mento a quem a quem agradecemos: agradecemos: Comissão Comissão Europeia Europeia (projectos (projectos MAFTIA, MAFTIA, CRUTIAL, CRUTIAL, RESIST, RESIST, de processos. Os namespaces de User Id identificadores de utilizadores permitem ter UID CORTEX, CORTEX, HIDENETS, HIDENETS, ESFORS) ESFORS) e Fundação e Fundação para para a Ciência a Ciência e Tecnologia e Tecnologia (programas (programas multiprivados a um grupo. Os namespaces de rede virtualizam a rede, logo, cada grupo tem multianual anual e e CMU|Portugal, CMU|Portugal, projectos projectos DEFEATS, DEFEATS, COPE, COPE, RITAS, AJECT, AJECT, REGENESYS, REGENESYS, RED, RED, o seu próprio conjunto de interfaces de rede, endereços IPRITAS, , tabela de encaminhamento, DIVERSE, DIVERSE, FTH-Grid, FTH-Grid, TISD). TISD). OO nosso nosso agradecimento agradecimento porpor estes estes apoios. apoios. sockets, etc. Os namespaces UTS (Unix Timesharing System) permitem ter um hostname privado anosso umagradecimento grupo. Os namespaces de comunicação entre processos (IPC – Inter-Process OO nosso agradecimento ainda ainda às às pessoas pessoas dada FCA FCA – Editora – Editora dede Informática Informática que que foram foram umum Communication) permitem impedir que processos de um grupo comuniquem enorme enorme apoio apoio nana edição edição dodo livro, livro, muito muito especialmente especialmente à Sandra à Sandra Correia. Correia. com os de outros. Por fim, os namespaces de mount permitem criar organizações do sistema de PorPor fim, fim, mas mas mais mais importante, importante, o nosso o nosso agradecimento agradecimento às às nossas nossas famílias, que que sempre sempre ficheiros específicos a um grupo e definir alguns ramos do diretório comofamílias, apenas de leitura. nos nos apoiaram, apoiaram, que que estiveram estiveram sempre sempre presentes presentes aoao longo longo dada escrita escrita dodo livro livro e, e, como como não não poderia poderia deixar deixar dede ser, ser, a quem a quem este este é dedicado. é dedicado. 4

https://linuxcontainers.org/

381 9 9 381

cEDITORA c FCA c ©  – EDITORA – DE EDITORA DE INFORMÁTICA DE INFORMÁTICA FCA – FCA EDITORA INFORMÁTICA FCA – DE INFORMÁTICA


IPRP IPRP

TSWLatexianTemp_000032.tex TSWLatexianTemp_000032.tex

4/8/2017 4/8/2017

16:16: 1818

Page Page 14382

SEGURANÇA SEGURANÇA NO NO SOFTWARE SOFTWARE

A Ointegridade LXC suportadiz dois respeito tipos deà contentores: ausência deos alterações privilegiados nãoe autorizadas os não privilegiados. ao sistema Os primeiou à informação ros são problemáticos em causa. sob o ponto de vista da segurança. Nos segundos – não privilegiados – o processo com UID 0 corresponde a outro UID fora do contentor, logo, não tem priviléA disponibilidade é a prontidão do sistema para fornecer um serviço ou da informação gios de administrador no computador, só dentro do próprio contentor, e não pode realizar para ser acedida. operações arbitrárias no computador como um todo. A possibilidade de esse contentor, ou Frequentemente, de o processo com a estas UID 0três do é contentor, ainda adicionado executar oataques atributodeda negação autenticidade, de serviço oucontra seja, o dacomputador medida eméque prevenida a informação usando ooumecanismo o serviço fornecido de limitar osão consumo genuínos. de recursos Por vezes, fornecido este atributo pelos cgroups. é denominado autenticação, mas este termo aplica-se mais propriamente ao ato de verificar a autenticidade de alguém ou de algo. O sistema fornece a biblioteca liblxc para fazer a gestão de contentores programaticamente Naem definição programas dos atributos escritos usámos em C. Fornece duas vezes também o termo interfaces “não autorizada” para essa . A definição bibliotecado noutras que por exemplo, Lua e Go. é linguagens, ou não autorizado, ou, de Python, forma mais genérica, do conjunto de requisitos de segurança que têm de ser satisfeitos pelo sistema, constitui a sua política de segurança. A política O Docker é o sistema de contentores mais adotado atualmente, sem concorrência próé geralmente definida pela organização onde se insere o sistema e pode ser apresentada xima. O Docker é baseado nos cgroups e namespaces do Linux, do mesmo modo que o sob a forma de um documento escrito. Por exemplo, uma política militar pode definir que LXC. No entanto, ao contrário deste, cada contentor pode executar apenas um processo. um documento classificado como “confidencial” só pode ser lido por pessoas com o nível Se uma aplicação precisa de ter vários processos, cada um deles tem de correr no seu de autorização (clearance) correspondente. próprio contentor. Por exemplo, uma aplicação web escrita em PHP pode precisar de três contentores: paraà osegurança interpretador PHP , outro para oSob servidor web Nginx) e mais Um tema vastoum ligado é o da privacidade. o ponto de(p.ex., vista o dos sistemas um paraaoprivacidade SGBD (p.ex., MySQL). técnicos, é aoconfidencialidade de dados pessoais (nome, morada, números de identificação, números de telefone, dados de cartões de crédito, etc.). O sucesso do Docker não vem propriamente de ser um sistema de contentores, mas da facilidade de criar e distribuir os sistemas de ficheiros necessários para executar aplicações serviços nesses mesmos contentores. Um contentor Docker é criado a partir de uma 1.1eimagem. VULNERABILIDADES Uma imagem Docker é um arquivo tar que contém os ficheiros necessários para criar o sistema de ficheiros contentor. Uma imagem criada executando um Dockerfile, Um conceito fundamental nododomínio da segurança de ésoftware é o de vulnerabilidade. que indica qual é a imagem de base sobre a qual ela deve ser construída e comandos Uma vulnerabilidade é um defeito do sistema (de software ou outro) que pode ser explo- a executar sobre essa imagem de base (p.ex., comando apt-get para instalar software). rado por um atacante com o objetivo de violar a política de segurança. As vulnerabilidades podem ser classificadas com base em três categorias [229]: Vulnerabilidade de projeto – introduzida durante a fase de projeto do software (ob17.3 APLICAÇÕES EM SEGURANÇA

tenção de requisitos e desenho). Um exemplo é a decisão de usar um mecanismo No de início da Secção fraco 17.2 foram três objetivos do projeto de ser umobservada hipervisor.na Em autenticação ou nãoreferidos considerar que a comunicação pode relação rede;à segurança, um hipervisor, ou um sistema de contentores, tem de oferecer, pelo menos, os dois primeiros dos três atributos exigidos para um monitor de referência Vulnerabilidade de codificação (ou de implementação) – introduzida durante a (cf. Secção 3.2): programação (ou codificação) do software, ou seja, um bug com implicações de segurança. Um exemplo é ser a falta de verificação de limites de escrita num que Completude – tem de impossível de contornar, ou seja, uma VM (oubuffer um contenpermite um ataque de buffer overflowdo(Capítulo tor) não pode aceder aos recursos sistema5); ou a outra VM (ou a outro contentor) sem passar pelo hipervisor; Vulnerabilidade operacional – causada pelo ambiente no qual o software é executado ou pela–sua Um exemplo é a existência de contas sem senha Isolamento temconfiguração. de ser incorruptível, ou tamperproof. (password) num sistema de gestão de bases de dados. Nesta secção vamos estudar mecanismos de segurança que se baseiam em hipervisor que de de facto, estes dois completude isolamento. AlémNodisso, A tenham, segurança software diz primeiros respeito aatributos: estes três tipos de evulnerabilidades. lialguns mecanismos ainda de um terceiro vro vão-nos interessarprecisam muito particularmente as deatributo: codificação, que nos parecem ser c ©  c– FCA 14382 382 FCA EDITORA – EDITORA DEDE INFORMÁTICA DE INFORMÁTICA FCA – EDITORA INFORMÁTICA

IPR


IPRP IPRP TSWLatexianTemp_000032.tex TSWLatexianTemp_000032.tex 4/8/2017 4/8/2017 1818 Page Page 9 9 IPRP TSWLatexianTemp_000032.tex 4/8/2017 16: 16: 1816: Page 383

INTRODUÇÃO INTRODUÇÃO VIRTUALIZAÇÃO E COMPUTAÇÃO EM NUVEM 17 Transparência – o software executado numa VM (ou num contentor) não pode ser AGRADECIMENTOS AGRADECIMENTOS

capaz de detetar que se encontra num ambiente virtualizado e não sobre um SO a 1.a diretamente 1.Edição Edição sobre hardware, como é convencional. Este Este livro livro não não teria teria existido existido sem sem a contribuição, a contribuição, apoio apoio e encorajamento e encorajamento dede muitas muitas pessoas. pessoas.

17.3.1 INTROSPEÇÃO Um Um primeiro primeiro agradecimento agradecimento vaivai para para o Prof. o Prof. Paulo Paulo Esteves Esteves Veríssimo, Veríssimo, porpor incontáveis incontáveis ra-razões zões entre entre as as quais quais a de a de nos nos terter ensinado ensinado muito muito dodo que que sabemos sabemos sobre sobre investigação investigação Muitos dos mecanismos de segurança que vamos apresentar são baseados conceito científica científica e por e por terter acedido acedido a prefaciar a prefaciar este este livro, livro, o que o que muito muito nos nos honra. honra. Ano este A este juntamos juntamos de introspeção ou virtual machine introspection (VMI) [110]. Uma técnica de introspeção umum forte forte agradecimento agradecimento a dois a dois colegas colegas com com quem quem temos temos tido tido o privilégio o privilégio dede trabalhar trabalhar aoao permite observar eventos que acontecem numa VM,Prof. por exemplo, ataques. Nesta secção longo longo dos dos anos anos e que e que são são um um apoio apoio fundamental: fundamental: Prof. Nuno Nuno Ferreira Ferreira Neves Neves e Prof. e Prof. Alysson Alysson vamos considerar o caso mais comum da introspeção de uma VM a partir do hipervisor, Neves Neves Bessani. Bessani. embora a VMI não seja específica a este tipo de virtualização. Um Um agradecimento agradecimento muito muito especial especial vaivai para para osos nossos nossos colegas colegas e funcionários e funcionários dodo DepartaDepartaLittymento emento colegas referem que asFaculdade técnicas de introspeção podem ser em dede Informática Informática dada Faculdade dede Ciências Ciências dada Universidade Universidade decaracterizadas de Lisboa Lisboa e do e do LASIGE, LASIGE, termos de parâmetros qualitativos, quais nós acrescentamos um quarto [162]: com com ostrês os quais quais temos temos tido tido o prazer o prazer deaos de trabalhar. trabalhar. OO nosso nosso muito muito obrigado obrigado ainda ainda a todos a todos osos membros membros dada equipa equipa dede investigação investigação Navigators, Navigators, muito muito especialmente especialmente aos aos Prof. Prof. António António Poder –Costa, amplitude dos domínios de eventos que técnica deMarcelo introspeção consegue Casimiro Casimiro Costa, Prof. Prof. José José Rufino, Rufino, Prof. Prof. Hans Hans P. Reiser, P. aReiser, Prof. Prof. Marcelo Pasin, Pasin, Prof. Prof. Mário Mário capturar e Henrique dos eventos aos a a se consegue interpor, ou seja, bloquear; Giuliana Giuliana Santos Santos Veronese, Veronese, Dr.Dr. João João Antunes, Antunes, Dr.Dr. Luís Luís MarMarCalha, Calha, Dr.Dr. Henrique Moniz, Moniz, Dr.quais Dr. a a Intrusividade –Craveiro, grau de com aDr. VM; Mônica Mônica Dixit, Dixit, Dr. Jeferson Jeferson Souza Souza e Dr. e Dr. Pedro Pedro Martins. Martins. Muito Muito ques, ques, Dr.Dr. João João Craveiro, Dr.interferência Dr. obrigado obrigado ainda ainda aos nossos nossos colegas colegas da UFSC, UFSC, que que trabalham trabalham tãotão perto de de nós nós estando estando tãotão Robustez – aos compatibilidade comdadiversas versões de SO eperto suas configurações, longe: longe: Prof. Prof. Joni Joni da da Silva Silva Fraga Fraga e Prof. e Prof. Lau Lau Cheuk Cheuk Lung. Lung. Por Por fim, fim, um um agradecimento agradecimento a alguns a alguns de modo a suportar mudanças que ocorram, por exemplo, fruto de remendos, professores professores especialmente marcantes nana nossa nossa carreira carreira dede investigadores investigadores e professores e professores introdução deespecialmente módulos oumarcantes ataques; universitários: universitários: Prof. Prof. Paulo Paulo Fonseca Fonseca Pinto, Pinto, Prof. Prof. Vítor Vítor Vargas Vargas e Prof. e Prof. Luís Luís Rodrigues. Rodrigues. Isolamento – grau de separação e da consequente proteção em relação à VM Este Este livro livro foifoi escrito escrito a pensar a pensar nos nos nossos nossos alunos alunos futuros, futuros, mas mas deve deve muito muito aos aos nossos nossos supervisionada. alunos alunos dodo passado passado das das cadeiras cadeiras dede Segurança Segurança dede Software Software (FCUL), (FCUL), Sistemas Sistemas dede Software Software Os Seguros mesmos autores quatro técnicas de introspeção: Seguros (FCUL) (FCUL) e referem Segurança e Segurança emem Software Software (IST). (IST). Para Para eles eles umum forte forte muito muito obrigado. obrigado. Alguns Alguns alunos alunos dodo último último ano ano lectivo lectivo reviram reviram muitos muitos capítulos capítulos dodo livro, livro, facto facto pelo pelo qual qual estamos estamos Agente na VM – o software de monitorização é executado na própria VM monitorimuito muito agradecidos: agradecidos: Alberto Alberto Bruno, Bruno, Carlos Carlos Silva, Silva, Fábio Fábio Souto, Souto, Fernando Fernando André, André, Francisco Francisco zada, como um módulo no núcleo do SO ou como um processo de nível utilizador. Lameira, Lameira, Francisco Francisco Rocha, Rocha, Francisco Francisco Vieira, Vieira, Gustavo Gustavo Nascimento, Nascimento, Joaquim Joaquim Rosa, Rosa, Paulo Paulo O poder e a robustez dependem da forma como os eventos são capturados, mas Dias, Dias, Paulo Paulo Moniz, Moniz, RuiRui Almeida, Almeida, Sérgio Sérgio Serrano Serrano e Tiago e Tiago Sousa. Sousa. Alguns Alguns colegas colegas e alunos e alunos dede normalmente ambos os parâmetros são bons, pois o agente está muito próximo dadoutoramento doutoramento reviram reviram também também alguns alguns capítulos: capítulos: Prof. Prof. Marcelo Marcelo Pasin, Pasin, Prof. Prof. Alysson Alysson Neves Neves quilo que aé supervisionado. Pelo contrário,a éa muito intrusiva, no sentido em que é a Giuliana Santos Santos Veronese Veronese e Dr. e Dr.Ibéria Ibéria Medeiros. Medeiros. Bessani, Bessani, Dr.Dr.Giuliana preciso colocar algo na própria VM. O isolamento é o pior de todos, porque tem de O ser O nosso nosso trabalho trabalho dede investigação investigação tem sido sido suportado suportado diversas diversas agências agências dede financiafinanciagarantido pelo SO, dado que tem o agente está na VM;porpor mento mento a quem a quem agradecemos: agradecemos: Comissão Comissão Europeia Europeia (projectos (projectos MAFTIA, MAFTIA, CRUTIAL, CRUTIAL, RESIST, RESIST, Pontos de quebra e inspeção – esta técnica e as seguintes fazem monitorização a CORTEX, CORTEX, HIDENETS, HIDENETS, ESFORS) ESFORS) e Fundação e Fundação para para a Ciência a Ciência e Tecnologia e Tecnologia (programas (programas multimultipartir de fora da VM monitorizada. A técnica é menos intrusiva dado a monitorização anual anual e e CMU|Portugal, CMU|Portugal, projectos projectos DEFEATS, DEFEATS, COPE, COPE, RITAS, RITAS, AJECT, AJECT, REGENESYS, REGENESYS, RED, RED, ser feita no hipervisor ou noutra VM com a ajuda do hipervisor. O isolamento é bom DIVERSE, DIVERSE, FTH-Grid, FTH-Grid, TISD). TISD). OO nosso nosso agradecimento agradecimento porpor estes estes apoios. apoios. pela mesma razão. A robustez, pelo contrário, é má, pois para capturar eventos espeé preciso acrescentar pontos de quebra (breakpoints) código da que VM, como O cíficos O nosso nosso agradecimento agradecimento ainda ainda às às pessoas pessoas dada FCA FCA – Editora – Editora deno de Informática Informática que foram foram umum os queapoio se usam em depuradores (Secção 11.1.1), o que muito específico enorme enorme apoio nana edição edição dodo livro, livro, muito muito especialmente especialmente à Sandra àéSandra Correia. Correia. para cada VM, SO, etc. O poder é o melhor de todos pela mesma razão: capacidade de ir ao PorPor fim, fim, mas mas mais mais importante, importante, o nosso o nosso agradecimento agradecimento às às nossas nossas famílias, famílias, que que sempre sempre detalhe através da colocação de pontos de quebra nos lugares desejados; nos nos apoiaram, apoiaram, que que estiveram estiveram sempre sempre presentes presentes aoao longo longo dada escrita escrita dodo livro livro e, e, como como não não Checkpoint e de rollback – esta forma de introspeção tem muito em comum com poderia poderia deixar deixar de ser, ser, a quem a quem este este é dedicado. é dedicado. a anterior, mas permite simplificar a tarefa de recolher informação em cada quebra. 383 9 9 383

c– FCA c FCA c FCA – DE EDITORA –INFORMÁTICA EDITORA DE INFORMÁTICA DE INFORMÁTICA ©  FCA EDITORA DE INFORMÁTICA – EDITORA


IPRP IPRP

TSWLatexianTemp_000032.tex TSWLatexianTemp_000032.tex

4/8/2017 4/8/2017

16:16: 1818

Page Page 14384

IPR

SEGURANÇA SEGURANÇA NO NO SOFTWARE SOFTWARE

A integridade A ideia consiste diz respeito em utilizar à ausência os mecanismos de alterações de checkpoint não autorizadas (armazenamento ao sistema do estado ou à informação da VM) em ecausa. rollback (retorno a um estado anterior obtido através de um checkpoint) suportado por alguns hipervisores [94]. O software de monitorização faz um checkpoint A disponibilidade é a prontidão do sistema para fornecer um serviço ou da informação da VM, introduz-lhe código para analisar o estado e quando termina faz rollback para o para ser acedida. estado anterior. As suas características são semelhantes às da técnica anterior, mas Frequentemente, esta é maisa robusta, estas três dado é ainda não ser adicionado preciso recolher o atributo informação da autenticidade, muito específica ou seja, em da medida cadaem quebra, que ajáinformação que essa informação ou o serviço podefornecido ser recolhida são genuínos. quando sePor faz o vezes, rollback; este atributo é denominado autenticação, mas este termo aplica-se mais propriamente ao ato Arquitetural – nesta é feita no hipervisor e baseia-se em de verificar a autenticidade detécnica, alguém aoumonitorização de algo. observar apenas os eventos que chegam a este componente. O hipervisor é moNa definição dosde atributos duas vezes o termo “não autorizada” . A definição do que dificado modo ausámos que, quando for invocado devido à execução de uma instrução é ou não autorizado,oou, de forma mais genérica, conjunto[140]. de requisitos de segurança privilegiada, evento correspondente sejado registado Este modo de introspeque têmção deéser satisfeitos pelo sistema, constitui a sua política de segurança. políticada o menos intrusivo, pois são observados apenas os eventos ocorridosA dentro é geralmente definida pela organização onde se insere o sistema e pode ser apresentada VM que chegam ao hipervisor. Pela mesma razão, é o mais robusto e o isolamento sob a forma de um documento escrito. Por exemplo, uma política definiré que também é bom pois a supervisão é feita no hipervisor. Em militar termospode de poder, a pior um documento “confidencial” pode ser por pessoas com o nível técnica, classificado visto que sócomo permite observar os só eventos quelido chegam ao hipervisor. de autorização (clearance) correspondente. Natema Tabela 17.1ligado está um resumo das destas Um vasto à segurança é ocaracterísticas da privacidade. Sob oquatro pontotécnicas de vistade dosintrospeção. sistemas técnicos, a privacidade é a confidencialidade de dados pessoais (nome, morada, números de identificação, números de telefone, dados de cartões de crédito, etc.). TABELA 17.1 – CARACTERIZAÇÃO DAS DIVERSAS TÉCNICAS DE INTROSPEÇÃO [162] Poder 1.1Técnica VULNERABILIDADES Agente na VM

Bom

Intrusividade

Robustez

Isolamento

Boa

Pior

UmPontos conceito fundamental da segurança é o de vulnerabilidade. de quebra e inspeção no domínio Melhor Boa de software Pior Bom Uma vulnerabilidade é um defeito do sistema (de software ou outro) que pode ser exploCheckpoint e rollback Melhor Boa Boa Bom rado por um atacante com o objetivo de violar a política de segurança. As vulnerabilidades Arquitetural Piortrês categorias Boa [229]: Melhor Bom podem ser classificadas com base em Em Vulnerabilidade qualquer das técnicas, a informação obtida é geralmente de muito nível, por de projeto – introduzida durante a fase de projeto do baixo software (obexemplo, chamada ao sistema efetuada e os seusé parâmetros. existe um fosso tençãoa de requisitos e desenho). Um exemplo a decisão deAssim, usar um mecanismo semântico entre estes eventos baixo nívelque e osa eventos que são relevantes sob o ponto de autenticação fraco ou nãodeconsiderar comunicação pode ser observada na de vista do utilizador do honeypot. Este fosso pode ser reduzido reforçando o monitor com rede; capacidade para procurar informação adicional, que dê contexto aos eventos de baixo nível Vulnerabilidade de codificação (ou de implementação) – introduzida durante a [140]. programação (ou codificação) do software, ou seja, um bug com implicações de se5 é, Um provavelmente, forma comumde de limites implementar a introspeção hoje em A LibVMI gurança. exemplo é aa falta demais verificação de escrita num buffer que dia. permite A LibVMI é uma biblioteca escrita em C mas com suporte para Python. Permite a um um ataque de buffer overflow (Capítulo 5); hipervisor observar o que se passa dentro de uma VM. Em concreto, permite inspecionar Vulnerabilidade operacional – causada pelo ambiente no qual o software é exea sua memória, intercetar as interrupções de hardware e software geradas dentro da VM e cutado ou pela sua configuração. Um exemplo é a existência de contas sem senha aceder a registos do seu CPU virtual. Os dados obtidos pela LibVMI podem, por exemplo, numVolatility sistemaFramework de gestão de bases 11.1.1). de dados. ser (password) analisados pela (Secção A segurança de software diz respeito a estes três tipos de vulnerabilidades. No li5 http://libvmi.com vro vão-nos interessar muito particularmente as de codificação, que nos parecem ser c ©  c– EDITORA 14384 384 FCA FCA – EDITORA DEDE INFORMÁTICA DE INFORMÁTICA FCA – EDITORA INFORMÁTICA


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.