Diretoria de Segurança Corporativa Superintendência de Segurança da Informação Baseline de Segurança da Informação Avaliação de Fornecedor Fábrica de Software Baseline de Análise de Risco em Fornecedores SUMÁRIO: 1. SEGURANÇA DA REDE:.......................................................................................................................................... 5 2. PATCHES DE SEGURANÇA: .................................................................................................................................... 5 3. HARDENING: ........................................................................................................................................................ 5 4. SCANNING: ........................................................................................................................................................... 6 5. PEN TEST: ......................................................................................................................................................... 6 6. PROCEDIMENTOS PARA TRATAMENTO DE INFORMAÇÃO: ................................................................. 6 7. REGISTRO DE USUÁRIO: ............................................................................................................................... 7 8. RETIRADA DE DIREITOS DE ACESSO:........................................................................................................ 7 9. SEGREGAÇÃO DE FUNÇÕES: ...................................................................................................................... 7 10. GERENCIAMENTO DE SENHA DO USUÁRIO: ............................................................................................ 8 11. PROCEDIMENTOS SEGUROS DE ENTRADA NOS SISTEMAS: ............................................................... 8 12. NAVEGAÇÃO INTERNET: ............................................................................................................................... 9 13. MENSAGENS ELETRÔNICAS: ....................................................................................................................... 9 14. POLÍTICA DE ESTAÇÃO DE TRABALHO:.................................................................................................... 9 15. SENHA DE BIOS / ACESSO VIA USB: .........................................................................................................10 16. FERRAMENTA DE CAPTURA REMOTA: .....................................................................................................10 17. AUTENTICAÇÃO PARA CONEXÃO EXTERNA DO USUÁRIO: ................................................................10 18. REGISTROS E PROTEÇÃO DE TRILHAS DE AUDITORIA: ......................................................................10 19. CRIPTOGRAFIA DE DISCO:...........................................................................................................................11 20. SISTEMA OPERACIONAL ATUALIZADO COM VERSÕES SUPORTADAS PELO FABRICANTE: .....11 21. SINCRONIZAÇÃO DOS RELÓGIOS: ............................................................................................................11 22. CONTROLES CONTRA CÓDIGOS MALICIOSOS: ......................................................................................11 23. GESTÃO DE MUDANÇAS: .............................................................................................................................12 24. SEPARAÇÃO DOS RECURSOS DE DESENVOLVIMENTO, TESTE E DE PRODUÇÃO: ......................12 25. CÓPIAS DE SEGURANÇA DAS INFORMAÇÕES: ......................................................................................12 26. POLÍTICA DE SEGURANÇA DA INFORMAÇÃO: ........................................................................................12 27. POLÍTICA DE MESA LIMPA: ..........................................................................................................................13 28. POLÍTICA DE TELA LIMPA: ...........................................................................................................................13 29. COORDENAÇÃO DA SEGURANÇA DA INFORMAÇÃO:...........................................................................13 30. RESPONSABILIDADES E PROCEDIMENTOS (INCIDENTES DE SEGURANÇA DA INFORMAÇÃO): 13 31. RECOMENDAÇÕES PARA CLASSIFICAÇÃO: ...........................................................................................14 32. ACORDOS DE CONFIDENCIALIDADE: ........................................................................................................14 33. CONSCIENTIZAÇÃO, EDUCAÇÃO E TREINAMENTO EM SEGURANÇA DA INFORMAÇÃO: ............15 34. INVENTÁRIO DOS ATIVOS: ...........................................................................................................................15 35. REMOÇÃO DE PROPRIEDADE: ....................................................................................................................15 36. CONTROLES DE ENTRADA FÍSICA: ............................................................................................................15 09/04/15 Pág: 2 Baseline de Análise de Risco em Fornecedores 37. CONTINUIDADE DE NEGÓCIOS: ..................................................................................................................16 38. INSPEÇÕES PERIÓDICAS DE VERIFICAÇÃO DE COMPLIANCE AOS REQUISITOS DE SEGURANÇA: ..........................................................................................................................................................16 ANEXO A – SEGURANÇA PARA DESENVOLVIMENTO DE APLICAÇÕES ...................................................17 1. INTRODUÇÃO ..................................................................................................................................................17 2. DESENVOLVIMENTO SEGURO - MELHORES PRÁTICAS GERAIS ........................................................17 3. REVISÃO SEGURA DE CÓDIGO – PRÁTICAS GERAIS ............................................................................19 4. DESENVOLVIMENTO SEGURO - MELHORES PRÁTICAS ESPECÍFICAS .............................................20 4.1. PROTEÇAO PARA WEBSERVICES ..............................................................................................................20 4.2. PROTEÇÃO PARA APLICATIVOS MÓVEIS ................................................................................................21 4.3. PROTEÇAO PARA BANCO DE DADOS .......................................................................................................23 4.4. GERENCIAMENTO E EXECUÇÃO MALICIOSA DE ARQUIVOS ..............................................................24 4.4.1. EXEMPLOS: ...............................................................................................................................................24 4.4.2. REFERENCIAS:.........................................................................................................................................25 4.5. FALHAS DE INJEÇÃO ....................................................................................................................................25 4.5.1. PROTEÇÃO – SQL INJECTION ..............................................................................................................26 4.5.2. PROTEÇÃO – OS COMMAND INJECTION ...........................................................................................26 4.5.3. PROTEÇÃO – PATH TRAVERSAL/DISCLOSURE ...............................................................................26 4.5.4. EXEMPLOS ................................................................................................................................................27 4.5.5. REFERÊNCIAS ..........................................................................................................................................27 4.5.6. REVISÂO DE CÒDIGO .............................................................................................................................27 4.6. FALHA DE AUTENTICAÇÃO E GERENCIAMENTO DE SESSÃO ............................................................27 4.6.1. PROTEÇÃO - REPLAY DE SESSÃO ......................................................................................................29 4.6.2. PROTEÇÃO – HIJACKING DE SESSÃO ...............................................................................................29 4.6.3. EXEMPLOS ................................................................................................................................................29 4.6.4. REFERÊNCIAS ..........................................................................................................................................29 4.6.5. REVISÃO DE CÓDIGO .............................................................................................................................30 4.7. PROTEÇÃO CONTRA CROSS-SITE SCRIPTING (XSS) ............................................................................30 4.7.1. EXEMPLOS ................................................................................................................................................31 4.7.2. REFERÊNCIAS ..........................................................................................................................................31 4.7.3. REVISÃO DE CÓDIGO ....................................................................................................................................31 4.8. REFERÊNCIA DIRETA INSEGURA A OBJETOS .......................................................................................31 4.8.1. EXEMPLOS ................................................................................................................................................32 4.8.2. REFERÊNCIAS ..........................................................................................................................................32 4.9. INFRAESTRUTURA E AMBIENTE .................................................................................................................32 4.9.1. LOGS PARA AUDITORIA ........................................................................................................................34 4.10. ARMAZENAMENTO CRIPTOGRÁFICO INSEGURO ...........................................................................34 4.10.1. 09/04/15 EXEMPLOS ............................................................................................................................................35 Pág: 3 Baseline de Análise de Risco em Fornecedores 4.10.2. 4.11. REFERÊNCIAS ......................................................................................................................................36 FALHAS AO RESTRINGIR ACESSO A URLS ......................................................................................36 4.11.1. EXEMPLOS ............................................................................................................................................37 4.11.2. REFERÊNCIAS ......................................................................................................................................37 4.12. COMO EVITAR CROSS-SITE REQUEST FORGERY (CSRF) .............................................................37 4.12.1. EXEMPLOS ............................................................................................................................................38 4.12.2. REFERÊNCIAS ......................................................................................................................................38 4.12.3. REVISÃO DE CÓDIGO ................................................................................................................................38 4.13. REDIRECIONAMENTOS E ENCAMINHAMENTOS INVÁLIDOS.........................................................38 4.13.1. EXEMPLOS ............................................................................................................................................39 4.13.2. REFERÊNCIAS ......................................................................................................................................39 4.14. EVITANDO O BUFFER OVERFLOWS/OVERRUNS .............................................................................39 4.14.1. REFERENCIA ........................................................................................................................................39 4.14.2. REVISÃO DE CÓDIGO .........................................................................................................................40 4.15. TRATAMENTO DE DADOS CONTRA INTEGER AND ARITHMETIC OVERFLOWS .......................40 4.15.1. EXEMPLOS ............................................................................................................................................40 4.15.2. REFERÊNCIAS ......................................................................................................................................40 4.16. FORMAT SPRING NÃO CONTROLADA ................................................................................................41 4.16.1. EXEMPLOS ............................................................................................................................................41 4.16.2. REFERÊNCIAS ......................................................................................................................................41 4.17. CONDIÇÕES DE CONCORRÊNCIA .......................................................................................................41 4.17.1. REFERÊNCIAS ......................................................................................................................................42 4.17.2. REVISÃO DE CÓDIGO .........................................................................................................................42 4.18. COMUNICAÇÕES INSEGURAS ..............................................................................................................42 4.18.1. EXEMPLOS ............................................................................................................................................43 4.18.2. REFERÊNCIAS ......................................................................................................................................43 09/04/15 Pág: 4 Baseline de Análise de Risco em Fornecedores Os controles de segurança a seguir devem ser implantados: 1. Segurança da rede: Manter atualizado o diagrama da rede, mostrando os componentes de rede que garantam a proteção das informações do Itaú Unibanco necessários à operacionalização do serviço (incluir nessa representação roteadores, switches, firewalls dedicados e eventuais topologias de rede sem fio existentes). Os pré-requisitos mínimos de rede devem estar aplicados, conforme abaixo: conexão dedicada com o Itaú Unibanco, ficando o modelo triangulado (derivação da rede para outros sites) como não recomendado; firewall com controle de sessão, respeitando um tempo de vida de sessão de 1 hora; controle de acesso aos pontos de rede via 802.1X, para validação de certificados de máquina e de usuário através de servidor Radius, que tratará as requisições informando aos switches se devem direcionar o acesso para a rede corporativa (no caso de certificados validados) ou para a rede de visitantes (no caso de certificados inválidos ou inexistentes); sistemas de detecção de invasão e/ou sistemas de prevenção contra invasão para monitorar/bloquear todo o tráfego malicioso; formalização, justificativa, aprovação e teste de todas as regras configuradas do firewall, roteador e switch, não podendo haver regras com origem, destino ou porta “any” (qualquer protocolo ou endereço IP); se houver rede WI-FI, deverá ser implementada segurança via WPA2 com autenticação através do protocolo 802.1X; não deverá existir “Trust” (confiança entre domínios) entre servidores Windows da operação Itaú Unibanco com qualquer outro servidor. 2. Patches de Segurança: Um procedimento de identificação e atualização de Patches de Segurança deve ser posto em prática para que os patches sejam instalados em até 30 dias da divulgação pelo fabricante e obedecidos os critérios de homologação. 3. Hardening: Aplicar procedimento de blindagem dos equipamentos (hardening) para prover proteção a esses recursos. Vide documentos a seguir, que deverão ser solicitados para a Área de Segurança da Informação do Itaú, assim que o serviço for contratado: Itau_Hardening_PTB - Network Devices – Router; Itau_Hardening_PTB - Network Devices – Switch; 09/04/15 Pág: 5 Baseline de Análise de Risco em Fornecedores Itau_Hardening_PTB - Windows IIS; Itau_Hardening_PTB - Windows Servidor; Itau_Hardening_PTB - Windows Workstation. Obs.: Estes documentos devem ter acesso restrito às equipes envolvidas 4. Scanning: Um procedimento de varredura de vulnerabilidades em equipamentos de rede (scanning) deve ser executado ao menos 01 vez ao mês e/ou após modificações significativas no ambiente. 5. Pen Test: Realizar PenTest (teste de invasão) no perímetro interno e externo para identificação de vulnerabilidades pelo menos uma vez ao ano ou após modificações significativas no ambiente. 6. Procedimentos para tratamento de informação: Em caso de empresa com acesso ao ambiente do Itaú: Deverá ser feito exclusivamente ao ambiente de desenvolvimento com o VDI. Em caso de empresa que irá receber Código Fonte: para a transmissão/recepção das documentações e códigos fonte deve ser utilizada solução homologada pela área de tecnologia, com garantia de autenticidade, criptografia e regras de Firewall específicas autorizadas e liberadas através de rede DMZ; O processo de inserção do código fonte enviado pela fábrica no ambiente de desenvolvimento deverá seguir o fluxo atualmente previsto na metodologia de desenvolvimento de sistemas; Não encaminhar informações do Itaú Unibanco para empresas terceiras sem a prévia avaliação e consentimento da área de Segurança da Informação do Itaú. deve existir um procedimento de gestão de acessos (fluxo com alçadas de aprovação para cadastro e revogação e revisão de acessos de usuários); criar mecanismos de trilha de auditoria em todo o ciclo de vida da informação (recepção, processamento e saídas). O Datacenter da empresa deverá estar no Brasil, em função da diversidade de legislações em outros países, dificuldades de investigação e atuação no caso de problema. A área de Segurança da Informação do Itaú deverá ser informada quando houver a intenção de terceirização do Datacenter (Colocation e Hosting) para emitir uma avaliação de Risco. 09/04/15 Pág: 6 Baseline de Análise de Risco em Fornecedores 7. Registro de usuário: Estabelecer procedimentos que orientem a concessão e revogação de contas de acesso, tornando obrigatório: identificação de usuário (ID) único, pessoal e exclusivo para assegurar a responsabilidade de cada usuário por suas ações; disponibilização de acessos levando em consideração o mínimo privilégio (necessidade para o negócio ou por razões operacionais); formalizar os direitos de acesso fornecidos aos usuários; liberar acesso aos usuários somente após conclusão dos procedimentos de autorização; não permitir a utilização de usuário genérico no ambiente de produção; manter um registro formal de todas as pessoas com direito de acesso concedido; assegurar a remoção imediata, ou bloqueio dos direitos de acesso, de usuários que mudaram de cargos, funções ou deixaram a empresa. 8. Retirada de direitos de acesso: Um fluxo de ‘exclusão/bloqueio’ imediato de acessos físicos e lógicos, de forma que reflita as ações do RH, deve estar aplicado para: suspender funcionários em ausência legal (ex. férias, licenças, etc.) por todo o período que estiverem fora da empresa; ter procedimento para casos de necessidade de exclusão imediata de acessos físicos e lógicos; ter processo de revisão mensal em todas as plataformas de acessos (redes e sistemas), inclusive de clientes. 9. Segregação de funções: Um critério de segregação de funções baseado em ‘cargos/funções/atividades/cliente/ operação’, deve estar estabelecido, de forma que o funcionário tenha somente acesso ao indispensável para a execução da atividade para a qual foi contratado. Além disso: 09/04/15 estágios críticos de processo, desempenhadas, por exemplo, pelo administrador do sistema, security officer ou auditor fiquem a cargo de dois ou mais funcionários; categorias e perfis de usuários aos quais privilégios especiais de acesso precisam ser concedidos devem estar identificados e registrados (ex: no AD, RACF ou outro sistema de controle). Pág: 7 Baseline de Análise de Risco em Fornecedores 10. Gerenciamento de senha do usuário: Uma política de senhas ‘forte’ deve ser criada de acordo com a tabela a seguir: Políticas Parâmetro Histórico de senhas Manter as últimas 24 senhas Duração máxima da senha 30 dias Duração mínima da senha 1 dia Tamanho mínimo da senha mínimo de 8 caracteres para usuários comuns mínimo de 15 caracteres para usuários administradores Duração do bloqueio Manual – Requer intervenção da área de suporte Exclusão de conta por inatividade de uso Remover as contas dos usuários inativos há 60 dias. Exceção: usuário de conta de sistema ou especiais Números de tentativas inválidas de logon 3 Complexidade As senhas devem ser compostas por no mínimo três das regras abaixo: Caracteres maiúsculos (A, B, C...). Caracteres minúsculos (a, b, c...) Numerais (0, 1, 2, 3, 4, 5, 6, 7, 8, 9) Caracteres especiais (@ # &) Adicionalmente, devem ser criados procedimentos para: verificar a identidade do usuário antes de fornecer uma senha temporária, de substituição ou nova; nunca armazenar as senhas nos sistemas de um computador de forma desprotegida; aplicar a criptografia no mínimo Kerberos para cache de senhas; orientar usuários a manter a confidencialidade das senhas e evitar manter anotadas as senhas, a menos que elas possam ser armazenadas de forma segura; controlar o uso de senhas de usuários com perfil de administração (ex: root, sa, administrator, etc), que deverão ser digitadas por pelo menos duas pessoas, envelopadas e mantidas em local com controle de acesso físico. 11. Procedimentos seguros de entrada nos sistemas: Um aviso geral informando que somente pessoas autorizadas devem obter acesso ao computador deve ser exibido no início do processo de login. Mensagens de ajuda durante o procedimento de entrada nos sistemas não devem ser exibidas, para que não auxiliem um eventual usuário não autorizado na tentativa de acesso. 09/04/15 Pág: 8 Baseline de Análise de Risco em Fornecedores 12. Navegação internet: Para estações de trabalho dedicadas ao desenvolvimento Itaú, não deverá ser liberado o acesso a Navegação Internet. 13. Mensagens eletrônicas: Para estações de trabalho dedicadas ao desenvolvimento Itaú, não deverá ser liberado o acesso para envio e recebimento de E-mail Externo. 14. Política de Estação de Trabalho: Deve ser implementado o bloqueio nos itens abaixo: botão Executar; botão Configurações; compartilhamento entre estações de trabalho; gerenciador de tarefas; gravação em mídia removível; browsers para a execução de programas; acessos administrativos; alteração de horário; cache de credenciais; programas e serviços (ver necessidade da Operação); execução automática de programa (autorun), que deverá estar desabilitada em todos os drivers; instalação de impressora; gravação de arquivos na estação de trabalho pelos usuários da operação. Além disso, racks e cadeados devem ser utilizados para evitar acesso físico não autorizado nas estações, impedindo troca ou furto do disco rígido do equipamento. A execução de Scripts deve ser desabilitada através de restrições nos arquivos cscript.exe e no wscript.exe, também se faz necessário desativar o Windows Script Runtime (SCRRUN.DLL). Vl, verificar também, no caso da utilização do pacote office, politicas de grupo para desativar a execução de macros (vide: http://technet.microsoft.com/en-us/library/ee857085.aspx ). Adicionalmente, incluir os demais controles do documento anexo (Itaú_hardening-ptb_windows Workstation.docx). Caso o sistema operacional das estações seja diferente de Windows, consultar a área de Segurança da Informação do Itaú para avaliação dos controles necessários. 09/04/15 Pág: 9 Baseline de Análise de Risco em Fornecedores 15. Senha de BIOS / Acesso via USB: Uma senha de BIOS deve ser definida e utilizada para que não seja possível iniciar o sistema operacional das estações através de mídia removível. Cuidados especiais devem ser adotados para que esta senha seja utilizada apenas em caso de manutenções. A prevenção ao uso de USBs nas estações não deverá ser provida apenas por soluções baseadas em ‘Filter Drivers’. Assim, desabilitar a USB na BIOS e proteger a mesma com senha, ou desativar o hardware do USB dentro da estação (nesta última situação, desde que haja controle robusto que impeça o acesso ao interior do gabinete da máquina). 16. Ferramenta de Captura Remota: Para estações de trabalho dedicadas ao desenvolvimento Itaú, não deverá ser liberado a utilização de ferramenta de captura remota. 17. Autenticação para conexão externa do usuário: Para estações de trabalho dedicadas ao desenvolvimento Itaú, não deverá ser liberado acesso remoto. 18. Registros e proteção de Trilhas de Auditoria: Devem ser padronizados os registros de logs de auditoria para as atividades de usuários, exceções e outros eventos de rede e sistemas, incluindo: identificação (ID) do usuário; data e o horário de entrada (logon) e saída (logoff) dos eventos-chave; tipo do evento; os arquivos cujo acesso foi obtido, os programas ou utilitários utilizados; todas as operações privilegiadas (utilização de contas administrativas); inicialização e finalização do sistema e tentativas de acesso não autorizado (intrusion detection); violação da política de acesso e notificações para gateways e firewalls da rede; alertas dos sistemas proprietários de detecção de intrusão e de falhas do sistema (alertas ou mensagens do console); registro das exceções do sistema. Além disso, os seguintes critérios de proteção e retenção devem ser aplicados: 09/04/15 não permitir que os administradores de sistemas e redes tenham permissão de exclusão ou desativação dos registros de log de suas próprias atividades, seguindo as orientações estabelecidas nas regras de segregação de funções; Pág: 10 Baseline de Análise de Risco em Fornecedores aplicar medidas de segregação de funções para assegurar que as pessoas autorizadas que realizam atividades nos servidores de log sejam diferentes daquelas que realizam a auditoria; utilizar protocolos seguros (por exemplo: SSL/SSH) para acesso remoto aos servidores de log; registrar todas as atividades executadas nos servidores de log; documentar todos os procedimentos dos servidores de log, tais como: configuração e instalação, administração e operação, backup e manutenção, acessos a todas as trilhas de auditoria, inicialização dos registros de auditoria; manter um histórico do registro de log de auditoria conforme determinações de órgãos reguladores ou por pelo menos um ano, com um mínimo de três meses, imediatamente disponível para análise (por exemplo, online, arquivado ou recuperável a partir do backup). 19. Criptografia de disco: Criptografia no disco das estações de trabalho deve estar implementada, com algoritmo mínimo 3DES. O sistema operacional dessas estações deve ser Windows 7 ou superior, pois a ferramenta ‘Bitlocker’ já se encontra nativa nas versões Enterprise ou Ultimate (a manutenção de versões anteriores no ambiente tecnológico, Windows XP, por exemplo, torna obrigatório o uso de uma solução de criptografia de disco). 20. Sistema Operacional atualizado com versões suportadas pelo fabricante: Manter o parte tecnológico atualizado. Ex: Como o WinXP perde o suporte em 04/2014, o mínimo seria Win7, no caso de plataforma Windows. 21. Sincronização dos relógios: Implementar mecanismo que permita a sincronização dos relógios de computadores a um padrão de tempo confiável, por exemplo, o tempo coordenado universal ("Coordinated Universal Time" UTC) ou um padrão de tempo local (Observatório Nacional - ON). 22. Controles contra códigos maliciosos: Softwares maliciosos, tais como vírus de computador, cavalos de Tróia e "worms" de rede, devem ser controlados através de: 09/04/15 política formal de uso de software; homologação pela Área de Tecnologia; software antivírus atualizado em todas as estações de trabalho e servidores; varredura de vírus em qualquer arquivo recebido por mídias e redes; manutenção em estações de trabalho sendo feitas somente por pessoal autorizado. Pág: 11 Baseline de Análise de Risco em Fornecedores 23. Gestão de mudanças: Deve haver um processo formalizado para gestão de mudanças com: fluxo de comunicação com os detalhes das mudanças para todas as pessoas envolvidas, incluindo o Itaú; identificação, registro e aprovação formal das mudanças significativas; planejamento, teste e avaliação de impactos operacionais e de segurança das mudanças; procedimentos de recuperação em caso de insucesso ou ocorrência de eventos inesperados. 24. Separação dos recursos de desenvolvimento, teste e de produção: Segregação dos ambientes de ‘desenvolvimento/teste’ dos de produção, implementando: perfis diferentes de acesso de usuários em situação de desenvolvimento, de teste e de produção; proteção e controle dos dados de teste (mascaramento), não utilizando os dados de produção; controle para impedir que informações do ambiente de produção não sejam transferidas para outros ambientes. 25. Cópias de segurança das informações: Prover cópias de segurança das informações pertencentes à operação do Itaú Unibanco, conforme periodicidade acordada, com no mínimo: teste mensal das cópias; identificação das mídias de armazenamento; As mídias contendo as cópias deverão ser armazenadas em local com segurança compatível a existente na proteção da sala de servidores, com acesso restrito ao ambiente, monitoração por câmeras, controle de movimentação dessas mídias e necessidade de autorização (nível gerencial) na realização dos restores dos dados. 26. Política de segurança da informação: Um documento que possa nortear a gestão da segurança das informações corporativas deve existir, com no mínimo: 09/04/15 aprovação pela Alta Administração; divulgação e disponibilidade para consulta de todos os funcionários e terceiros da empresa, através da Intranet ou outro meio; Pág: 12 Baseline de Análise de Risco em Fornecedores revisão uma vez ao ano, com registro da versão e da data; definição de papéis e responsabilidades dos custodiantes de informações críticas; definição de sanções em caso de descumprimento de com qualquer item. 27. Política de mesa limpa: Deve haver um documento disciplinando cuidados com a política de mesa limpa, ‘definindo/orientando’ (no mínimo): os autorizados a utilizar impressora e fax no ambiente de atendimento; a retirada imediata de informações sensíveis e classificadas, quando impressas, das impressoras e fax; o local apropriado para armazenar os papéis (relatórios) e mídia eletrônica. 28. Política de tela limpa: Assim como na política de mesa limpa, um documento deverá existir para orientar sobre a necessidade de: desligamento dos computadores pessoais, terminais de computador e impressoras quando não estiverem sendo utilizados; bloqueio da estação e da console dos servidores sempre que a pessoa se ausentar. 29. Coordenação da segurança da informação: Uma estrutura de gerenciamento de segurança da informação deve existir na Organização, definindo responsáveis: pelo desenvolvimento e implementação de controles, com independência da Área de Tecnologia; por definir e garantir a aderência da empresa às diretrizes de Segurança da Informação; por identificar as ameaças significativas e a exposição da informação; por promover a conscientização de todos os funcionários e terceiros; monitorar os controles e realizar uma análise crítica dos incidentes. 30. Responsabilidades e Procedimentos (Incidentes de Segurança da Informação): Quanto aos incidentes de Segurança da Informação, deve have planos de respostas para cada um dos incidentes, prevendo: 09/04/15 falhas; Pág: 13 Baseline de Análise de Risco em Fornecedores códigos maliciosos; negação de serviço; erros resultantes de dados incompletos ou inconsistentes; violações de confidencialidade e integridade e uso impróprio de sistemas de informação; definição das responsabilidades no tratamento aos incidentes; garantia da proteção das trilhas de auditoria e evidências relacionadas ao incidente; comunicação imediata do incidente de segurança envolvendo o Itaú Unibanco. 31. Recomendações para classificação: Um procedimento para classificar informações, que defina um conjunto apropriado de níveis de proteção e determine a necessidade de medidas especiais de tratamento para cada um desses níveis deverá existir, considerando, no mínimo: estar baseado nos requisitos contratuais ou de conformidade legal, como o PCI, ISO 27001, SOX etc.; ter a designação dos responsáveis, custodiantes e usuários das informações; rótulos e regras para o tratamento seguro das informações durante todo o ciclo de vida; critérios de armazenamento, backup, transmissão e descarte seguro para informações impressas e lógicas; três níveis de classificação, por exemplo, Públicas, Internas e Confidenciais, considerando que toda informação encaminhada pelo Itaú Unibanco deve ser classificada como Confidencial. 32. Acordos de confidencialidade: Deve existir um documento assinado por todos os funcionários e terceiros para que estejam cientes das suas responsabilidades de Segurança da Informação, com no mínimo: 09/04/15 aprovação pelo Jurídico da empresa; consideração sobre riscos, controles de segurança, políticas e procedimentos para os sistemas de informação, no que diz respeito à questão de sigilo e condições de uso das informações disponibilizadas em rede de computadores e/ou estações de trabalho no contrato entre as partes; assinatura e data; indicação de que a confidencialidade deve ser mantida mesmo após o desligamento do funcionário ou terceiro; Pág: 14 Baseline de Análise de Risco em Fornecedores definição de sanções em caso de violação. 33. Conscientização, educação e treinamento em segurança da informação: Um programa para garantir que os colaboradores sejam conscientizados em Segurança da Informação deverá ser aplicado, desde a contratação e em campanhas periódicas, com no mínimo: reconhecimento do conteúdo do treinamento, através de formalização; atualizações regulares sobre as políticas e procedimentos organizacionais; meios de divulgação da campanha de forma que todos os funcionários e terceiros tenham acesso; campanha no mínimo uma vez ao ano. 34. Inventário dos ativos: Um inventário dos ativos de TI deve manter o registro de identificação, localização e informação armazenada. Esse controle deverá conter as seguintes informações mínimas: ativos físicos: especificação, tipo, número de série, MAC address/hostname de equipamentos computacionais (estação, notebook, servidor, roteador, firewall e switch), localização (prédio, andar, operação/setor). Considerar também: mídia magnética (fita e CD/DVD), equipamentos de comunicação (celulares) e outros equipamentos técnicos (exemplo: no-break e gerador); inventário de software: nome, versão de aplicativos, sistemas, ferramentas de desenvolvimento e utilitários. 35. Remoção de propriedade: Um fluxo formalizado de retirada e devolução de equipamentos (ex: dispositivos de comunicação móvel), informações ou software deve estar sendo aplicado, contendo descrição do ativo e motivo da retirada, autorizada pelo responsável pelo ativo (no mínimo gerente). 36. Controles de entrada física: Controles de entrada apropriados devem estar implementados para assegurar que somente pessoas autorizadas tenham acesso físico a empresa e áreas restritas (ex: Datacenter e Operação), com no mínimo: 09/04/15 segregação das áreas críticas (ex: Datacenter e Operação); identificação para acesso às áreas autorizadas por biometria, crachá (com foto) ou senha; registro de data e hora de entrada e saída, mantendo histórico dos acessos por 90 dias; Pág: 15 Baseline de Análise de Risco em Fornecedores monitoração de CFTV, garantindo que todas as entradas, saídas e corredores sejam monitorados, retendo as imagens por no mínimo 90 dias; procedimento para que terceiros que realizam serviços de suporte, tenha acesso restrito às áreas necessárias ao atendimento, sempre monitorado por um funcionário autorizado; procedimento para formalização de inclusão, exclusão e revisão dos acessos concedidos; equipamentos posicionados de forma que o ângulo de visão seja restrito; proibição de entrada no ambiente de Operação com pertences que possam ser utilizados para saída de informação, tais como: papéis, canetas, bolsas, celulares, máquinas fotográficas, filmadoras etc; portas e janelas trancadas, quando não utilizadas, e dotadas de proteção externa; cabeamento da rede dentro de racks trancados com chave quando não estiverem sofrendo manutenção. 37. Continuidade de Negócios: A empresa deverá possuir um Plano de Continuidade de Negócios, quando for previsto em Contrato que a prestação do serviço não pode ser interrompida. Para isso deverá: ter documento de BCP, alinhado com a necessidade do negócio do Itaú; realizar testes de disaster recovery. 38. Inspeções periódicas de verificação de compliance aos requisitos de segurança: A empresa deverá permitir e facilitar a realização de inspeções periódicas, pela área de Segurança do Itaú, nas instalações que estiverem sendo usadas para atendimento aos serviços contratados. 09/04/15 Pág: 16 ANEXO A – SEGURANÇA PARA DESENVOLVIMENTO DE APLICAÇÕES 1. INTRODUÇÃO Esta documentação lista as melhores práticas e recomendações para o desenvolvimento de software seguro e que podem se relacionar com diversos tipos de aplicações: Mobile, WebApp, WebService e Desktop. É recomendado aplicar os requisitos descritos em cada uma das subseções seguintes para mitigar os riscos de segurança no desenvolvimento de aplicações. As seções seguintes descrevem os métodos de prevenção para tais problemas. 2. ESCOPO Não faz parte do escopo deste documento: Descrever práticas que não produzam benefícios diretamente relacionados à segurança das aplicações ou que visem outros objetivos tais como desempenho, robustez e usabilidade, entre outros. Detalhar exaustivamente o uso seguro de recursos, estruturas e comandos das diversas linguagens de programação utilizadas no Itaú, embora casos especiais, normalmente justificados por sua ampla utilização ou criticidade, possam ser explorados mais extensamente. 3. DESENVOLVIMENTO SEGURO - MELHORES PRÁTICAS GERAIS 1. Criar e manter uma política de privacidade para o produto ou linha de serviço cobrindo o uso de dados pessoais e disponibilize para o usuário, especialmente quando eles fazem escolhas de consentimento. 2. O aplicativo deve gravar os arquivos que cria em um diretório diferente daquele em que o código executável da aplicação é armazenado. 3. O aplicativo não deve usar cookies ou qualquer outra tecnologia web que recolha informações de identificação do usuário, tais como listas extensas dos sites visitados anteriormente, endereços de e-mail ou outras informações para identificar ou criar perfis de usuários individuais. 4. O aplicativo não pode utilizar cookie persistente como mecanismo de coleta de dados sensíveis e controle de sessão. Esse requisito garante que as informações do usuário não serão armazenadas de forma irregular e insegura, podendo ser utilizada por usuários maliciosos ou atacantes, e evitando possíveis problemas com usuários. 5. A opção autocomplete=off deve estar configurada em todos os formulários que solicitem informações pessoais. 6. Os formulários de cadastro ou qualquer outro parâmetro enviado à aplicação devem ser validados pela aplicação e não por meio de scripts presentes no próprio código html do site. 7. Quando enviados segredos para endereços de e-mail, como um mecanismo de reset de password. Use números randômicos limited time-only para reiniciar o acesso e envie um e-mail de retorno assim que a senha for re-configurada. Cuidado ao permitir que Baseline de Análise de Risco em Fornecedores usuários registrados mudem seus endereços de e-mail – envie uma mensagem para o e-mail anterior antes de efetuar a mudança. 8. Certifique-se que o controle de acesso (ou autorização) é realizado em todos os passos de um fluxo e não apenas no passo inicial de um processo. 9. Para evitar exploração de Clickjacking, aplicar o cabeçalho “X-Frame-Options:” com valores DENY ou SAMEORIGIN que irão bloquear respectivamente framing ou framing de sites de origens diferentes. 10. O mecanismo de gestão de senhas da aplicação deve ser capaz de reconhecer que o usuário está tentando utilizar uma de suas senhas anteriores e deve impedir o usuário de escolher tal senha. O administrador deve ter a possibilidade de especificar o número de senhas expiradas que não devem ser escolhidas pelo usuário. 11. O aplicativo deve garantir a confidencialidade da conta e dos dados do usuário. A aplicação deve garantir que quando uma tentativa de login for realizada utilizando um nome de usuário inválido, ela não revelará se o usuário existe ou não. 12. O aplicativo deve garantir proteção contra bloqueio inadvertido de contas. Esse requisito garante que as contas serão bloqueadas da forma correta, sob as circunstâncias planejadas, e não em decorrência de um ataque. 13. Deve ser avaliado a possibilidade de execução de teste de turing (CAPTCHA) durante o cadastro ou outras funcionalidades críticas em áreas não autenticadas da aplicação, caso seja percebido anomalias no acesso como um número específico de cadastros da mesma origem. Esse requisito garante que será possível diferenciar usuários e sistemas automatizados durante a criação de um novo cadastro. 14. O aplicativo deve garantir a validade de um cadastro através da verificação da validade do e-mail ou celular cadastrado pelo usuário. Esse requisito garante que após o preenchimento do cadastro, será feita uma validação do endereço de e-mail ou número de celular que foi cadastrado, que funcionará atrelado a um tempo determinado de validade, que uma vez atingida, invalidará o cadastro. 15. Toda aplicação deve possuir controles de permissão para restrição de acesso, limitando os acessos baseando-se na premissa do privilégio mínimo. Restrição dos direitos de acesso a IDs de usuários privilegiados ao menor número de privilégios necessários para desempenhar as responsabilidades. 16. O aplicativo deve garantir ID exclusivo para cada indivíduo que possua direito de acesso. Não é permitido ID compartilhado ou ID genérico. Ao garantir que todos os usuários sejam individualmente identificados, em vez de usar um ID para vários funcionários, uma organização consegue manter a responsabilidade individual pelas ações e uma trilha de auditoria eficaz por funcionário. Isso ajudará a apressar a resolução e a contenção de problemas quando ocorrer mau uso ou tentativa mal-intencionada. 17. Toda aplicação deve garantir que uma conta com várias tentativas de acessos incorretas em um pequeno espaço de tempo seja bloqueada por um tempo mínimo ou exigida outra forma de confirmação de identidade. Se uma conta estiver bloqueada em função de uma pessoa tentar continuamente adivinhar a senha, os controles para atrasar a reativação dessas contas bloqueadas evitarão que o indivíduo mal-intencionado continue a tentar adivinhar a senha. 09/04/15 Pág: 18 Baseline de Análise de Risco em Fornecedores 18. Não permita que o processo de login comece de uma página não criptografada. Sempre inicie o processo de login de uma segunda página criptografa ou de um novo código de sessão, para prevenir o roubo de credenciais ou da sessão, phishing e ataques de fixação de sessão. 19. Considere gerar uma nova sessão após uma autenticação que obteve sucesso ou mudança do nível de privilégio. 20. Use períodos de expiração de prazo que automaticamente realizam logout em sessões inativas, bem como o conteúdo das informações que estão sendo protegidas. 21. Não exponha nenhum identificador de sessão ou qualquer parte válida das credenciais em URLs e logs (não regrave ou armazene informações de senhas de usuários em logs). 22. Além de invalidar os tokens adequadamente (no lado do servidor), durante os principais eventos do aplicativos, também é fundamental que os próprios tokens sejam gerados corretamente. Eles devem ser suficientemente longos e complexos, e pseudoaleatórios, de modo a ser resistente aos ataques de adivinhação\antecipação. 23. Nunca permitir contas padrão, as senhas padrão ou vazio, ou grupo de contas de acesso ao sistema; 24. Utilizar a autenticação de dois fatores sempre que a informação que está sendo manipulada é sensível e que o acesso pode ser concedido a partir de várias origens não confiáveis; 25. Usar algoritmos de hash sobre a senha dos usuários antes de armazena-la. 26. Especifique o cabeçalho X-Content-Type-Options: nosniff para garantir que o browser não tente detector um um Content-Type diferente o que foi enviado. 4. REVISÃO SEGURA DE CÓDIGO – REQUISITOS GERAIS 1. Deve ser tomado como base e guia para revisão e certificação de software a metodologia ASVS (Application Security Verification Standard -2014) considerando o nível 3 para os requisitos a serem verificados. 2. O código deve ser revisado com o intuito que sejam removidos componentes, plug-ins e trechos desnecessários. Esses artefatos podem introduzir vulnerabilidades ao software. 3. Aplicações que incluem códigos de terceiros devem incluir as versões mais recentes do código, com todos os patches de segurança aplicados de acordo com o processo de implantação aprovado. 4. O software, código ou componentes deve ser revisado a fim de entregar ao Banco um produto livre de vulnerabilidades comuns, conforme especificado pelo Common Vulnerabilities and Exposures (CVE®) - O padrão para nomes de vulnerabilidades de segurança da informação que podem ser acessados em http://cve.mitre.org/. 5. O software, código ou componentes deve ser revisado a fim de entregar ao Banco um produto livre de brechas conhecidas, tal como especificado na Common Weakness Enumeration (CWE) - Um dicionário dos tipos de vulnerabilidades conhecidas que podem ser acessadas em http://cwe.mitre.org/. 09/04/15 Pág: 19 Baseline de Análise de Risco em Fornecedores 6. O software, código ou componentes deve ser revisado a fim de entregar ao Banco um produto livre de qualquer tipo de agente malicioso, incluindo bombas lógicas, ransonwares, spywares e trojan. 7. O software, código ou componentes deve ser revisado a fim de entregar ao Banco um produto livre de credenciais hardcoded e chaves de criptografia em texto claro nas linhas do código ou em arquivos de configuração. 8. O software, código ou componentes deve ser revisado a fim de entregar ao Banco um produto livre de maintenance hooks (backdoors). 9. O software, código ou componentes deve ser revisado a fim de entregar ao Banco um produto livre de códigos de depuração (debugging code) e flags. 10. O software, código ou componentes deve ser revisado a fim de entregar ao Banco um produto livre de comentários desnecessários ou informação sensível nos comentários do código. 11. O software, código ou componentes deve ser revisado a fim de entregar ao Banco um produto livre de contas de testes antes do processo de implantação da aplicação em produção. 5. DESENVOLVIMENTO SEGURO - MELHORES PRÁTICAS ESPECÍFICAS 5.1. PROTEÇAO PARA WEBSERVICES As seguintes práticas não devem ser tomadas como únicos métodos para proteção de aplicações baseadas em WebServices mas sim como complemento específico para esse tipo de tecnologia, tome como referencia todas sessões desse documento para construção segura de uma aplicação baseada em WebServices. 12. Considere usar apenas a chave de sessão de token ou API para manter o estado do cliente em um cache do lado do servidor. Isto é diretamente equivalente à forma como web apps normais fazem, e há uma razão para isso é moderadamente seguro. 13. Anti-replay. Atacantes vão copiar e colar uma sessão e tornar-se outra pessoa. Considere o uso de uma chave de criptografia de tempo limitado, fechado contra a chave de sessão de token ou API, data, hora e endereço IP de entrada. Em geral, implemente alguma proteção de armazenamento do cliente local do token de autenticação para mitigar ataques de repetição. 14. Proteja os métodos HTTP. Uma política ou controle de acesso pra determinando token de sessão/API com acesso a uma coleção de recursos, usuário ou ação deve ser definido para cada método HTTP. 15. Whitelist Metodos Permitidos. Da mesma forma que o requisito anterior é importante que o serviço restrinja os métodos permitidos para determinada entidade, todos os outros métodos devem retornar o código de resposta adequado (por exemplo, 403 Forbidden). 16. Proteja ações privilegiadas e coleções de recursos sensíveis. O token de sessão ou API key devem ser enviados juntamente como parâmetro de cookie ou no body para garantir 09/04/15 Pág: 20 Baseline de Análise de Risco em Fornecedores que recursos privilegiados ou ações sejam devidamente protegidos contra uso não autorizado. 17. Web services precisam garantir que a saída enviada aos clientes é codificada para ser consumida como dados e não como scripts. Isto torna-se muito importante quando os clientes de web services usam a saída para renderizar páginas HTML, direta ou indiretamente por meio de objetos AJAX. 18. A mesma questão acima é relevante quanto a JSON encoders que devem evitar execução de código JavaScript no browser ou Node.js no servidor. No caso de XML encoding deve sempre ser utilizado um XML serializer para garantir que o conteúdo enviado ao browser é “parseável” e não contém injeção de XML. 19. Proteja ações privilegiadas e coleções de recursos sensíveis. O token de sessão ou API key devem ser enviados juntamente como parâmetro de cookie ou no body para garantir que recursos privilegiados ou ações sejam devidamente protegidos contra uso não autorizado. 20. Log e conte falhas de validação de input, qualquer um pode executar chamadas no Web Service, então considere implementar rate limiting para falhas na validação de input em determinado período de tempo. Implemente esse controle parametrizável para acompanhar a evolução do negócio. 21. É difícil de executar a maioria dos ataques se os valores permitidos apenas são true ou false, um número, ou ainda um de um pequeno número de valores aceitáveis. Especifique o tipo de dados de entrada o mais cedo possível. 22. Valide o Contente-Type. O cliente nunca deve assumir o Content-Type (ex.: application/xml ou appication/json), mas sempre verifique se o cabeçalho Content-Type e o conteúdo são do mesmo tipo. A falta de cabeçalho Content-Type ou um cabeçalho Content-Type inesperado, deve resultar no servidor rejeitar o conteúdo com uma resposta 406 Not Acceptable. 23. O servidor de autorização deve considerar a limitação do número de tokens de acesso concedidos por usuário. Deve ser incluída uma quantidade entropia adequada nos "códigos" de autorização. Um invasor pode esgotar o pool de "códigos" de autorização direcionando repetidamente o navegador do usuário a solicitar autorização de "códigos" ou tokens de acesso. 24. Log e conte falhas de validação de input, qualquer um pode executar chamadas no Web Service, então considere implementar rate limiting para falhas na validação de input em determinado período de tempo. Implemente esse controle parametrizável para acompanhar a evolução do negócio. 5.2. PROTEÇÃO PARA APLICATIVOS MÓVEIS As seguintes práticas não devem ser tomadas como únicos métodos para proteção de aplicações baseadas em Mobile mas sim como complemento específico para esse tipo de tecnologia, tome como referencia todas as sessões desse documento para construção segura de uma aplicação baseada em Mobile. 09/04/15 Pág: 21 Baseline de Análise de Risco em Fornecedores 1. Não guarde senhas ou segredos no binário do aplicativo. Não use um segredo para integração com a infraestrutura (como uma senha embutida no código). Binários de aplicativos móveis podem ser facilmente baixados e sobrepujados por engenharia reversa. 2. Não permitir o uso de versões com vulnerabilidades. Forçar atualização do aplicativo quando funções críticas e bugs de segurança tiverem sido identificados e corrigidos. 3. Não autorizar código/app a executar como root/privilégios de administrador. 4. Devido a requisitos de uso off-line, podem ser solicitados a aplicativos móveis autenticação local ou verificações de autorização no código do aplicativo móvel. Se este for o caso, os desenvolvedores devem adicionar controles locais de verificação de integridade dentro do código para detectar qualquer alteração não autorizada. 5. Autenticação persistente (Remember Me) funcionalidade implementada dentro de aplicações móveis nunca devem guardar a senha de um usuário no dispositivo. 6. Sempre que possível, garantir que todas as solicitações de autenticação sejam executadas no lado do servidor. Após a autenticação bem sucedida, os dados do aplicativo serão carregado para o dispositivo móvel. Isso irá garantir que os dados do aplicativo só estarão disponível após a autenticação bem-sucedida. 7. A aplicação deve forçar o fechamento de uma sessão inativa por determinado período de tempo. Este período deve ser determinado de acordo com o negócio da aplicação. 8. O aplicativo mobile deve garantir que tokens de sessão de alta entropia e imprevisíveis sejam implementados. 9. Toda aplicação deve garantir controle sobre número máximo de tentativas sem sucesso de logins em um determinado período de tempo. O mecanismo de Identificação e Autenticação deve permitir ao administrador a configuração do número máximo de tentativas de login, configurável por utilizador ou por regra, dentro de um determinado período de tempo. 10. Aplicações que possuam identificação ou autenticação implementadas com base em ID de usuário, senha estática e dados pessoais de usuários, deverão garantir codificação/criptografia em todos os campos sensíveis ou garantir o uso de one-time cookie criptografado. Os cookies nunca poderão ser persistentes. 11. O aplicativo deve garantir a identificação e autenticação sempre que uma nova sessão for estabelecida. A aplicação não deve armazenar senhas do usuário em cookies, scripts client ou server-side, ou qualquer outra forma automatizada de login de usuário para que o usuário não tenha que digitar sua senha de login, quando iniciar uma nova sessão. 12. Nunca armazene credenciais no sistema de arquivos do telefone. Forçar o usuário a se autenticar usando um sistema web ou API de login padrão (HTTPS) para a aplicação em cada abertura e garantir que o tempo limite de sessão está definido para atender os requisitos mínimos de experiência do usuário. 13. Evite confiar exclusivamente em chaves de criptografia ou descriptografia codificados ao armazenar os ativos de informações sensíveis. 14. Considere fornecer uma camada adicional de criptografia além de qualquer mecanismos de encriptação padrão fornecido pelo sistema operacional. 09/04/15 Pág: 22 Baseline de Análise de Risco em Fornecedores 15. Proteja o binário da aplicação. Siga técnicas de codificação segura para os seguintes componentes de segurança dentro do aplicativo móvel: Controles de detecção para Jailbreak; Controles de Checksum; Controles de Certificados fixados; Controle de detecção para Debugger; Para mitigar outros riscos técnicos residuais expostos acima o ideal é que os desenvolvedores ou a empresa terceira impeça de forma adequada que um usuário mal intencionado possa analisar o aplicativo usando técnicas estáticas ou dinâmicas de análise e engenharia reversa; e o app deve ser capaz de detectar durante o runtime que código foi adicionado ou alterado a partir do que ele conhece sobre a sua própria integridade durante a compilação. Ele deve ser capaz de reagir de forma adequada durante o runtime a uma violação da integridade do código. 5.3. PROTEÇAO PARA BANCO DE DADOS 1. Usar consultas parametrizadas para acesso as informações do banco de dados; 2. Utilizar validação de entrada e codificação de saída e assegurar a abordagem de meta caracteres. Se houver falha, o comando não deverá ser executado no banco de dados; 3. Realizar a codificação (escaping) de meta caracteres em instruções SQL; 4. A aplicação deve usar o menor nível possível de privilégios ao acessar o banco de dados; 5. Usar credenciais seguras para acessar o banco de dados; 6. Não incluir strings de conexão na aplicação. As strings de conexão devem estar em um arquivo de configuração separado, armazenado em um sistema confiável e as informações devem ser criptografadas; 7. Usar procedimentos armazenados (stored procedures) para abstrair o acesso aos dados e permitir a remoção de permissões das tabelas no banco de dados; 8. Encerrar a conexão assim que possível; 9. Remover ou modificar senhas padrão de contas administrativas. Utilizar senhas robustas (pouco comuns ou difíceis de deduzir) ou implementar autenticação de múltiplos fatores. Desativar qualquer funcionalidade desnecessária no banco de dados, como serviços não utilizados. Instalar o conjunto mínimo de componentes ou de opções necessárias (redução da superfície de ataque); 10. Eliminar o conteúdo desnecessário incluído por padrão pelo fornecedor como esquemas e bancos de dados de exemplo; 11. Desativar todas as contas criadas por padrão e que não sejam necessárias para suportar os requisitos de negócio; 09/04/15 Pág: 23 Baseline de Análise de Risco em Fornecedores 12. A aplicação deve conectar-se ao banco de dados com diferentes credenciais de segurança para cada tipo de necessidade como, por exemplo, usuário, somente leitura, convidado ou administrador; 5.4. GERENCIAMENTO E EXECUÇÃO MALICIOSA DE ARQUIVOS Em muitas plataformas, frameworks permitem o uso de referências a objetos externos, como referências a URLs ou a arquivos de sistema. Quando o dado é insuficientemente verificado, isto pode levar a uma inclusão arbitrária remota que será processada ou invocar um conteúdo hostil pelo servidor web. 1. Usar um mapeamento indireto de objetos de referência. Por exemplo, quando um nome de arquivo parcial é uma vez usado, considere um hash para a referência parcial. 2. Limitar os tipos de arquivos que podem ser enviados para aceitar somente os necessários ao propósito do negócio; 3. Validar se os arquivos enviados são do tipo esperado, através da validação dos cabeçalhos, pois, realizar a verificação apenas pela extensão não é suficiente; 4. Não salvar arquivos no mesmo diretório de contexto da aplicação Web. Os arquivos devem ser armazenados no servidor de conteúdos ou no banco de dados. Recomendamos a utilização de um Sandbox para essas finalidade; 5. Prevenir ou restringir o carregamento de qualquer arquivo que possa ser interpretado ou executado pelo servidor Web; 6. Desativar privilégios de execução nos diretórios de armazenamento de arquivos; 7. Implantar o carregamento seguro nos ambientes UNIX por meio da montagem do diretório de destino como uma unidade lógica, usando o caminho associado ou o ambiente de “chroot”; 8. Ao referenciar arquivos, usar uma lista branca (whitelist) de nomes e de tipos de arquivos permitidos. Realizar a validação do valor do parâmetro passado e caso ele não corresponda ao que é esperado, rejeitar a entrada ou utilizar um valor padrão; 9. Não passar caminhos de diretórios ou de arquivos em requisições. Usar algum mecanismo de mapeamento desses recursos para índices definidos em uma lista prédefinida de caminhos; 10. Nunca enviar o caminho absoluto do arquivo para o lado cliente de uma aplicação; 11. Certificar-se de que os arquivos da aplicação e os recursos estão definidos somente com o atributo de leitura; 12. Verificar os arquivos que os usuários submeterem através do mecanismo de carregamento em busca de vírus e malwares; 5.4.1. EXEMPLOS: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-0360 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-5220 09/04/15 Pág: 24 Baseline de Análise de Risco em Fornecedores 5.5. http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-4722 5.4.2. REFERENCIAS: CWE: CWE-98 (PHP File Inclusion), CWE-78 (OS Command Injection), CWE-95 (Evalinjection), CWE-434 (Unrestricted file upload) WASC Threat Classification: http://www.webappsec.org/projects/threat/classes/os_commanding.shtml OWASP Guide: http://www.owasp.org/index.php/File_System#Includes_and_Remote_files OWASP Testing Guide, https://www.owasp.org/index.php/Testing_Directory_traversal/file_include_(OTG-AUTHZ001) FALHAS DE INJEÇÃO 1. Falhas de injeção acontecem quando os dados que o usuário passa de entrada são enviados como parte de um comando ou consulta. Os atacantes confundem o interpretador para o mesmo executar comandos manipulados enviando dados modificados. 2. Evite o uso de interpretadores quando possível. Caso invoque um interpretador, o método chave para evitar injeções está no uso de APIs seguras, como por exemplo, queries parametrizadas e bibliotecas de mapeamento objeto relacional (ORM). 3. Se uma API parametrizada não estiver disponível, você deve cuidadosamente filtrar os caracteres especiais utilizando a sintaxe para esse interpretador; 4. “Lista branca" ou validação de entrada positiva também é recomendada, mas não é uma defesa completa já que muitas aplicações requerem caracteres especiais em suas entradas. Se os caracteres especiais são exigidos, somente as abordagens 1. e 2. acima tornarão a sua utilização segura; 5. Localize erros de canonicalização. As entradas devem ser decodificadas e convertidas para a representação interna corrente antes de ser validada. Certifique-se que sua aplicação não decodifica a mesma entrada duas vezes. Tais erros podem ser usados para ultrapassar esquemas de whitelist pela introdução de entradas perigosas após sua validação. 6. Quando há falha de validação, a aplicação deve rejeitar os dados fornecidos; 7. Validar dados provenientes de redirecionamentos. Os atacantes podem incluir conteúdo malicioso diretamente para o alvo do mecanismo de redirecionamento, podendo assim contornar a lógica da aplicação e qualquer validação executada antes do redirecionamento; 8. Realizar o tratamento (sanitização), baseado em contexto, de todos os dados provenientes de fontes não confiáveis usados para construir as consultas SQL; 9. Testar a utilização de funções escape no SGBD e em stored procedures caso não cause overhead. Testes de desempenho antes da utilização dessas funções são altamente recomendados. 09/04/15 Pág: 25 Baseline de Análise de Risco em Fornecedores 10. Se a rotina de validação padrão não abordar as seguintes entradas, então elas devem ser verificadas: a) Verificar bytes nulos (%00); b) Verificar se há caracteres de nova linha (%0d, %0a, \r, \n); 5.5.1. PROTEÇÃO – SQL INJECTION 1. Nunca execute queries formadas a partir de entradas ou parâmetros fornecidos pelo usuário sem a devida verificação. 2. Valide e corrija o conteúdo de toda variável passada para o banco. 3. Verifique se a entrada tem o tipo de dado esperado. 4. Utilize sempre aspas para a entrada de dados passada ao banco. 5. Nunca disponibilizar parâmetros de usuário e senha do banco de dados em interface com o usuário. 5.5.2. PROTEÇÃO – OS COMMAND INJECTION 1. Verificar toda entrada de dados. 2. Nunca passar entrada de dados não verificada como parâmetro para comandos de sistema. 3. Nunca passar entrada de dados não verificada como parâmetro para pipes. 4. Verifique se a entrada de dados contém comandos de sistema. 5. Verificar todos os argumentos passados em system calls. 6. Utilizar sempre full pathnames. 7. Sempre configurar o diretório de trabalho corrente. 8. Verificar retorno de funções. 9. Garantir que as bibliotecas utilizadas sejam íntegras e livres de códigos maliciosos. 10. Utilizar sempre que possível; recursos de timeout em leituras e escritas de rede. 11. Verificar as informações retornadas na comunicação entre processos pais e filhos. 12. Utilizar mecanismos de autenticação/verificação na comunicação inter-processos. 13. Aplicações não devem ser executadas com privilégios de administrador. Se necessário, isolar a porção crítica do código de forma que somente ela seja executada com privilégio adicional. Se possível, adotar o conceito de Privilege Separation, onde porções de código que demandam níveis de privilégios diferentes são executadas por processos diferentes. 5.5.3. PROTEÇÃO – PATH TRAVERSAL/DISCLOSURE 1. Tratar a entrada em busca de meta caracteres que descrevem trilhas, como “.”, “/” e “\”. 09/04/15 Pág: 26 Baseline de Análise de Risco em Fornecedores 2. Procure utilizar trilhas absolutas e extensões hard-coded na aplicação. 5.6. 5.5.4. EXEMPLOS http://cwe.mitre.org/data/definitions/77.html http://cwe.mitre.org/data/definitions/78.html http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-5121 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-4953 5.5.5. REFERÊNCIAS CWE: CWE-89 (SQL Injection), CWE-77 (Command Injection), CWE-90 (LDAP Injection), CWE-91 (XMLInjection), CWE-93 (CRLF Injection). WASC Threat Classification: http://www.webappsec.org/projects/threat/classes/os_commanding.shtml http://www.webappsec.org/projects/threat/classes/ldap_injection.shtml http://www.webappsec.org/projects/threat/classes/sql_injection.shtml OWASP - Command Injection and OS Command Injection https://www.owasp.org/index.php/OS_Command_Injection https://www.owasp.org/index.php/Command_Injection OWASP Code Review Guide: http://www.owasp.org/index.php/Reviewing_Code_for_SQL_Injection OWASP – SQL Injection and Query Parameterization: http://www.owasp.org/index.php/SQL_Injection https://www.owasp.org/index.php/Query_Parameterization_Cheat_Sheet OWASP Guide: http://www.owasp.org/index.php/Guide_to_SQL_Injection https://www.owasp.org/index.php/Testing_for_SQL_Injection_(OTG-INPVAL-006) 5.5.6. REVISÂO DE CÒDIGO OWASP - Injection: https://www.owasp.org/index.php/Reviewing_Code_for_SQL_Injection https://www.owasp.org/index.php/Reviewing_Code_for_OS_Injection https://www.owasp.org/index.php/Reviewing_Code_for_Data_Validation FALHA DE AUTENTICAÇÃO E GERENCIAMENTO DE SESSÃO Falhas nesta área geralmente envolvem a falha na proteção de credenciais e nos tokens da sessão durante seu tempo de vida. Estas falhas podem estar ligadas à roubo de contas de usuários ou administradores, contornando controles de autorização e de responsabilização, causando violações de privacidade. As principais recomendações são descritas a seguir:: 1. Um conjunto único de controles fortes de autenticação e gerenciamento de sessão. Tais controles devem procurar: a) Cumprir todos os requisitos de autenticação e gerenciamento de sessão definidos no Padrão de Verificação de Segurança da Aplicação do OWASP (ASVS), áreas V2 (Autenticação) e V3 (Gerenciamento de Sessão); 09/04/15 Pág: 27 Baseline de Análise de Risco em Fornecedores b) Ter uma interface simples para os desenvolvedores. Considere o ESAPI Authenticator e User APIs como bons exemplos para simular, usar ou construir como base; 2. Grande esforço também deve ser feito para evitar falhas de XSS (Cross Site Scripting) que podem ser utilizados para roubar os IDs de sessão; 3. Todas as funções administrativas devem ser isoladas do acesso dos usuários comuns e o gerenciamento de contas devem ser tão seguras quanto o mecanismo de autenticação principal; 4. A funcionalidade de saída (logout) deve encerrar completamente a sessão ou conexão associada; 5. A funcionalidade de saída (logout) deve estar disponível em todas as páginas que requerem autenticação; 6. Gerar um novo identificador de sessão quando houver uma nova autenticação; 7. Não permitir conexões simultâneas com o mesmo identificador de usuário; 8. Gerar um novo identificador de sessão e desativar o antigo periodicamente. Isso pode mitigar certos cenários de ataques de sequestro de sessão, quando o identificador de sessão original for comprometido; 9. Considere o uso de uma chave de criptografia de tempo limitado, fechado contra a chave de sessão de token ou API, data, hora e endereço IP de entrada. Em geral, implemente alguma proteção de armazenamento do cliente local do token de autenticação para mitigar ataques de repetição. 10. Não permita que o processo de login comece de uma página não criptografada. Sempre inicie o processo de login de uma segunda página criptografa ou de um novo código de sessão, para prevenir o roubo de credenciais ou da sessão, phishing e ataques de fixação de sessão. 11. Considere gerar uma nova sessão após uma autenticação que obteve sucesso ou mudança do nível de privilégio. 12. Use períodos de expiração de prazo que automaticamente realizam logout em sessões inativas, bem como o conteúdo das informações que estão sendo protegidas. 13. Use somente funções de proteção secundárias eficientes, tais como perguntas e respostas e reset de senha, pois estas credenciais são como senhas, nomes de usuários e tokens. Aplique one-way hash nas respostas para prevenir ataques nos quais a informação pode ser descoberta. 14. Configurar o atributo "secure" para cookies que trafegam informações sensíveis incluindo cookies de sessão que são transmitidos através de uma conexão TLS; 15. Configurar os cookies com o atributo “HttpOnly”; 16. Assegure-se que todas as páginas tenham um link de logout. O logout deve destruir todas as sessões e cookies de sessão. Considere os fatores humanos: não pergunte por confirmação, pois usuários acabarão fechando a aba ou janela ao invés de sair com sucesso. 09/04/15 Pág: 28 Baseline de Análise de Risco em Fornecedores 17. Não exponha nenhum identificador de sessão ou qualquer parte válida das credenciais em URLs e logs (não regrave ou armazene informações de senhas de usuários em logs). 18. Verifique a senha antiga do usuário quando ele desejar mudar a senha. 19. Não confie em credenciais falsificáveis como forma de autenticação, como endereços de IP ou máscaras de rede, endereço de DNS ou verificação reversa de DNS, cabeçalhos da origem ou similares. 5.6.1. PROTEÇÃO - REPLAY DE SESSÃO 1. Gere identificadores de sessão que sejam difíceis de aplicar engenharia reversa, criptografia forte e Message Digest robusto. 2. Preveja o uso de SSL na aplicação para proteção do cookie em seu trânsito entre o navegador e o servidor. Garanta que todos os cookies tenham o campo secure habilitado. 3. Preveja uma função de encerramento de sessão ou logout, que expire todos os cookies e tokens de autenticação. 5.6.2. PROTEÇÃO – HIJACKING DE SESSÃO 1. Re-autentique usuário antes que ações críticas sejam executadas. 2. Se possível, tente vincular tokens de sessão a cada instância de navegador, por exemplo, utilizando um hash do endereço MAC do computador cliente e o process id do navegador. 3. Siga as contra medidas para prevenir ataques de Força Bruta e Replay de Sessão. 5.6.3. EXEMPLOS http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-6145 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-6229 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-6528 5.6.4. REFERÊNCIAS CWE: CWE-287 (Authentication Issues), CWE-522 (Insufficiently Protected Credentials), CWE-311 (Reflection attack in an authentication protocol), others. WASC Threat Classification: http://www.webappsec.org/projects/threat/classes/insufficient_authentication.shtml http://www.webappsec.org/projects/threat/classes/credential_session_prediction.shtml http://www.webappsec.org/projects/threat/classes/session_fixation.shtml OWASP Guide: http://www.owasp.org/index.php/Guide_to_Authentication OWASP Code Review Guide: http://www.owasp.org/index.php/Reviewing_Code_for_Authentication http://www.owasp.org/index.php/Testing_for_authentication 09/04/15 Pág: 29 Baseline de Análise de Risco em Fornecedores 5.7. RSNAKE01: http://ha.ckers.org/blog/20070122/ip-trust-relationships-xss-and-you 5.6.5. REVISÃO DE CÓDIGO OWASP – Integridade de Sessão https://www.owasp.org/index.php/Reviewing_Code_for_Session_Integrity PROTEÇÃO CONTRA CROSS-SITE SCRIPTING (XSS) O XSS permite que atacantes executem script no navegador da vítima, podendo sequestrar sessões de usuários, desfigurar web sites, inserir conteúdo hostil, conduzir ataques de roubo de informações pessoais - conhecido como phishing e obter o controle do navegador do usuário usando um script mal intencionado, tal como um malware. 1. A opção apropriada é filtrar adequadamente todos os dados não confiáveis com base no contexto HTML (corpo, atributo, JavaScript, CSS ou URL) no qual os dados serão colocados; 2. “Lista branca" ou validação de entrada positiva também é recomendada pois ajuda a proteger contra XSS, mas não é uma defesa completa, já que muitas aplicações requerem caracteres especiais em sua entrada. Tal validação deve, tanto quanto possível, validar o tamanho, caracteres, formato, e as regras de negócio sobre os dados antes de aceitar a entrada; 3. Não use validação de blacklist para detectar XSS na entrada ou codificação de saída. A procura ou troca de poucos caracteres ,"<" ">" e outros caracteres similares ou frases como script, é fraco e tem sido explorado com sucesso. Mesmo uma tag <b> não verificada é insegura em alguns contextos. O XSS possui um conjunto surpreendente de variantes que torna simples ultrapassar validações de blacklist. 4. Implementar a Política de Segurança de Conteúdo (CSP): CSP é um mecanismo do browser que permite criar recursos de whitelists para o lado do cliente utilizado pela aplicação Web. Por exemplo: JavaScript, CSS, imagens e etc. CSP via cabeçalho HTTP especial instrui o Browser para executar somente ou “renderizar” recursos desta fonte. Por exemplo, o cabeçalho CSP abaixo permite conteúdo apenas de um domínio, o seu domínio próprio e subdomínios: Content-Security-Policy: default-src 'self' *.mydomain.com 5. Determinar se o sistema suporta conjuntos de caracteres estendidos UTF-8 e, em caso afirmativo, validar após efetuar a descodificação UTF-8; 6. Validar todos os dados provenientes dos clientes antes do processamento, incluindo todos os parâmetros, campos de formulários, conteúdos das URLs e cabeçalhos HTTP, como, por exemplo, os nomes e os valores dos Cookies; 7. Cuidado com os erros de conversão. As entradas devem ser decodificadas e convertidas para a representação interna corrente antes de ser validada. Certifique-se que sua aplicação não decodifica a mesma entrada duas vezes. Tais erros podem ser usados para ultrapassar esquemas de whitelist pela introdução de entradas perigosas após serem checados. 09/04/15 Pág: 30 Baseline de Análise de Risco em Fornecedores 5.8. 5.7.1. EXEMPLOS http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-4206 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2005-3966 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-5204 5.7.2. REFERÊNCIAS CWE: CWE-79, Cross-Site scripting (XSS) WASC Threat Classification: http://www.webappsec.org/projects/threat/classes/crosssite_scripting.shtml OWASP – Cross Site Scripting: http://www.owasp.org/index.php/Cross_Site_Scripting OWASP – Testing for XSS, http://www.owasp.org/index.php/Testing_for_Cross_site_scripting OWASP Stinger Project (A Java EE validation filter) http://www.owasp.org/index.php/Category:OWASP_Stinger_Project OWASP PHP Filter Project: http://www.owasp.org/index.php/OWASP_PHP_Filters OWASP Encoding Project: http://www.owasp.org/index.php/Category:OWASP_Encoding_Project Klein, A., DOM Based Cross Site Scripting: http://www.webappsec.org/projects/articles/071105.shtml Fortify Javascript Hijacking: http://james.padolsey.com/wp-content/uploads/javascript_hijacking.pdf OWASP Enterprise Security API: http://www.owasp.org/index.php/ESAPI 5.7.3. REVISÃO DE CÓDIGO OWASP XSS https://www.owasp.org/index.php/Reviewing_Code_for_Cross-Site_Scripting REFERÊNCIA DIRETA INSEGURA A OBJETOS Uma referência direta a um objeto acontece quando um desenvolvedor expõe uma referência a um objeto de implementação interna, como por exemplo, um arquivo, diretório, registro na base de dados ou chave, uma URL ou um parâmetro de um formulário. Um atacante pode manipular diretamente referências a objetos para acessar outros objetos sem autorização, a não ser que exista um mecanismo de controle de acesso. 1. Uso de referência indireta a objetos por usuário ou sessão. Isso impede que o atacante atinja diretamente os recursos não autorizados. Por exemplo, em vez de utilizar a chave de banco de dados do recurso, uma lista de seis recursos autorizados para o usuário atual poderia utilizar os números de 1 a 6 para indicar qual valor o usuário selecionou. A aplicação tem que mapear as referências indiretas por usuário de volta para a chave do banco de dados real no servidor; 09/04/15 Pág: 31 Baseline de Análise de Risco em Fornecedores 2. Verificar o acesso. Cada utilização de uma referência direta a objeto de uma origem não confiável deve incluir uma verificação de controle de acesso para garantir que o usuário está autorizado para o objeto requisitado; 3. Garantir o controle de autorização em todas as requisições, inclusive em scripts do lado servidor; 4. Se for permitida a existência de sessões autenticadas por longos períodos de tempo, fazer a revalidação periódica da autorização do usuário para garantir que os privilégios não foram modificados e, caso tenham sido, realizar o registro em log do usuário e exigir nova autenticação; 5. Verificar a integridade de parâmetros para verificar quais parâmetros não foram mudados. Essa verificação de integridade pode ser adicionada como um parâmetro adicional utilizando criptografia ou técnicas de hashing; 6. A melhor solução é usar um valor de índice ou um mapa de referência para prevenir ataques de manipulação de parâmetro. 7. Outra solução é verificar a integridade de parâmetros para verificar quais parâmetros não foram mudados. Essa verificação de integridade pode ser adicionada como um parâmetro adicional utilizando criptografia ou técnicas de hashing. 5.9. 5.8.1. EXEMPLOS http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-0329 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-4369 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2005-0229 5.8.2. REFERÊNCIAS CWE: CWE-22 (Path Traversal), CWE-472 (Web Parameter Tampering) WASC Threat Classification: http://www.webappsec.org/projects/threat/classes/abuse_of_functionality.shtml http://www.webappsec.org/projects/threat/classes/insufficient_authorization.shtml OWASP Testing Guide: https://www.owasp.org/index.php/Testing_for_business_logic https://www.owasp.org/index.php/Testing_Directory_traversal/file_include_(OTG-AUTHZ001) GST Assist attack details: http://www.abc.net.au/7.30/stories/s146760.htm INFRAESTRUTURA E AMBIENTE As recomendações primárias são para estabelecer todas as medidas: 1. Um processo de hardening recorrente que torne fácil e rápido de implantar outro ambiente que está devidamente blindado. Ambientes de desenvolvimento, controle de qualidade e produção devem ser todos configurados de forma idêntica (com senhas diferentes usadas em cada ambiente). Este processo deve ser automatizado para minimizar o esforço necessário para configurar um novo ambiente seguro; 09/04/15 Pág: 32 Baseline de Análise de Risco em Fornecedores 2. Certifique-se de que a plataforma de back-end (servidor) está funcionando com uma configuração blindada (hardening) com os últimos patches de segurança aplicados no SO, Web Server e outros componentes de aplicação. 3. Um processo para se manter a par e implantar todas as novas atualizações e correções de software em tempo hábil e para cada ambiente. Este processo, deve incluir todas as bibliotecas de código; 4. Uma arquitetura de aplicação forte que forneça a separação segura e eficaz entre os componentes; 5. Considere executar varreduras e fazer auditorias periodicamente para ajudar a detectar erros futuros de configuração ou correções ausentes; 6. Verificar o acesso. Cada utilização de uma referência direta a objeto de uma origem não confiável deve incluir uma verificação de controle de acesso para garantir que o usuário está autorizado para o objeto requisitado; 7. Criar uma Política de Controle de Acesso para documentar as regras de negócio da aplicação, tipos de dados e critérios ou processos de autorização para que os acessos possam ser devidamente concedidos e controlados. Isto inclui identificar requisitos de acessos, tanto para os dados, como para os recursos do sistema; 8. As contas de serviço ou contas de suporte a conexões provenientes ou destinadas a serviços externos devem possuir o menor privilégio possível; 9. Usar mecanismos de tratamento de erros que não mostrem informações de depuração (debug) ou informações da pilha de exceção; 10. Usar mensagens de erro genéricas e páginas de erro personalizadas; 11. O tratamento de erros lógicos associados com os controles de segurança devem, por padrão, negar o acesso; 12. Todos os controles de log devem ser implementados em um sistema confiável, por exemplo, centralizar todo o processo no servidor; 13. Não armazenar informações sensíveis nos registros de logs, como detalhes desnecessários do sistema, identificadores de sessão e senhas; 14. Remover aplicações desnecessárias e documentação do sistema que possam revelar informações importantes para os atacantes; 15. Desativar a listagem de diretórios; 16. Definir quais métodos HTTP, GET ou POST, a aplicação irá suportar e se serão tratados de modo diferenciado nas diversas páginas da aplicação; 17. Desativar as extensões HTTP desnecessárias como, por exemplo, o WebDAV. Caso seja necessário o uso de alguma extensão HTTP com o propósito de suportar a manipulação de arquivos, utilize um mecanismo de autenticação conhecido, padronizado e bem testado; 18. Remover informações desnecessárias presentes nos cabeçalhos de resposta HTTP e que podem estar relacionadas com o sistema operacional, versão do servidor web e frameworks de aplicação; 09/04/15 Pág: 33 Baseline de Análise de Risco em Fornecedores 19. Servidores que recebem qualquer conexão da Internet, por exemplo http ou https, não devem possuir aplicações ou acessos liberados para que esses efetuem conexões de saída à Internet ou qualquer rede pública. 20. Deve ser implementada apenas uma função principal por componente, host virtual ou host físico. Temos que garantir que servidores desempenharão somente uma função principal da aplicação garantindo arquitetura “componentizada” e segurança em camadas. 21. Levar em consideração a construção de um ambiente Sandbox (separado da infra em produção) para integração de parceiros. 22. A arquitetura deve ser concebida de forma a garantir o deployment dinâmico e sem interrupção do serviço durante os deliveries (exemplo: stick balance entre front-end e back-end). 23. Garantir o isolamento de ambientes de desenvolvimento, homologação e produção, bem como dos serviços corporativos. Isso quer dizer que os dados não podem ser compartilhados entre as redes e tampouco transferidos. 24. Assegure que as comunicações entre os elementos da infraestrutura, como servidores de web e sistemas de banco de dados, estão propriamente protegidas pelo uso de camadas de transporte de segurança ou de criptografia de nível de protocolo para credenciais e informações de valor intrínseco. 5.9.1. LOGS PARA AUDITORIA 1. As aplicações devem logar todos os eventos de segurança relevantes configurados pelo administrador, para o seu próprio log seguro de auditoria/eventos ou serviço de logs centralizado, ou transmitir esses dados de forma segura para uma facilidade de coleta de auditoria externa; 2. A funcionalidade de auditoria usada pela aplicação deve permitir que o administrador selecione os eventos que serão logados e a informação que será capturada sobre cada evento; 3. A facilidade de auditoria utilizada pela aplicação deve anexar a identificação individual do usuário causador - ou associado com a causa, do evento de auditoria para o registro de auditoria daquele evento; 4. Os controles de acesso utilizados pela aplicação devem proibir ler, escrever, excluir, executar, mover ou copiar os dados de auditoria de acesso da aplicação por processos ou usuários não autorizados; 5. Todos os acessos aos relatórios devem ser registrados em log; 6. Todas as tentativas de login ao banco de dados, que falharem, deverão se logadas; 7. Uma das coisas mais importantes de se implantar é um log de auditoria para controles de autenticação e autorização. Devemos ser capazes de responder facilmente as seguintes questões: Quem logou, quando, qual origem, que transações foram executadas e que dados foram acessados? 5.10. ARMAZENAMENTO CRIPTOGRÁFICO INSEGURO 09/04/15 Pág: 34 Baseline de Análise de Risco em Fornecedores Os perigos da criptografia insegura, o uso de TLS/SSL e proteção de dados estão muito além das informações descritas nesse documento. Dito isto, no mínimo, faça todas as recomendações: 1. Considerando que você pretende proteger os dados de ameaças (como por exemplo, ataque interno ou de usuário externo), tenha a certeza de criptografar todos os dados sensíveis em repouso e em trânsito de uma forma que iniba estas ameaças; 2. Não armazene dados sensíveis desnecessariamente. Descarte-os o mais rápido possível. Dados que você não tem não podem ser roubados; 3. Certifique-se que o nível utilizado nos algoritmos e chaves são fortes, e que o gerenciamento de chaves está aplicado adequadamente. Considere utilizar os módulos criptográficos validados do FIPS-140-2; 4. Desabilite o auto completar em formulários de coleta de dados sensíveis e desabilite o cache em páginas que contenham dados sensíveis; 5. Se a aplicação gerenciar um repositório de credenciais, esta deverá garantir que as senhas são armazenadas na base de dados somente sob a forma de resumo/hash da senha na forma de one-way salted hashes e que a tabela/arquivo que armazena as senhas e as próprias chaves são manipuladas apenas pela aplicação; 6. Desativar a funcionalidade de auto completar nos formulários que contenham informações sensíveis, inclusive no formulário de autenticação; 7. Desativar o cache realizado no lado cliente das páginas que contenham informações sensíveis. O parâmetro Cache-Control: no-store, pode ser usado em conjunto com o controle definido no cabeçalho HTTP “Pragma: no-cache”, que é menos efetivo, porém compatível com HTTP/1.0; 8. Toda aplicação que requeira uso de criptografia deve garantir a validação de certificados, recusando e não utilizando certificados inválidos, auto-assinados ou revogados. As aplicações que requerem uso de criptografia devem garantir que as validações e revogações dos certificados sejam sempre realizadas corretamente. 9. Não crie algoritmos de criptografia. Somente use algoritmos aprovados publicamente como, AES, Criptografia de chaves publicas RSA, SHA-256 ou melhores para hash. 10. Não use algoritmos fracos, como MD5/SHA1. Use mecanismos mais seguros como SHA-256 ou melhores. 11. Hashing não é criptografia. Se um atacante souber qual algoritmo de hashing está sendo usado, ele pode fazer um ataque de força bruta para crackear o valor do hash. 12. Crie chaves offline e armazene chaves privadas e simétricas com extremo cuidado. Nunca transmita chaves privadas ou simétricas em canais inseguros. 13. As chaves de criptografia das informações devem ser de propriedade e administração do Itaú Unibanco. 5.10.1. EXEMPLOS http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-6145 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2005-1664 09/04/15 Pág: 35 Baseline de Análise de Risco em Fornecedores 5.11. 5.10.2. REFERÊNCIAS CWE: CWE-311 (Failure to encrypt data), CWE-326 (Weak Encryption), CWE-321 (Use of hard-coded Cryptographic key), CWE-325 (Missing Required Cryptographic Step) OWASP: https://www.owasp.org/index.php/Guide_to_Cryptography OWASP Guide: http://www.owasp.org/index.php/Insecure_Storage https://www.owasp.org/index.php/How_to_protect_sensitive_data_in_URL%27s PCI Data Security Standard: https://www.pcisecuritystandards.org/pdfs/pci_dss_portuguese.pdf Bruce Schneier: http://www.schneier.com/ CryptoAPI Next Generation: http://msdn2.microsoft.com/en-us/library/aa376210.aspx FALHAS AO RESTRINGIR ACESSO A URLs Segurança por obscuridade não é suficiente para proteger dados e funções sensíveis em uma aplicação. Verificações de controles de acesso devem ser executadas antes de permitir uma solicitação a uma função sensível, na qual garante que somente o usuário autorizado acesse a respectiva função. O principal método de ataque para esta vulnerabilidade é chamado de navegação forçada (Forced browsing), na qual envolve técnicas de adivinhação de links (Guessing) e força bruta (Brute force), para achar páginas desprotegidas. É comum que aplicações utilizem códigos de controle de acesso por toda a aplicação, resultando em um modelo complexo que dificulta a compreensão para desenvolvedores e especialistas em segurança. Esta complexidade torna provável a ocorrência de erros e algumas páginas não serão validadas, deixando a aplicação vulnerável.Veja abaixo alguns métodos para proteger a aplicação: 1. Tendo o tempo para planejar a autorização criando uma matriz para mapear as regras e as funções da aplicação é o passo primordial para alcançar a proteção contra acessos não autorizados. 2. Aplicações web devem garantir controle de acesso em todas as URLs e funções de negócio. Não é suficiente colocar o controle de acesso na camada de apresentação e deixar a regra de negócio desprotegida. Também não é suficiente verificar uma vez o usuário autorizado e não verificar novamente nos passos seguintes. 3. Garanta que a matriz do controle de acesso é parte do negócio, da arquitetura e do design da aplicação 4. Garanta que todas URLs e funções de negócio são protegidas por um mecanismo de controle de acesso efetivo que verifique as funções e direitos do usuário antes que qualquer processamento ocorra. 5. Certifique-se que este processo é realizado em todos os passos do fluxo e não apenas no passo inicial de um processo, pois pode haver vários passos a serem verificados. 09/04/15 Pág: 36 Baseline de Análise de Risco em Fornecedores 6. Preste muita atenção em arquivos de includes/bibliotecas, especialmente se eles possuem extensões executáveis como php. Sempre que possível, devem ser mantidos fora da raiz web. Devem ser verificados se não estão sendo acessados diretamente, por exemplo, verificando por uma constante que pode somente ser criada pelo requisitante de uma biblioteca. 7. Não suponha que usuários não estarão atentos ao acessar URLs ou APIs escondidas ou especiais. Sempre se assegure que ações com privilégios altos e administrativos estarão protegidas. 8. Bloqueie acesso a todos os tipos de arquivos que a sua aplicação não deva executar. Este filtro deve seguir a abordagem accept known good na qual apenas são permitidos tipos de arquivos que a aplicação deva executar, como por exemplo .html .pdf, .php. Isto irá bloquear qualquer tentativa de acesso a arquivos de log, arquivos XML, entre outros, aos quais se espera nunca serem executados diretamente. 9. Configure uma política de segurança e habilite o Java Security Manager. 10. Mantenha o antivírus e as correções de segurança atualizadas para componentes como processadores XML, processadores de texto, processadores de imagem, entre outros que manipulam arquivos fornecidos por usuários. 5.12. 5.11.1. EXEMPLOS http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-0207-0147 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-0131 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-1227 5.11.2. REFERÊNCIAS CWE: CWE-325 (Direct Request), CWE-288 (Authentication Bypass by Alternate Path), CWE-285 (Missingor Inconsistent Access Control) WASC Threat Classification: http://www.webappsec.org/projects/threat/classes/predictable_resource_location.shtml OWASP: http://www.owasp.org/index.php/Forced_browsing OWASP Guide: http://www.owasp.org/index.php/Guide_to_Authorization COMO EVITAR CROSS-SITE REQUEST FORGERY (CSRF) Um ataque CSRF força o navegador logado da vítima a enviar uma requisição para uma aplicação web vulnerável, que realiza a ação desejada em nome da vítima. 1. A prevenção de um CSRF geralmente requer a inclusão de um token imprevisível em cada requisição HTTP. Tais tokens devem, no mínimo, ser únicos por sessão de usuário. 2. A opção preferida consiste em incluir um token único em um campo oculto. Isso faz com que o valor seja enviado no corpo da requisição HTTP, evitando-se a sua inserção na URL, que é mais propensa a exposição. 09/04/15 Pág: 37 Baseline de Análise de Risco em Fornecedores 3. O token único pode ser incluído na própria URL, ou em parâmetros da URL. Contudo, tal posicionamento corre um risco maior já que a URL será exposta ao atacante, comprometendo assim o token secreto. 4. Exigir que o usuário autentique novamente, ou provar que são realmente um usuário (por exemplo, através de CAPTCHA) também pode proteger contra CSRF. 5. Não use requisições GET (URLs) para dados sensíveis ou para realizar transações de valores. Use somente métodos POST quando processar dados sensíveis do usuário. Entretanto, a URL pode conter token randômico à medida que este cria uma URL única, que torna o CSRF quase impossível de se realizar. 6. Verifique o Content-Type para proteger chamadas para funções AJAX e web services. 7. Mesmo o cabeçalho HTTP Referer podendo ser spoofado, verificar o Referer é uma boa prática para detectar tentativas de hacking. 5.13. 5.12.1. EXEMPLOS http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-0192 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-5116 5.12.2. REFERÊNCIAS CWE: CWE-352 (Cross-Site Request Forgery) WASC Threat Classification: No direct mapping, but the following is a close match: http://www.webappsec.org/projects/threat/classes/abuse_of_functionality.shtml OWASP CSRF: http://www.owasp.org/index.php/Cross-Site_Request_Forgery OWASP Testing Guide: https://www.owasp.org/index.php/Testing_for_CSRF_(OTG-SESS-005) OWASP CSRF Guard and PHP CSRF Guard: http://www.owasp.org/index.php/CSRF_Guard http://www.owasp.org/index.php/PHP_CSRF_Guard RSnake, "What is CSRF?": http://ha.ckers.org/blog/20061030/what-is-csrf/ Microsoft, ViewStateUserKey details: http://msdn2.microsoft.com/enus/library/ms972969.aspx#securitybarriers_topic2 5.12.3. REVISÃO DE CÓDIGO OWASP – CSRF https://www.owasp.org/index.php/Reviewing_Code_for_Cross-Site_Request_Forgery REDIRECIONAMENTOS E ENCAMINHAMENTOS INVÁLIDOS Evitar tais falhas é extremamente importante já que elas são o alvo favorito de phishers tentando obter a confiança do usuário.Uso seguro de redirecionamentos e encaminhamentos pode ser feito de várias formas: 1. Simplesmente evitar usá-los; 09/04/15 Pág: 38 Baseline de Análise de Risco em Fornecedores 2. Se forem usados, não envolva parâmetros de entrada do usuário no cálculo do destino. Normalmente, isto pode ser feito; 3. Se os parâmetros de destino não podem ser evitados, tenha certeza que o valor fornecido é válido, e autorizado para o usuário; 4. Recomenda-se que qualquer parâmetro de destino seja um valor mapeado, e não a URL real ou parte dela, e que o código do lado do servidor traduza este mapeamento para a URL de destino. Aplicações podem usar ESAPI para substituir o método sendRedirect() para certificarem-se de que todos os destinos do redirecionamento são seguros. 5.14. 5.13.1. EXEMPLOS https://cwe.mitre.org/data/definitions/601.html 5.13.2. REFERÊNCIAS Open Redirect https://www.owasp.org/index.php/Open_redirect WASC Threat Classification: URL Redirector Abuse: http://projects.webappsec.org/w/page/13246981/URL%20Redirector%20Abuse EVITANDO O BUFFER OVERFLOWS/OVERRUNS Os itens a seguir devem ser observados quanto ao desenvolvimento de aplicações que irão lidar com a leitura de dados e transferi-los para buffers de memória: 1. Use tratamento de buffers e funções de string seguras sempre que necessitar transferir dados aos mesmos; 2. Ative qualquer defesa do sistema operacional para a pilha de execução, como a prevenção de parâmetros da pilha de execução no Solaris, Data Execution Prevention (DEP) no Windows e PaX para Linux; 3. Utilizar técnicas de endereço randômico (ASLR) para reduzir a possibilidade de execução depois de um estouro de buffer; 4. Se C++ estiver sendo utilizado, sempre que possível substituir qualquer função de string de baixo nível em C, por classes de string atualizadas em C++; 5. Verificar os limites do buffer caso as chamadas à função sejam realizadas em ciclos e verificar se não há nenhum risco de ocorrer gravação de dados além do espaço reservado; 6. Liberar a memória alocada de modo apropriado após concluir a sub-rotina (função/método) e em todos pontos de saída; 7. Verificar o conteúdo, formato e tamanho da entrada de dados. 8. Ao fazer cópias de posições de memória, verificar se o destino é capaz de conter toda a origem. 5.14.1. REFERENCIA 09/04/15 Pág: 39 Baseline de Análise de Risco em Fornecedores CWE-122 (Heap-based Buffer Overflow): https://cwe.mitre.org/data/definitions/122.html CWE-121 (Stack-based Buffer Overflow): https://cwe.mitre.org/data/definitions/121.html WASC - Buffer Overflow : http://projects.webappsec.org/w/page/13246916/Buffer%20Overflow OWASP Buffer Overflow: https://www.owasp.org/index.php/Buffer_Overflow OWASP - Testing Guide https://www.owasp.org/index.php/Testing_for_Heap_Overflow https://www.owasp.org/index.php/Testing_for_Stack_Overflow 5.14.2. REVISÃO DE CÓDIGO OWASP - Code for Buffer Overruns and Overflows: https://www.owasp.org/index.php/Reviewing_Code_for_Buffer_Overruns_and_Overflows 5.15. TRATAMENTO DE DADOS CONTRA INTEGER AND ARITHMETIC OVERFLOWS Os itens a seguir devem ser observados no desenvolvimento de aplicativos que lidam com as operações aritméticas e manipulação de números inteiros: 1. Validar os resultados que vão decidir sobre a alocação de memória para garantir que o resultado está no intervalo, antes de realizar as alterações de memória; 2. Evitar utilizar tipos inteiros para os limites de matriz que definem o tamanho da memória de dados; 3. Validar todas as operações que resultarão na identificação dos índices a serem utilizados, para garantir que eles estão dentro da faixa esperada; 5.15.1. EXEMPLOS http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-2192 http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-2191 http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-2063 5.15.2. REFERÊNCIAS CWE-190: Integer Overflow or Wraparound https://cwe.mitre.org/data/definitions/190.html OWASP - Integer overflow: https://www.owasp.org/index.php/Integer_overflow WASC Threat Classification – Integer Overflows: http://projects.webappsec.org/w/page/13246946/Integer%20Overflows Standard for Binary Floating-Point Arithmetic: http://grouper.ieee.org/groups/754/ 09/04/15 Pág: 40 Baseline de Análise de Risco em Fornecedores 5.16. FORMAT SPRING NÃO CONTROLADA Os itens a seguir devem ser observados no desenvolvimento de aplicações que irão lidar com a formatação de sequências de entrada do usuário: 1. Definir a formatação de strings estáticas, sempre que possível, não confiando na entrada do usuário; 2. Se a entrada do usuário é necessária, validar e restringir o tipo de dados inseridos, considerando todos os caracteres de escape ou quaisquer outros símbolos indesejados como inválidos; 3. Revisar dados de internacionalização provenientes de arquivos externos ou informações de log sendo capturadas para entradas inválidas; 5.17. 5.16.1. EXEMPLOS https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2014-9157 5.16.2. REFERÊNCIAS CWE-134 - Uncontrolled Format String https://cwe.mitre.org/data/definitions/134.html OWASP Testing for Format String: https://www.owasp.org/index.php/Testing_for_Format_String OWASP Format string attack: https://www.owasp.org/index.php/Format_string_attack CONDIÇÕES DE CONCORRÊNCIA Os itens a seguir devem ser observados quanto ao desenvolvimento de aplicativos que lidam com recursos globais ou multithreading (multi-processamento), que podem acabar causando condições de concorrência. Uma race condition ocorre quando um par de chamadas de rotina em uma aplicação não executam em modo sequencial, sobrepujando as regras de negócio. É um evento dentro do software que pode se tornar uma vulnerabilidade de segurança se as chamadas não são executadas na ordem correta. 1. Evitar o máximo possível usar os recursos globais ou arquivos que também estão em uso por outros aplicativos que você não tem controle; 2. Sempre bloquear ou impedir que outros acessem o recurso global no momento em que sua aplicação irá lidar com ela; 3. Evitar criar arquivos temporários em pastas graváveis e impor o uso de nomes aleatórios para a criação de tais arquivos; 4. Utilizar mecanismos de bloqueio para evitar requisições simultâneas para a aplicação ou utilizar um mecanismo de sincronização para evitar condições de concorrência; 09/04/15 Pág: 41 Baseline de Análise de Risco em Fornecedores 5. Implementar de alguma forma um mecanismo de bloqueio no código que altera ou lê dados persistentes. 6. Criar checagens de sanidade no recurso bloqueado. Se não houver mecanismos de bloqueio, usar flags para impor seu próprio esquema de bloqueio quando os recursos estão sendo usados por outras threads em execução. 7. Garantir que o bloqueio ocorre antes da execução, ao invés de depois dela. 5.17.1. REFERÊNCIAS CWE-362- Concurrent Execution using Shared Resource with Improper Synchronization https://cwe.mitre.org/data/definitions/362.html CWE-364 – Signal Handler Race Condition https://cwe.mitre.org/data/definitions/364.html CWE-368 – Context Switching Race Condition https://cwe.mitre.org/data/definitions/368.html CWE-366 – Race Condition within a Thread https://cwe.mitre.org/data/definitions/366.html OWASP Testing Guide – Race Condititions: https://www.owasp.org/index.php/Testing_for_Race_Conditions_%28OWASP-AT-010%29 5.17.2. REVISÃO DE CÓDIGO OWASP Reviewing Code for Race Conditions: https://www.owasp.org/index.php/Reviewing_Code_for_Race_Conditions 5.18. COMUNICAÇÕES INSEGURAS A criptografia, geralmente TLS/SSL, deve ser usada em todas as conexões autenticadas, especialmente páginas web com acesso via internet, mas também conexões com o backend. Os itens a seguir devem ser observados quanto ao desenvolvimento de aplicativos que devem enviar informações sobre a rede: 1. Evitar o uso de protocolos sem criptografia (SMTP, FTP, POP3, IMAP, SNMP e HTTP) para enviar dados através da rede; 2. Usar métodos conhecidos de criptografia como SSL e TLS para a transmissão de informações confidenciais, evitando criar seu próprio código de criptografia; 3. Utilizar um mecanismo de autenticação forte para a identificação de clientes e servidores, para garantir a identidade de ambas as partes de ambos os lados. Se estiver usando protocolos conhecidos como SSL ou IPSec, o protocolo em si já fornece os meios para realizar essa autenticação, utilizar certificados; 4. Filtrar os parâmetros que contenham informações sensíveis, provenientes do “HTTP referer”, nos links para sites externos; 5. Utilizar um padrão único de implementação TLS configurado de modo apropriado; 09/04/15 Pág: 42 Baseline de Análise de Risco em Fornecedores 6. Quando ocorrer alguma falha nas conexões TLS, o sistema não deve fornecer uma conexão insegura; 7. Os certificados TLS devem ser válidos, possuírem o nome de domínio correto, não estarem expirados e serem instalados com certificados intermediários, quando necessário; 8. Quando utilizar TLS/SSL, o faça para toda a sessão. Proteger somente as credenciais de logon é insuficiente porque dados e informações da sessão também devem estar criptografados. Garanta esse controle implementando o HSTS (HTTP Strict Transport Security). 9. Assegure que as comunicações entre os elementos da infra-estrutura, como servidores de web e sistemas de banco de dados, estão propriamente protegidas pelo uso de camadas de transporte de segurança ou de criptografia de nível de protocolo para credenciais e informações de valor intrínseco. 5.18.1. EXEMPLOS http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-6430 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2005-4704 http://www.schneier.com/blog/archives/2005/10/scandinavian_at_1.html 5.18.2. REFERÊNCIAS CWE: CWE-311 (Failure to encrypt data), CWE-326 (Weak Encryption), CWE-321 (Use of hard-coded cryptographic key), CWE-325 (Missing Required Cryptographic Step) OWASP Testing Guide, Testing for SSL / TLS, https://www.owasp.org/index.php/Testing_for_Weak_SSL/TLS_Ciphers,_Insufficient_Transp ort_Layer_Protection_(OTG-CRYPST-001) OWASP Guide: http://www.owasp.org/index.php/Guide_to_Cryptography Found stone - SSL Digger http://www.mcafee.com/br/downloads/free-tools/ssldigger.aspx 09/04/15 Pág: 43