Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
gobalance-patch — Patch di sicurezza e proof-of-concept per il load balancer onion GoBalance, che copre il recupero della master key tramite blindedSign e l'accettazione di descriptor contraffatti, con test di regressione. | Kitploit
Strumenti/GitHubGitHub/kolmteistov/gobalance-patch
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebCrittografiaPenetration TestingApprendimento e Formazione
GitHubkolmteistov/gobalance-patch

gobalance-patch

Patch di sicurezza e proof-of-concept per il load balancer onion GoBalance, che copre il recupero della master key tramite blindedSign e l'accettazione di descriptor contraffatti, con test di regressione.

Vedi Repository
361 giorno faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

GoBalance Security Patch & PoC

Pacchetto di advisory per gitlab.com/n0tr1v/gobalance - branch master, commit bb1b0f3 ("fix crash"). Stato: CRITICO - due percorsi indipendenti di takeover completo. Il branch upstream patch1 non corregge nessuno dei due.

Questo pacchetto contiene una patch di sicurezza completa, un proof-of-concept end-to-end per entrambi i percorsi di attacco e test di regressione che dimostrano che le correzioni tengono. Accompagna il report completo di analisi delle vulnerabilità ("Laporan Analisis Keamanan GoBalance") preparato in relazione ai recenti incidenti di takeover di domini onion che hanno colpito due forum. Una guida passo-passo per build e test è in USAGE.md.


1. Sintesi esecutiva

#VulnerabilitàGravitàImpattoStato
1La chiave identità master trapela tramite blindedSign (prefisso nonce costante)CRITICARecupero completo dell'identità onion da un singolo descriptor pubblicoCorretta
2RegisterDescriptor accetta descriptor di istanza contraffatti (nessuna verifica di firma / binding)CRITICAHijack del traffico di qualsiasi frontend GoBalanceCorretta
3Percorso RNG deterministico, seedato temporalmente, in pkg/brandALTA (footgun)Materiale di chiave prevedibile per tutto ciò che lo utilizzaRimosso
4Lo shuffle degli introduction-point usa math/randBASSARandomicità debole in codice adiacente al protocolloSostituito con crypto/rand

Vulnerabilità #1 - recupero della chiave master da un descriptor pubblico (CRITICA)

Il dispatcher blindedSign() in pkg/stem/descriptor/hidden_service.go passava identityKey.Seed() - lo scalare grezzo di 32 byte a - a BlindedSignWithTorKey(). Le chiavi in formato Tor sono chiavi estese: 64 byte (a || h), dove h è la chiave PRF che deriva il prefisso nonce per-firma. Con h mancante, l'input di derivazione del nonce era vuoto e

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

è diventato una costante pubblica. Conseguenza: chiunque possa leggere UN descriptor pubblicato può ricalcolare il nonce r, risolvere per lo scalare blinded s' = (S − r) · H(R‖PK‖M)⁻¹ mod L, e unblindarlo con un moltiplicatore pubblico - recuperando la chiave identità master del servizio onion. Nessun accesso al server, nessun MitM, nessuna brute force. Si tratta di una primitiva silenziosa di domain-takeover ed è coerente con il meccanismo osservato nei recenti hijack dei forum.

Fix: il dispatcher ora inoltra la chiave estesa completa (gobpk.PrivateKey.PrivKey()); BlindedSignWithTorKey va in panic su qualsiasi chiave che non sia esattamente di 64 byte; blindedSignP2 impone indipendentemente la lunghezza ESK come difesa in profondità; gobpk.New rifiuta le chiavi Tor troncate al momento del load.

Vulnerabilità #2 - descriptor di istanza contraffatti accettati (CRITICA)

NewReceivedDescriptor() analizzava e considerava attendibile qualunque cosa la rete gli passasse. Poiché le subcredenziali sono derivate dalla chiave blinded trasportata all'interno del descriptor stesso, un attaccante poteva coniare descriptor crittograficamente auto-consistenti per l'indirizzo onion di qualcun altro usando le proprie chiavi. Il frontend avrebbe poi ripubblicato gli introduction point dell'attaccante sotto l'identità della vittima - un hijack completo del traffico che non richiede alcun recupero di chiave.

