Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
gobalance-patch — Patch de segurança e prova de conceito para o balanceador de carga onion GoBalance, cobrindo a recuperação da chave mestra via blindedSign e a aceitação de descritores forjados, com testes de regressão. | Kitploit
Ferramentas/GitHubGitHub/kolmteistov/gobalance-patch
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebCriptografiaTestes de PenetraçãoAprendizado e Educação
GitHubkolmteistov/gobalance-patch

gobalance-patch

Patch de segurança e prova de conceito para o balanceador de carga onion GoBalance, cobrindo a recuperação da chave mestra via blindedSign e a aceitação de descritores forjados, com testes de regressão.

Ver Repositório
36há 1 diaAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

GoBalance Security Patch & PoC

Pacote de aviso para gitlab.com/n0tr1v/gobalance - branch master, commit bb1b0f3 ("fix crash"). Status: CRÍTICO - dois caminhos independentes de tomada de controle total. O branch patch1 upstream não corrige nenhum deles.

Este pacote contém um patch de segurança completo, uma prova de conceito ponta a ponta para ambos os caminhos de ataque e testes de regressão que comprovam que as correções se mantêm. Ele acompanha o relatório completo de análise de vulnerabilidade ("Laporan Analisis Keamanan GoBalance") preparado em conexão com os recentes incidentes de tomada de controle de domínios onion que afetaram dois fóruns. Um guia passo a passo de compilação e teste está em USAGE.md.


1. Resumo executivo

#VulnerabilidadeSeveridadeImpactoStatus
1Chave de identidade master vaza através de blindedSign (prefixo de nonce constante)CRÍTICORecuperação completa da identidade onion a partir de um único descritor públicoCorrigido
2RegisterDescriptor aceita descritores de instância forjados (sem verificação de assinatura / vinculação)CRÍTICOSequestro de tráfego de qualquer frontend GoBalanceCorrigido
3Caminho de RNG determinístico, semeado por tempo, em pkg/brandALTO (armadilha)Material de chave previsível para qualquer coisa que o utilizeRemovido
4Embaralhamento de pontos de introdução usa math/randBAIXOAleatoriedade fraca em código adjacente ao protocoloSubstituído por crypto/rand

Vulnerabilidade #1 - recuperação da chave master a partir de um descritor público (CRÍTICO)

O dispatcher blindedSign() em pkg/stem/descriptor/hidden_service.go passava identityKey.Seed() - o escalar bruto de 32 bytes a - para BlindedSignWithTorKey(). Chaves em formato Tor são chaves estendidas: 64 bytes (a || h), onde h é a chave PRF que deriva o prefixo de nonce por assinatura. Com h ausente, a entrada de derivação do nonce ficou vazia e

kPrime = SHA512("Derive temporary signing key hash input" || <empty>)

tornou-se uma constante pública. Consequência: qualquer um que consiga ler UM descritor publicado pode recalcular o nonce r, resolver para o escalar cego s' = (S − r) · H(R‖PK‖M)⁻¹ mod L, e desvendá-lo com um multiplicador público - recuperando a chave de identidade master do serviço onion. Sem acesso ao servidor, sem MitM, sem força bruta. Esta é uma primitiva silenciosa de tomada de controle de domínio e é consistente com o mecanismo observado nos recentes sequestros de fóruns.

Correção: o dispatcher agora encaminha a chave estendida completa (gobpk.PrivateKey.PrivKey()); BlindedSignWithTorKey entra em pânico com qualquer chave que não tenha exatamente 64 bytes; blindedSignP2 impõe independentemente o comprimento da ESK como defesa em profundidade; gobpk.New rejeita chaves Tor truncadas no momento do carregamento.

Vulnerabilidade #2 - descritores de instância forjados aceitos (CRÍTICO)

NewReceivedDescriptor() analisava e confiava em qualquer coisa que a rede lhe entregasse. Como as subcredenciais são derivadas da chave cega carregada dentro do próprio descritor, um atacante poderia cunhar descritores criptograficamente autoconsistentes para o endereço onion de outra pessoa usando suas próprias chaves. O frontend então republicaria os pontos de introdução do atacante sob a identidade da vítima - um sequestro de tráfego completo que não requer nenhuma recuperação de chave.

