Manual de Segurança

Requisitos obrigatórios e recomendados para utilização de Mobiles Apps, APIs e aplicações Web

Objetivo

Este documento tem por objetivo orientar o cliente quanto aos aspectos de segurança da informação obrigatórios na utilização e no desenvolvimento de softwares que utilizarão os serviços do Bankly.

A segurança da informação depende da implementação destes requisitos de segurança, que precisam ser adotados em todas as formas de integração com os serviços Bankly

Abrangência

Este documento abrange todo e qualquer processo de utilização das APIs Bankly através de sistemas mobile, middlewares que acessem nossas APIs diretamente ou aplicações web que integrem com nossos serviços, bem como os softwares adquiridos ou desenvolvidos pelos nossos clientes e seus parceiros que utilizam os serviços Bankly.

Requisitos de segurança

1. Requisitos de segurança para aplicações mobile

1.1 Resumo dos requisitos

Os aplicativos móveis, ou mobile application, e outros sistemas relacionados que utilizam o Bankly devem seguir requisitos de segurança previstos pelo Bacen para prevenir: descompilação de software, manipulação de código, modificação de credenciais ou parâmetros de segurança, dentre outras técnicas que resultem na adulteração ou comprometimento da segurança.

Também é necessário que haja um controle de mTLS, para garantir que a comunicação seja cifrada e ocorra apenas com as APIs e aplicativos identificados pela empresa (parceiro).

O uso de mTLS garante a autenticação mútua de conexões entre serviços. Os serviços que enviam e recebem as mensagens trocam certificados de uma Autoridade de Certificação (CA) mutuamente confiável. Esses certificados provam a identidade de um serviço para o outro, evitando, assim, ataques man-in-the-middle, onde um invasor pode redirecionar e alterar o conteúdo da troca de mensagens, ou qualquer manipulação da comunicação. Com o uso do mTLS, é possível executar a validação da origem da comunicação, bem como garantir a segurança de nossos clientes, utilizando um canal criptografado, e a autenticidade, com base no certificado do cliente.

1.2. Descrição dos requisitos

A seguir, detalhamos o processo de homologação e requisitos de segurança necessários para utilização dos serviços do Bankly:

  • Criptografia na comunicação entre o cliente e o sistema de APIs/servidor;
  • Autenticação forte do cliente;
  • Mecanismos que impeçam engenharia reversa do aplicativo;
  • Controles que garantam o fornecimento das informações estritamente necessárias ao cliente final, a fim de evitar exposição dos dados pessoais e bancários de seus clientes.

1.2.1 Detalhamento dos Requisitos

Criptografia na comunicação entre o cliente e o sistema de APIs/servidor

Adotar um canal seguro entre o cliente e a API/servidor, como a utilização de pinning de certificado, criptografia do trânsito de comunicação e outros mecanismos que garantam a confidencialidade das informações trafegadas entre as partes.

Autenticação forte do cliente

  • Garantir que os clientes da API sejam apenas os autorizados para uso;
  • Impedir ataques de man-in-the-middle;
  • Impedir comprometimento e utilização indevida de contas e logins do cliente com um mecanismo mínimo de dois fatores de autenticação ou MFA, utilizando provedores de credenciais diferentes, mecanismos de recuperação distintos e fatores de validação de autenticidade dos clientes que utilizam o aplicativo;
  • Identificar o device (cliente) e restringir sua utilização em um único dispositivo. A adoção de um mecanismo de identificação única ou “device fingerprint”, como é conhecido, é extremamente importante para garantir a correta identificação do dispositivo e de seu cliente, assegurando a sua autenticidade no sistema interno e o monitoramento dos comportamentos fraudulentos e anomalias financeiras.

Mecanismos que impeçam a engenharia reversa do aplicativo

Garantir a engenharia reversa dos aplicativos. Na prática, consiste em realizar alguns controles de segurança correlacionados, a fim de prevenir a adulteração e a manipulação indevida do aplicativo em suas diversas camadas. Tais controles de segurança são:

  • Ofuscação e criptografia do código em todo aplicativo e seus recursos a fim de evitar a leitura em texto claro do seu código;
  • Técnicas de anti-tampering: proteção contra adulteração ou manipulação do aplicativo;
  • Proteção anti-debug: proteção contra depuração do aplicativo por agentes maliciosos, para modificar seu comportamento em tempo de execução;
  • Monitoração e prevenção do ataque de root detection: proteção e monitoração no desbloqueio de um dispositivo Android para acessar controles administrativos privilegiados superiores;
  • Proteção emulator detection: proteção contra a utilização de emuladores de dispositivos móveis que realizam testes e engenharia reversa para fins maliciosos;
  • Proteção anti-hooking: proteção contra hooking em aplicativos utilizando ferramentas famosas, como Frida e Objection. São técnicas usadas para alterar o comportamento de um sistema operacional, de aplicativos ou de outros componentes de software, interceptando chamadas de função, mensagens ou eventos passados entre componentes de software.

