Relatório de auditoria de privacidade e segurança do orbe de Worldcoin

Mar 14, 2024 5 Minute Read

O projeto Worldcoin é fundado em um compromisso com a privacidade e a segurança. Como parte desse compromisso, o contribuidor do projeto Tools for Humanity (TFH), em conjunto com a Worldcoin Foundation, contratou os respeitados especialistas em segurança da Trail of Bits para realizar uma auditoria especializada no software da Orb. Além de uma avaliação típica de segurança, a Trail of Bits se concentrou em avaliar uma série de reivindicações de privacidade e funcionalidade relacionadas à Orb. 

O relatório final está disponível aqui.

Escopo da avaliação

Trail of Bits começou sua avaliação em 14 de agosto de 2023 em uma versão de software congelada 8 de julho de 2023 com SemVer 3.0.10. A partir de 14 de março de 2024, a versão atual do software implantado nas orbs é 4.0.34 com uma data de lançamento inicial em 17 de janeiro de 2024. 

TFH forneceu uma série de alegações técnicas não exaustivas para delimitar o escopo do engajamento na tentativa de validar sua implementação. Essas alegações visaram a versão do software congelada em 8 de julho de 2023.

1. Para o fluxo de inscrição padrão de exclusão, nenhuma informação pessoalmente identificável (PII), exceto o código da íris, é coletada pelo orb.

  • Nenhuma IIP é escrita no armazenamento persistente no orb
  • Nenhuma IIP, exceto o código da íris, deixa o orb (ex. carregado)

2. Para o fluxo de cadastro padrão não-opt-in, a IIP é manipulada de forma segura pelo orb

  • A única IIP mantida no dispositivo está no SSD do orb e é criptografada de forma assimétrica*
  • A IIP criptografada de forma assimétrica armazenada no SSD do orb não pode ser descriptografada pelo Orb

3. O Orb não extrai nenhum dado sensível do dispositivo do usuário

  • A única informação que o orb coleta do telefone de um usuário está no código QR.**

4. O código da íris do usuário é manuseado de forma segura

  • O código da íris do usuário não é escrito no armazenamento persistente no orb
  • O código da íris do usuário é incluído apenas em uma única solicitação para o back-end do orb ***
  • O código da íris só pode ser enviado para servidores aprovados, e a comunicação da rede é criptografada de ponta a ponta.

* A partir da versão 4.0.XX, o orb não salva mais qualquer dado no SSD, independentemente da opção de custódia de dados.

** Na versão do software do orb 3.0.10 o código QR continha um UUID de 128 bits user_id e um data_policy bool representando a escolha de custódia de dados do usuário, e um DataCollectionConfig opcional para uso interno. Na versão de software 4.0.0, o código QR foi modificado para incluir um hash criptográfico que inclui a chave pública do usuário, chamado user_data_hash. Esse hash é usado para validar se a chave pública correta é usada ao criptografar dados para o dispositivo do usuário. 

*** Na versão de software 4.0.0, um novo recurso “Custódia Pessoal” será adicionado, onde uma cópia adicional do código da íris e biometria são criptografados diretamente para o dispositivo do usuário usando a chave pública do usuário.

Essas reivindicações foram ainda mais refinadas em objetivos específicos disponíveis no relatório final em coordenação com Trail of Bits. As aplicações do espaço do usuário do cliente do orb em Rust e seu sistema operacional baseado em Debian foram definidos como dentro do escopo desta avaliação, e os seguintes componentes foram excluídos como não aplicáveis às reivindicações originais:

  1. Configuração do Bootloader
  2. Modificações de Drivers
  3. Aplicações TrustZone
  4. Interface do elemento seguro

Uma lista exaustiva dos alvos está enumerada no relatório final.

Resultados da Avaliação

Três consultores realizaram um total de seis semanas de engenharia de revisão. Os auditores tiveram acesso completo ao código-fonte, juntamente com acesso em tempo de execução a dois orbes de avaliação. Embora o relatório descreva superfícies potenciais de ataque (TOB-ORB-4 e TOB-ORB-5, TOB-ORB-10, e TOB-ORB-11), eles concluem que “nossa análise não descobriu vulnerabilidades no código do Orb que possam ser diretamente exploradas em relação aos Objetivos do Projeto conforme descrito.” Além disso, embora a revisão da Trail of Bits tenha identificado algumas preocupações não confirmadas que teoricamente poderiam afetar os objetivos do projeto, e o código afetado tenha sido atualizado desde então, a auditoria não identificou nenhuma instância onde os objetivos do projeto seriam diretamente comprometidos, seja por meio de vulnerabilidades conhecidas ou durante a execução normal.

