Se costuma viajar nos transportes públicos do Grande Porto, é bastante provável que já tenha ouvido falar na Anda. Esta app permite aos aderentes do sistema intermodal Andante viajar nos transportes públicos desta zona e usar o smartphone como substituto do bilhete físico. Gustavo Silva é um desses viajantes, mas não é um utilizador comum. É que o facto de ser engenheiro de software, trabalha na Feedzai, aliado ao gosto em encontrar vulnerabilidades de segurança no software que usa no dia-a-dia fizeram com que dedicasse particular atenção a esta aplicação.
«Comecei a investigar como a aplicação funcionava apenas porque queria perceber como era feita a interação NFC (Near Field Communication) com as máquinas de validação», explica Gustavo Silva à Exame Informática. «Ao explorar o código da aplicação é que acabei por reparar na falha de segurança que existia nas comunicações com os servidores externos», revela.
Todos os detalhes técnicos sobre a vulnerabilidade estão descrita no blog pessoal de Gustavo Silva, mas a síntese para leigos que o engenheiro faz é mais que suficiente para dar que pensar. É que a aplicação Anda comunica com um servidor dos Transportes Intermodais do Porto para executar vários tipos de ações como login, mudança de dados do perfil, obtenção de faturas, listagem de métodos de pagamento, início de viagens, registo da passagem por paragens, entre outras. A vulnerabilidade descoberta encontrava-se no protocolo de comunicação com esse servidor. As credenciais que estavam a ser utilizadas para este propósito eram as mesmas para todos os utilizadores e estavam guardadas na aplicação, de forma ofuscada. Ou seja, estas credenciais encontravam-se escondidas em todos os telemóveis que tivessem o Anda instalado. Obtendo acesso a estas credenciais, tornava-se possível fazer qualquer pedido ao servidor, tendo permissões para ver e alterar dados de qualquer conta.
Além deste problema, as credenciais de login que cada utilizador usa para iniciar sessão na aplicação encontravam-se armazenadas sem encriptação. Isto por si só não é necessariamente uma falha de segurança, mas o armazenamento de passwords sem encriptação é desaconselhado, no sentido em que estas ficam expostas caso haja alguma fuga de informação dos dados dos utilizadores, como foi o caso. Numa frase, a vulnerabilidade expunha os dados dos utilizadores, incluindo passwords não encriptadas e a possibilidade de viajar com a despesa a ser debitada no cartão bancário de outro utilizador.
Gustavo Silva reportou a falha diretamente aos responsáveis pela aplicação e ao Centro Nacional de Cibersegurança e a vulnerabilidade foi, entretanto, corrigida. Uma das soluções para sanar o problema passou por utilizar credenciais únicas para cada utilizador, em vez de apenas um conjunto utilizador + password para todos os acessos ao servidor.