Resumo

  • No commit público fixado 3c2068477eb38ebbbe70039ee6e1b7b004fc69cd, toda eleição nova recebe ALL como modo padrão de recuperação, qualquer que seja o tipo; ONLY_BR e NONE continuam disponíveis para configuração explícita.
  • Um endereço normalizado é pesquisado em três conjuntos distintos: eleitores, contatos de organizações associadas e contatos de apoio a indicações. Cada conjunto pode reenviar seu próprio link com token.
  • A mensagem uniforme e o teto de dez resultados por classe são controles úteis. Um recibo privado de recuperação de capacidade completaria a trilha entre regra, papel, configuração, token, entrega, uso e encerramento.

O mesmo endereço de e-mail pode aparecer três vezes sem representar a mesma autoridade. Em um registro, ele pertence a um eleitor. Em outro, é o contato pelo qual uma organização associada apresenta uma indicação. Em um terceiro, identifica quem responde por um apoio. As letras são iguais; o mandato não é.

A distribuição pública elections-open-source do LACNIC torna esse desenho observável. O painel remove espaços, converte o endereço para minúsculas e realiza três consultas vinculadas à eleição. Ele procura UserVoter.mail, Organization.membershipContactEmail e SupportNomination.supportingContactEmail. Depois trata os resultados como VOTER_VOTE_LINK, NOMINATION_LINK e SUPPORT_LINK.

Antes dessas consultas, uma decisão silenciosa amplia o alcance. Os construtores de Election chamam ElectionLinkRecoveryMode.defaultForElectionType. O método recebe o tipo da eleição, mas retorna sempre ALL. Os testes esperam esse valor em uma nova eleição de Diretoria. A documentação confirma que, nesta distribuição pública, eleições novas começam em ALL, independentemente do tipo. O administrador ainda pode selecionar ONLY_BR ou NONE.

Isso não demonstra uma falha nem revela a configuração de uma eleição real. O material consultado não liga o commit a um ambiente de produção. Nenhum pedido foi enviado, nenhum token foi examinado e nenhum e-mail de participante foi observado. A conclusão é limitada ao artefato aberto.

Mesmo assim, o padrão importa. Recuperar um link evita que uma falha banal de entrega retire uma pessoa legítima do processo. Uma caixa de spam, a troca de aparelho ou a mudança de equipe não deveriam decidir uma eleição. A recuperação pode proteger participação e reduzir atendimento manual.

Ao mesmo tempo, o que volta a circular é uma capacidade institucional. O e-mail entrega a chave; não cria o direito. Se o desenho privilegia acesso, o registro de auditoria precisa provar que a capacidade reenviada ainda correspondia à autoridade original.

Três classes, três origens

O eleitor recebe um link derivado do token de voto. A organização só recebe o link de indicação se o token correspondente não estiver vazio. O contato de apoio recebe o link próprio da indicação apoiada. O código mantém essa separação até a chamada que coloca a mensagem na fila.

As origens institucionais são diferentes. O eleitor depende do cadastro habilitado para aquele pleito. A organização depende da condição de associada e do contato reconhecido para indicar. O apoio depende de uma candidatura e de um fluxo específico. Uma caixa compartilhada pode concentrar os três papéis de modo legítimo, mas não os transforma em um só.

Há um limite de dez correspondências por tipo. No modo ALL, não há filtro nacional. No ONLY_BR, o programa usa o país do eleitor, da organização ou da organização que emitiu a indicação, conforme o conjunto. O limite evita processamento sem fim quando um endereço é muito reutilizado.

Dez por classe não significa dez no total. Tampouco significa dez autorizações válidas. O número disciplina a consulta. A validade exige verificar se a linha de origem ainda está vigente, se o contato continua designado, se a etapa permite a ação e se o token não terminou.

O sistema não exibe os achados. Quando não ocorre falha operacional, a tela apresenta a mesma confirmação para uma busca com resultados e para outra sem resultado. Os links vão para os endereços armazenados. Essa resposta genérica reduz a possibilidade de usar o formulário para descobrir quem participa.

Esse controle merece crédito. Ele resolve o problema de enumeração diante do solicitante. Não resolve, sozinho, a legitimidade da entrega à caixa. Uma interface pode esconder perfeitamente a existência do registro e ainda reenviar capacidades a um endereço desatualizado. São duas fronteiras diferentes.

Um valor configurado não registra quem decidiu

ALL, ONLY_BR e NONE orientam o comportamento do software. Não explicam por que o comportamento é adequado ao pleito. O valor final também não mostra se foi herdado, confirmado ou alterado conscientemente.

Eleições de Diretoria, Comissão Fiscal, Comissão Eleitoral, moderação do PDP, ASO AC e IANA Review Committee podem ter eleitores, regras e supervisores distintos. O mesmo mecanismo de recuperação pode ser aprovado para todas. Essa equivalência, porém, é uma escolha de governança, não uma consequência técnica do enum.

Depois da eleição, um auditor que encontra ALL enfrenta três histórias possíveis. A equipe analisou o risco e aprovou a abrangência. O sistema conservou o padrão sem nova decisão. Ou o modo foi mantido temporariamente porque outro canal falhou. A coluna não distingue essas histórias.