Controles que garantam o fornecimento das informações estritamente necessárias ao cliente final

Atendendo aos princípios de proteção de dados pessoais previstos na Lei Geral de Proteção de Dados (LGPD), deve-se garantir que o aplicativo não receba ou armazene informações confidenciais desnecessárias do cliente, expondo, assim, seus dados.

Quando necessário, tais informações devem ser exibidas para o usuário de maneira segura e não devem ser armazenadas no dispositivo após serem consumidas, depois do encerramento da sessão ou do fechamento do aplicativo.

Glossário

2 Fatores de autenticação: utiliza-se o mesmo princípio do MFA, porém com restrição a apenas dois tipos de autenticação, que são realizadas por provedores de autenticação distintos, como o envio de uma senha temporária por e-mail e a utilização de um mecanismo TOTP juntamente com a senha de conhecimento do usuário.

Assinatura digital: modelo criptográfico digital que garante a integridade e o não repúdio das transações e mensagens realizadas em um sistema digital.

Ataque man-in-the-middle: é um nome genérico para qualquer ataque virtual em que um hacker intermedia a comunicação entre um usuário e outra parte envolvida, como sites de bancos, logins, e-mails ou redes sociais. Neste tipo de ameaça, o invasor se posiciona entre duas partes de uma comunicação, interceptando mensagens enviadas e passando-se por uma das partes envolvidas. É uma forma de interceptar dados.

Descompilação: descompilar é o processo de conversão de código legível por computador em código-fonte legível para humanos. Descompilar é o reverso da compilar.

Device fingerprint: também conhecido como impressão digital do dispositivo, é um conjunto de técnicas que permite a identificação única de um celular, computador ou sistema digital que está se comunicando.

Hooking: abrange uma série de técnicas usadas para alterar o comportamento de um sistema operacional, de aplicativos ou de outros componentes de software, interceptando chamadas de função, mensagens ou eventos passados entre componentes de software. O código que trata dessas chamadas de função, eventos ou mensagens interceptadas é chamado de hooking.

Impacto: é o efeito negativo perceptível para o negócio, resultante da ocorrência de um evento indesejável, que, por sua vez, é o resultado de uma ou mais vulnerabilidade(s) explorada(s).

Integridade: é a garantia de que as informações são precisas, completas e válidas, e que não foram alteradas por uma ação não autorizada.

MFA (autenticação multifator): tem por objetivo adicionar uma camada de proteção ao processo de entrada. Os usuários fornecem uma verificação de identidade adicional ao acessar contas ou aplicativos, como a leitura de uma impressão digital, a adição de um código recebido por telefone ou a utilização de um processo de TOTP, que possibilita o uso de senhas randômicas e temporizadas.

Práticas de criptografia: conjunto de controles que garantem que as operações de criptografia dentro da aplicação sejam executadas de modo seguro.

Requisitos de segurança: conjunto de requisitos funcionais e de projetos que ajudam a garantir que o software seja construído e implantado de forma segura, a fim de evitar tentativas de utilização maliciosa e ataques cibernéticos.

Segurança das comunicações: conjunto de controles que ajudam a garantir o envio e o recebimento das informações de modo seguro, respeitando sua confidencialidade e integridade.

Tratamento de erros e log: conjunto de práticas que garantem que a aplicação realiza o tratamento dos erros de modo seguro, como também realiza de modo apropriado o registro de log dos eventos.

Tratamento dos dados: é o processo de tornar seguros os dados potencialmente prejudiciais através de remoção, substituição, codificação ou escaping dos caracteres.

Validação de entrada de dados: é o conjunto de controles que verificam se as propriedades de todas as entradas de dados correspondem ao que é esperado pela aplicação, como tipo dos dados, tamanho, intervalos e conjunto de caracteres aceitáveis que não contenham caracteres maliciosos.

Vulnerabilidade: é uma fragilidade que torna o sistema suscetível a ataques ou danos.

Referências

Boas práticas de segurança - Android - https://developer.android.com/topic/security/best-practices

Boas práticas de segurança - iOS - https://developer.apple.com/documentation/security

Criptografia na comunicação - https://cheatsheetseries.owasp.org/cheatsheets/Transport_Layer_Protection_Cheat_Sheet.html

MFA e 2 factors -https://cheatsheetseries.owasp.org/cheatsheets/Multifactor_Authentication_Cheat_Sheet.html

mTLS - https://datatracker.ietf.org/doc/html/rfc8705

oAuth2.0 - https://datatracker.ietf.org/doc/html/rfc6749