Fix: verifica a tre livelli nel nuovo VerifyHiddenServiceDescriptorV3(): (1) firma del certificato sotto la chiave blinded, (2) firma del descriptor sotto la chiave di firma certificata, e (3) binding - la chiave blinded deve essere uguale al valore che il frontend calcola indipendentemente dal consensus (GetBlindingParam + periodo temporale) e dall'indirizzo dell'istanza. RegisterDescriptor è fail-closed: senza un consensus attivo rifiuta di registrare invece di fidarsi ciecamente.

2. Cosa contiene questo pacchetto

gobalance-patch/
├── README.md                  ← questo file (inglese)
├── USAGE.md                   ← guida passo-passo per build e test (inglese)
├── README_ID.md               ← ringkasan patch (Bahasa Indonesia)
├── gobalance-security.patch   ← diff unificato rispetto a master@bb1b0f3 (7 file, +360/−94)
├── gobalance-patched/         ← albero sorgente completo pre-patchato (drop-in)
│   ├── go.mod / go.sum / main.go
│   ├── pkg/…                  ← librerie patchate, incl. test di regressione
│   ├── poc/                   ← demo end-to-end dell'attacco + snapshot del codice vulnerabile
│   ├── cmd/gbdemo/            ← CLI standalone per la demo di recupero (+ test E2E) - USAGE #13
│   └── tools/                 ← pem2tor.py (convertitore chiavi PEM→Tor), get_desc.py (fetch descriptor)
└── gobalance-v1/              ← fork della community "GoBalance Enhanced v1.0" (Dread), incluso
                                 come distribuito per i test - ancora VULNERABILE - USAGE #14

3. Avvio rapido

# Option A - patch a fresh upstream checkout
git clone https://gitlab.com/n0tr1v/gobalance && cd gobalance
git apply /path/to/gobalance-security.patch
go build ./... && go test ./...

# Option B - use the bundled pre-patched tree (fastest)
cd gobalance-patched
go build ./...
go test ./poc/ -v      # attack demo: succeeds vs vulnerable snapshot, fails vs patch
go test ./...          # full suite: 8 packages ok

Vedi USAGE.md per la procedura completa con l'output atteso.

4. Cosa dimostra il PoC

  1. Attacco (codice vulnerabile): lo scalare master viene recuperato da un singolo descriptor pubblico, e una firma per un periodo temporale futuro contraffatta con la chiave recuperata è identica byte per byte alla firma reale della vittima
    • Test01_Vulnerable_MasterKeyRecoveredFromSingleDescriptor.
  2. Difesa: la build patchata rifiuta la chiave Tor troncata di 32 byte con un panic esplicito che nomina il rischio - Test02_Patched_TruncatedTorKeyRejected.
  3. Compatibilità: le firme del percorso tor patchato continuano a verificarsi come ed25519 standard sotto la chiave pubblica blinded, quindi l'interoperabilità con Tor è invariata - Test03_Patched_TorPathSignaturesVerifyAsStdEd25519.
  4. Difesa: rieseguire la stessa matematica dell'attacco contro il codice patchato produce spazzatura che non corrisponde più allo scalare master reale - Test04_Patched_AttackMathYieldsGarbage.
  5. Difesa (#2): un descriptor contraffatto auto-consistente supera i controlli del vecchio modello di fiducia (parse + cert-sig + descriptor-sig) ma viene rifiutato dal nuovo controllo di binding sul consensus - TestForgedSelfConsistentDescriptorIsDetected.
  6. Difesa (#2): il percorso di intake reale accetta descriptor onesti e rifiuta quelli manomessi / mal-bound - TestNewReceivedDescriptor_AcceptsHonestDescriptor, _RejectsTamperedSignature, _RejectsWrongIdentityBinding.

Tutte le chiavi nel PoC sono generate localmente al momento del test. Nessun servizio reale è stato preso di mira.

5. Note operative - leggere prima del deploy

Scarica lo strumento