O tempo também depende de outras chaves. A recuperação funciona apenas quando a eleição não está fechada e o modo não é NONE. A landing page precisa estar disponível e ter alcançado N_1. O guia diz que a recuperação não possui um calendário próprio.

Os destinos têm seus próprios relógios. O voto depende do período eleitoral e do estado do eleitor. Indicação e apoio obedecem a outras etapas. Um link colocado na fila pode chegar quando já não produz ação, ou pode continuar ativo. A trilha só termina quando o evento de recuperação é confrontado com a barreira da página final.

Fila, entrega e exercício não são o mesmo evento

O painel soma correspondências e mensagens enfileiradas. Se uma classe encontra registros, mas nenhuma mensagem entra na fila, marca falha operacional. É uma distinção importante entre “não há registro” e “há registro, mas o envio não começou”.

A fila não confirma a entrega. Um provedor pode rejeitar a mensagem; o gateway corporativo pode isolá-la; o atraso pode atravessar o prazo; um endereço funcional pode ter mudado de responsável. Da mesma forma, o destinatário correto pode não receber nada sem ter perdido seu direito.

Também não se deve confundir entrega com uso correto. O controlador atual da caixa pode ser um colega autorizado, um serviço terceirizado ou alguém que permaneceu com acesso depois de trocar de função. A evidência necessária é uma ligação entre a linha de autoridade, o canal designado e o estado do token naquele momento.

Orientações externas ajudam a desenhar os campos, mas não criam normas para o LACNIC. A OWASP recomenda, no contexto de senha esquecida, resposta uniforme, tempo comparável, limitação por conta ou CAPTCHA e tokens aleatórios, de uso único e com expiração. O NIST SP 800-63B afirma, no contexto de identidade digital, que métodos alternativos de recuperação devem se apoiar em análise de risco documentada e que o evento de recuperação gera notificação. Um link eleitoral não é uma redefinição de senha. A comparação serve apenas para mostrar que recuperação é um ato de autoridade autônomo.

O código fixado já possui elementos dessa disciplina. Além da resposta genérica e do teto por classe, limita a busca a uma eleição e pode validar CAPTCHA. A validação só acontece quando a recuperação está ativa, uma configuração global autoriza o CAPTCHA e existe uma chave de site. O IP do cliente também é passado para a operação de envio.

Nada disso informa a configuração de produção. As fontes não provam entropia, expiração, rotação, revogação após uso, confirmação de entrega ou custódia atual da caixa. Esses controles podem existir em outros módulos ou na operação. A ausência na amostra não é prova de vulnerabilidade.

Código aberto não é recibo de implantação

O LACNIC apresenta seu sistema remoto como código aberto, auditável e verificável. O repositório permite uma auditoria real: há documentação da landing pública, implementação do painel, enum de modos e teste do valor padrão.

Em 11 de setembro de 2026, um commit de compatibilidade atualizou bibliotecas do servidor e manteve o teste de ALL. O commit de cabeça posterior acrescentou cobertura para leitura de uploads Excel e PDF armazenados em disco. Esses hashes e datas congelam o objeto examinado.

Não dizem qual build atende uma eleição pública. Não informam parâmetros, CAPTCHA, serviço de e-mail ou políticas de rotação de um ambiente real. Este artigo não atravessa essa fronteira.

O recorte também não repete a matéria anterior sobre o e-mail em uma rota GET usada para consultar relatórios autenticados. Naquele caso, o problema era a propagação do identificador em camadas que carregam URIs. Aqui, o formulário solicita o reenvio de três capacidades e a questão é preservar a origem de cada uma.

Uma declaração pública por eleição poderia fechar parte da distância: commit ou versão revisada, modo efetivo, classes de link, janela, controles contra automação e papel que aprovou a configuração. Dados pessoais, IPs, tokens e eventos individuais permaneceriam privados.

O recibo mínimo de recuperação de capacidade

O primeiro bloco do recibo privado identificaria eleição, versão e geração de configuração. Registraria o tipo e a regra aplicável, o modo e sua procedência. “Herdado” e “escolhido” são resultados distintos. O aprovador e a data fariam parte do registro.

O segundo bloco preservaria o papel. Em vez de escrever apenas “usuário”, manteria eleitor, organização indicadora e apoiador de indicação. Uma referência opaca ligaria o evento à linha correta sem copiar o endereço. Também mostraria validade e janela no instante do pedido.

O terceiro bloco seguiria o token. O sistema reenviou o segredo existente ou emitiu substituto? Qual a geração e a expiração? O anterior foi invalidado? O estado final foi uso, vencimento, revogação ou substituição? Fila e entrega ficariam em campos separados.

O quarto bloco provaria encerramento. Fim da votação, fim das indicações, resolução do apoio e fechamento geral não precisam ocorrer juntos. Se uma URL continuar aberta para consulta histórica, deve estar marcada como somente leitura.

A projeção pública seria pequena: versão, modo, classes, período, controles, totais agregados com supressão de grupos reduzidos, política de invalidação e responsável pela revisão. O detalhe protegido atenderia à auditoria sem criar um mapa de participantes.

Recuperação não precisa ser retirada. Precisa deixar de parecer uma transferência sem origem. A caixa postal devolve o caminho perdido; o recibo demonstra que o poder ainda pertencia ao caminho certo.

Fontes