Os auditores da Trail of Bits forneceram recomendações especializadas para a maior robustez da configuração do kernel, bem como ferramentas e técnicas para o software de runtime, que estão disponíveis em mais detalhes no relatório final.

Afirmação 1: Fluxo de inscrição padrão com opção de exclusão

A avaliação conclui que a configuração da versão auditada do software não retém, nem exfiltra, PII além do “código da íris” do orb. A Trail of Bits recomendou mudanças adicionais na robustez da configuração para aprimorar a “defesa em profundidade” do orb, garantindo que futuras alterações na configuração ou código não introduzam vazamentos acidentais (achado TOB-ORB-1). 

Afirmação 2: Fluxo de inscrição padrão com opção de inclusão

Em casos onde os usuários optam pela custódia de dados, o orb criptografa assimetricamente os PII usando a biblioteca libsodium em uma construção de envelope unidirecional* chamada de “sealed box.” No relatório final, os auditores afirmam “[n]ão identificamos nenhum lugar onde os PII são persistidos fora do SSD do Orb e/ou não criptografados” e concluem que “uma vez que os PII são criptografados, o mecanismo descrito não permite que o Orb os descriptografe.”

*O código mais recente não salva dados de maneira alguma, independentemente da opção de custódia de dados, mas reutiliza este código de criptografia para o pacote de Custódia Pessoal usando a chave pública do usuário.

Reivindicação 3: A Orb não extrai dados adicionais do dispositivo do usuário

Quando um usuário interage com um orb pela primeira vez para fazer um cadastro, um código QR é exibido no dispositivo do usuário que é processado pelo orb. No código relevante, os auditores não identificaram quaisquer dados ou informações adicionais coletados do dispositivo do usuário pelo orb. A avaliação, no entanto, destacou potenciais problemas de segurança de memória (encontrando TOB-ORB-4 no relatório final) com a biblioteca usada para escanear o código QR (ZBar). Em resposta, a biblioteca vulnerável foi substituída por uma biblioteca de escaneamento de código de barras em Rust puro, rxing.

Reivindicação 4: O código da íris do usuário é tratado de forma segura

Os auditores tentaram validar as alegações relacionadas a como o "código da íris" é manipulado e comunicado ao backend. Eles relatam que “acreditamos que o código da íris não é gravado em armazenamento persistente no Orb e que ele é incluído apenas em uma única solicitação para o back-end do Orb,” e que “[e]nquanto essa configuração pode ser melhorada para torná-la mais segura (TOB-ORB-10), não deve ser possível para atacantes típicos extrair o código da íris do tráfego de rede do Orb; o atacante precisaria estar no controle de um dos certificados confiáveis.

Conclusão

O relatório completo da análise minuciosa da Trail of Bits contém todos os achados individuais e suas remediações, juntamente com uma análise adicional das alegações. 

Esta não foi a primeira, nem será a última, avaliação de segurança de terceiros do Orb, e relatórios adicionais serão compartilhados com a comunidade à medida que estiverem disponíveis. 

Você pode ajudar a manter o projeto Worldcoin seguro participando do programa de recompensas por bugs da Worldcoin. Informações adicionais importantes sobre o projeto estão disponíveis no whitepaper do protocolo Worldcoin.

Isenção de responsabilidade

O conteúdo acima refere-se apenas à data indicada. Além disso, está sujeito a riscos, incertezas e pressupostos, pelo que pode estar incorreto e ser alterado sem aviso prévio. Podes encontrar uma parte dedicada à isenção de responsabilidade completa nos nossos Termos de Utilização e as informações importantes para o utilizador estão na nossa página sobre os Riscos.

As informações neste artigo têm mais de 12 meses e podem estar desatualizadas. Por favor, visite world.org/blogpara obter as informações mais recentes sobre o projeto.