Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
gobalance-patch — Parche de seguridad y prueba de concepto para el balanceador de carga onion GoBalance, que abarca la recuperación de la clave maestra mediante blindedSign y la aceptación de descriptores falsificados, con pruebas de regresión. | Kitploit
Herramientas/GitHubGitHub/kolmteistov/gobalance-patch
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebCriptografíaPruebas de PenetraciónAprendizaje y Educación
GitHubkolmteistov/gobalance-patch

gobalance-patch

Parche de seguridad y prueba de concepto para el balanceador de carga onion GoBalance, que abarca la recuperación de la clave maestra mediante blindedSign y la aceptación de descriptores falsificados, con pruebas de regresión.

Ver Repositorio
36hace 1 díaAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

GoBalance Security Patch & PoC

Paquete de aviso para gitlab.com/n0tr1v/gobalance - rama master, commit bb1b0f3 ("fix crash"). Estado: CRÍTICO - dos rutas independientes de toma de control total. La rama upstream patch1 no corrige ninguna de ellas.

Este paquete contiene un parche de seguridad completo, una prueba de concepto de extremo a extremo para ambas rutas de ataque, y pruebas de regresión que demuestran que las correcciones se mantienen. Acompaña al informe completo de análisis de vulnerabilidades ("Laporan Analisis Keamanan GoBalance") preparado en relación con los recientes incidentes de toma de control de dominios onion que afectaron a dos foros. Una guía paso a paso de compilación y pruebas está en USAGE.md.


1. Resumen ejecutivo

#VulnerabilidadSeveridadImpactoEstado
1La clave de identidad maestra se filtra a través de blindedSign (prefijo de nonce constante)CRÍTICARecuperación completa de la identidad onion a partir de un único descriptor públicoCorregida
2RegisterDescriptor acepta descriptores de instancia falsificados (sin verificación de firma / vinculación)CRÍTICASecuestro de tráfico de cualquier frontend de GoBalanceCorregida
3Ruta de RNG determinista con semilla temporal en pkg/brandALTA (trampa)Material de clave predecible para cualquier cosa que lo useEliminada
4La mezcla de puntos de introducción usa math/randBAJAAleatoriedad débil en código adyacente al protocoloReemplazada por crypto/rand

Vulnerabilidad #1 - recuperación de la clave maestra desde un descriptor público (CRÍTICA)

El despachador blindedSign() en pkg/stem/descriptor/hidden_service.go pasaba identityKey.Seed() - el escalar crudo de 32 bytes a - a BlindedSignWithTorKey(). Las claves en formato Tor son claves extendidas: 64 bytes (a || h), donde h es la clave PRF que deriva el prefijo de nonce por firma. Al faltar h, la entrada de derivación del nonce quedaba vacía y

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

se convertía en una constante pública. Consecuencia: cualquiera que pueda leer UN descriptor publicado puede recalcular el nonce r, resolver el escalar cegado s' = (S − r) · H(R‖PK‖M)⁻¹ mod L, y descegarlo con un multiplicador público - recuperando la clave de identidad maestra del servicio onion. Sin acceso al servidor, sin MitM, sin fuerza bruta. Esto es una primitiva silenciosa de toma de control de dominio y es consistente con el mecanismo observado en los recientes secuestros de foros.

Corrección: el despachador ahora reenvía la clave extendida completa (gobpk.PrivateKey.PrivKey()); BlindedSignWithTorKey entra en pánico con cualquier clave que no tenga exactamente 64 bytes; blindedSignP2 aplica de forma independiente la longitud de ESK como defensa en profundidad; gobpk.New rechaza claves Tor truncadas en el momento de carga.

Vulnerabilidad #2 - descriptores de instancia falsificados aceptados (CRÍTICA)

NewReceivedDescriptor() analizaba y confiaba en lo que la red le entregara. Debido a que las subcredenciales se derivan de la clave cegada contenida dentro del propio descriptor, un atacante podía acuñar descriptores criptográficamente autoconsistentes para la dirección onion de otra persona usando sus propias claves. El frontend entonces republicaría los puntos de introducción del atacante bajo la identidad de la víctima - un secuestro de tráfico completo que no requiere recuperación de claves en absoluto.

