Skip to main content
Esta página é o registo canónico da revisão de segurança externa aos componentes da Intention. Diz o que foi auditado, o que está em revisão e — igualmente importante — o que ainda não foi auditado.

Estado atual

A ponte entre cadeias é o componente sob revisão de segurança externa. O âmbito abrange os contratos na cadeia externa e a infraestrutura de assinatura que os suporta: custódia, verificação de assinaturas, o caminho de levantamento em duas fases e o seu período de contestação, e a propagação do conjunto de validadores através da fronteira entre cadeias. A ponte foi priorizada de forma deliberada. É o único componente cujo modelo de segurança não é o da própria rede — metade dela corre noutra cadeia, com os seus próprios validadores e os seus próprios modos de falha, e é onde uma falha de segurança se traduz mais diretamente em fundos perdidos. O resto do protocolo é verificável reexecutando blocos; um contrato de ponte numa cadeia externa não é. O auditor e o relatório serão publicados aqui quando a auditoria estiver concluída, com o âmbito e as vulnerabilidades identificadas.
Esta é a única auditoria externa atualmente em curso. Os restantes componentes — o kernel de execução, o consenso e a câmara de compensação — estão cobertos pelos controlos internos descritos abaixo, e não por revisão externa. A ausência de uma auditoria publicada não é prova da ausência de defeitos. Avalie tendo isso em conta, sobretudo antes da mainnet.

Como ler um relatório quando for publicado

Uma auditoria útil responde a três perguntas: o que estava no âmbito, o que os revisores examinaram de facto e o que continua em aberto no momento da publicação. Cada relatório publicado aqui tornará as três explícitas.
  • O âmbito é um hash de commit mais uma lista enumerada de componentes. Um ficheiro ou contrato que não conste da lista não foi auditado.
  • As vulnerabilidades identificadas são categorizadas por gravidade. As de risco aceite incluem a fundamentação e os controlos de mitigação, em vez de serem omitidas.
  • As diferenças desde a auditoria são acompanhadas em separado. Qualquer alteração posterior à auditoria que toque em código auditado é assinalada, para que possa saber se o relatório publicado ainda descreve o sistema em funcionamento.
É este último ponto o que mais vezes falta noutros sítios. Uma auditoria descreve um commit específico. O código que mudou desde então é código que ninguém reviu, e um relatório que não o diga exagera aquilo que cobre.

Revisão contínua

As auditorias feitas num dado momento assentam sobre controlos que correm continuamente:
  • Revisão obrigatória de todas as alterações ao kernel, ao consenso e à ponte.
  • Fuzzing e testes baseados em propriedades contra as máquinas de estados de matching, de risco e de liquidação financeira, incluindo verificações de determinismo que reexecutam blocos confirmados e comparam os resultados byte a byte.
  • Testes diferenciais entre compilações independentes do motor — uma divergência é tratada como um bug de consenso, não como uma falha de teste.
  • Bug bounty público para cobertura externa permanente.

Para onde ir a seguir

Bug bounty

Âmbito, níveis de gravidade e como reportar uma vulnerabilidade.

Advertências de risco

O que continua exposto, dito sem rodeios.

Ponte

O componente em revisão, e onde assentam as suas premissas de confiança.

Marcos

O que está entregue e o que depende das datas que se seguem.
As questões sobre o âmbito da auditoria ou sobre uma vulnerabilidade específica seguem para contact@intention.xyz. As divulgações de vulnerabilidades devem seguir o processo da página bug bounty, em vez de serem levantadas aqui.