Correção: verificação em três camadas no novo VerifyHiddenServiceDescriptorV3(): (1) assinatura do certificado sob a chave cega, (2) assinatura do descritor sob a chave de assinatura certificada, e (3) vinculação - a chave cega deve ser igual ao valor que o frontend calcula independentemente a partir do consenso (GetBlindingParam + período de tempo) e do endereço da instância. RegisterDescriptor é fail-closed: sem um consenso ativo, ele se recusa a registrar em vez de confiar cegamente.

2. O que há neste pacote

gobalance-patch/
├── README.md                  ← este arquivo (Inglês)
├── USAGE.md                   ← guia passo a passo de compilação e teste (Inglês)
├── README_ID.md               ← ringkasan patch (Bahasa Indonesia)
├── gobalance-security.patch   ← diff unificado contra master@bb1b0f3 (7 arquivos, +360/−94)
├── gobalance-patched/         ← árvore de código-fonte completa pré-patchada (drop-in)
│   ├── go.mod / go.sum / main.go
│   ├── pkg/…                  ← bibliotecas corrigidas, incl. testes de regressão
│   ├── poc/                   ← demonstração de ataque ponta a ponta + snapshot do código vulnerável
│   ├── cmd/gbdemo/            ← CLI de demonstração de recuperação autônoma (+ testes E2E) - USAGE #13
│   └── tools/                 ← pem2tor.py (conversor de chave PEM→Tor), get_desc.py (busca de descritor)
└── gobalance-v1/              ← fork da comunidade "GoBalance Enhanced v1.0" (Dread), incluído
                                 conforme distribuído para testes - ainda VULNERÁVEL - USAGE #14

3. Início rápido

# Opção A - aplicar patch em um checkout upstream limpo
git clone https://gitlab.com/n0tr1v/gobalance && cd gobalance
git apply /path/to/gobalance-security.patch
go build ./... && go test ./...

# Opção B - usar a árvore pré-patchada incluída (mais rápido)
cd gobalance-patched
go build ./...
go test ./poc/ -v      # demonstração de ataque: sucesso contra snapshot vulnerável, falha contra patch
go test ./...          # suíte completa: 8 pacotes ok

Consulte USAGE.md para o passo a passo completo com a saída esperada.

4. O que a PoC comprova

  1. Ataque (código vulnerável): o escalar master é recuperado a partir de um único descritor público, e uma assinatura para um período de tempo futuro forjada com a chave recuperada é byte a byte idêntica à assinatura real da vítima - Test01_Vulnerable_MasterKeyRecoveredFromSingleDescriptor.
  2. Defesa: a compilação corrigida rejeita a chave Tor truncada de 32 bytes com um pânico explícito nomeando o risco - Test02_Patched_TruncatedTorKeyRejected.
  3. Compatibilidade: assinaturas do caminho Tor corrigidas ainda verificam como ed25519 padrão sob a chave pública cega, então a interoperabilidade com o Tor permanece inalterada - Test03_Patched_TorPathSignaturesVerifyAsStdEd25519.
  4. Defesa: reproduzir a mesma matemática de ataque contra o código corrigido produz lixo que não corresponde mais ao verdadeiro escalar master - Test04_Patched_AttackMathYieldsGarbage.
  5. Defesa (#2): um descritor forjado autoconsistente passa nas verificações do antigo modelo de confiança (parse + cert-sig + descriptor-sig) mas é rejeitado pela nova verificação de vinculação por consenso - TestForgedSelfConsistentDescriptorIsDetected.
  6. Defesa (#2): o caminho real de ingestão aceita descritores honestos e rejeita os adulterados / mal vinculados - TestNewReceivedDescriptor_AcceptsHonestDescriptor, _RejectsTamperedSignature, _RejectsWrongIdentityBinding.

Todas as chaves na PoC são geradas localmente no momento do teste. Nenhum serviço real foi alvo.

5. Notas operacionais - leia antes de implantar

Baixar ferramenta