Corrección: verificación en tres capas en el nuevo VerifyHiddenServiceDescriptorV3(): (1) firma del certificado bajo la clave cegada, (2) firma del descriptor bajo la clave de firma certificada, y (3) vinculación - la clave cegada debe ser igual al valor que el frontend calcula de forma independiente a partir del consenso (GetBlindingParam + período de tiempo) y la dirección de la instancia. RegisterDescriptor falla de forma cerrada: sin un consenso activo se niega a registrar en lugar de confiar ciegamente.

2. Qué contiene este paquete

gobalance-patch/
├── README.md                  ← este archivo (inglés)
├── USAGE.md                   ← guía paso a paso de compilación y pruebas (inglés)
├── README_ID.md               ← ringkasan patch (Bahasa Indonesia)
├── gobalance-security.patch   ← diff unificado contra master@bb1b0f3 (7 archivos, +360/−94)
├── gobalance-patched/         ← árbol de código fuente completo pre-parcheado (drop-in)
│   ├── go.mod / go.sum / main.go
│   ├── pkg/…                  ← bibliotecas parcheadas, incl. pruebas de regresión
│   ├── poc/                   ← demo de ataque de extremo a extremo + snapshot del código vulnerable
│   ├── cmd/gbdemo/            ← CLI de demostración de recuperación independiente (+ pruebas E2E) - USAGE #13
│   └── tools/                 ← pem2tor.py (conversor de clave PEM→Tor), get_desc.py (obtención de descriptor)
└── gobalance-v1/              ← fork comunitario "GoBalance Enhanced v1.0" (Dread), incluido
                                 tal como se distribuye para pruebas - aún VULNERABLE - USAGE #14

3. Inicio rápido

# Opción A - parchear una copia limpia del upstream
git clone https://gitlab.com/n0tr1v/gobalance && cd gobalance
git apply /path/to/gobalance-security.patch
go build ./... && go test ./...

# Opción B - usar el árbol pre-parcheado incluido (la más rápida)
cd gobalance-patched
go build ./...
go test ./poc/ -v      # demo de ataque: tiene éxito contra el snapshot vulnerable, falla contra el parche
go test ./...          # suite completa: 8 paquetes ok

Consulta USAGE.md para el recorrido completo con la salida esperada.

4. Qué demuestra la PoC

  1. Ataque (código vulnerable): el escalar maestro se recupera de un único descriptor público, y una firma para un período de tiempo futuro falsificada con la clave recuperada es idéntica byte a byte a la firma real de la víctima - Test01_Vulnerable_MasterKeyRecoveredFromSingleDescriptor.
  2. Defensa: la compilación parcheada rechaza la clave Tor truncada de 32 bytes con un pánico explícito que nombra el riesgo - Test02_Patched_TruncatedTorKeyRejected.
  3. Compatibilidad: las firmas de la ruta Tor parcheada aún se verifican como ed25519 estándar bajo la clave pública cegada, por lo que la interoperabilidad con Tor permanece sin cambios - Test03_Patched_TorPathSignaturesVerifyAsStdEd25519.
  4. Defensa: reproducir la misma matemática del ataque contra el código parcheado produce basura que ya no coincide con el escalar maestro verdadero - Test04_Patched_AttackMathYieldsGarbage.
  5. Defensa (#2): un descriptor falsificado autoconsistente pasa las comprobaciones del antiguo modelo de confianza (parseo + firma de cert + firma de descriptor) pero es rechazado por la nueva comprobación de vinculación por consenso - TestForgedSelfConsistentDescriptorIsDetected.
  6. Defensa (#2): la ruta de admisión real acepta descriptores honestos y rechaza los manipulados / mal vinculados - TestNewReceivedDescriptor_AcceptsHonestDescriptor, _RejectsTamperedSignature, _RejectsWrongIdentityBinding.

Todas las claves en la PoC se generan localmente en el momento de la prueba. No se atacó ningún servicio real.

5. Notas operativas - leer antes de desplegar

Descargar herramienta