Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
gobalance-patch — GoBalance onion load balancer のセキュリティパッチと概念実証。blindedSign によるマスターキー復元と偽造ディスクリプタの受理を対象とし、回帰テストを含む。 | Kitploit
ツール/GitHubGitHub/kolmteistov/gobalance-patch
脆弱性分析エクスプロイトウェブアプリケーション悪用暗号化ペネトレーションテスト学習と教育
GitHubkolmteistov/gobalance-patch

gobalance-patch

GoBalance onion load balancer のセキュリティパッチと概念実証。blindedSign によるマスターキー復元と偽造ディスクリプタの受理を対象とし、回帰テストを含む。

リポジトリを見る
361日前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

GoBalance セキュリティパッチ & PoC

gitlab.com/n0tr1v/gobalance 向けアドバイザリパッケージ - master ブランチ、コミット bb1b0f3("fix crash")。 ステータス: CRITICAL - 2つの独立した完全乗っ取り経路。 上流の patch1 ブランチはどちらも修正していない。

本パッケージには、完全なセキュリティパッチ、両方の攻撃経路に対するエンドツーエンドの概念実証、および修正が有効であることを証明する回帰テストが含まれている。これは、2つのフォーラムに影響を与えた最近の onion ドメイン乗っ取りインシデントに関連して作成された完全な脆弱性分析レポート("Laporan Analisis Keamanan GoBalance")に付随するものである。ステップバイステップのビルド & テストガイドは USAGE.md にある。


1. エグゼクティブサマリ

#脆弱性深刻度影響ステータス
1マスター識別鍵が blindedSign を通じて漏洩(定数 nonce プレフィックス)CRITICAL単一の公開ディスクリプタから onion アイデンティティを完全復元修正済み
2RegisterDescriptor が偽造インスタンスディスクリプタを受け入れる(署名 / バインディング検証なし)CRITICAL任意の GoBalance フロントエンドのトラフィックハイジャック修正済み
3pkg/brand における決定論的で時刻シードの RNG 経路HIGH(footgun)これを使用するあらゆるものに対して予測可能な鍵素材削除済み
4イントロダクションポイントのシャッフルが math/rand を使用LOWプロトコル隣接コードにおける弱い乱数crypto/rand に置換

脆弱性 #1 - 単一の公開ディスクリプタからのマスター鍵復元(CRITICAL)

pkg/stem/descriptor/hidden_service.go のディスパッチャ blindedSign() は、 identityKey.Seed() - 生の 32 バイトスカラー a - を BlindedSignWithTorKey() に渡していた。Tor 形式の鍵は拡張鍵である: 64 バイトの (a || h)、ここで h は署名ごとの nonce プレフィックスを導出する PRF 鍵である。h が欠落していると、nonce 導出入力は空になり、

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

は公開定数となった。結果: 公開されたディスクリプタを 1 つでも読める者は誰でも nonce r を再計算し、ブラインドされたスカラー s' = (S − r) · H(R‖PK‖M)⁻¹ mod L を解き、公開乗数でアンブラインドできる - onion サービスのマスター識別鍵を復元できる。サーバアクセスも MitM もブルートフォースも不要である。これはサイレントなドメイン乗っ取りプリミティブであり、最近のフォーラムハイジャックで観測されたメカニズムと一致する。

修正: ディスパッチャは完全な拡張鍵 (gobpk.PrivateKey.PrivKey()) を転送するようになった。BlindedSignWithTorKey は正確に 64 バイトでない鍵に対してパニックする。blindedSignP2 は多層防御として ESK 長を独立に強制する。gobpk.New はロード時に切り詰められた Tor 鍵を拒否する。

脆弱性 #2 - 偽造インスタンスディスクリプタが受け入れられる(CRITICAL)

NewReceivedDescriptor() はネットワークから渡されたものを解析し、信頼していた。 サブクレデンシャルはディスクリプタ自体の中に含まれるブラインド鍵から導出されるため、攻撃者は自身の鍵を使って他人の onion アドレスに対する暗号学的に自己整合的なディスクリプタを鋳造できた。フロントエンドはその後、被害者のアイデンティティの下で攻撃者のイントロダクションポイントを再公開してしまう - 鍵復元を一切必要としない完全なトラフィックハイジャックである。

修正: 新しい VerifyHiddenServiceDescriptorV3() における 3 層検証: (1) ブラインド鍵の下での証明書署名、(2) 証明された署名鍵の下でのディスクリプタ署名、および (3) バインディング - ブラインド鍵は、フロントエンドがコンセンサス (GetBlindingParam + 時間期間) とインスタンスアドレスから独立に計算する値と等しくなければならない。RegisterDescriptor はフェイルクローズドである: ライブコンセンサスがなければ、盲目的に信頼するのではなく登録を拒否する。

2. 本パッケージの内容

gobalance-patch/
├── README.md                  ← このファイル(英語)
├── USAGE.md                   ← ステップバイステップのビルド & テストガイド(英語)
├── README_ID.md               ← ringkasan patch(インドネシア語)
├── gobalance-security.patch   ← master@bb1b0f3 に対する unified diff(7 ファイル、+360/−94)
├── gobalance-patched/         ← 完全なパッチ適用済みソースツリー(ドロップイン)
│   ├── go.mod / go.sum / main.go
│   ├── pkg/…                  ← パッチ適用済みライブラリ、回帰テストを含む
│   ├── poc/                   ← エンドツーエンド攻撃デモ + 脆弱コードスナップショット
│   ├── cmd/gbdemo/            ← スタンドアロン復元デモ CLI(+ E2E テスト)- USAGE #13
│   └── tools/                 ← pem2tor.py(PEM→Tor 鍵コンバータ)、get_desc.py(ディスクリプタ取得)
└── gobalance-v1/              ← コミュニティフォーク "GoBalance Enhanced v1.0"(Dread)、テスト用に
                                 配布されたままバンドル - 依然として脆弱 - USAGE #14

3. クイックスタート

# 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

期待される出力を含む完全なウォークスルーは USAGE.md を参照。

4. PoC が証明するもの

  1. 攻撃(脆弱コード): マスタースカラーが単一の公開ディスクリプタから復元され、復元された鍵で将来の時間期間に対する署名を偽造すると、被害者の本物の署名とバイト単位で完全に一致する - Test01_Vulnerable_MasterKeyRecoveredFromSingleDescriptor。
  2. 防御: パッチ適用済みビルドは、切り詰められた 32 バイトの Tor 鍵を、リスクを明示するパニックで拒否する - Test02_Patched_TruncatedTorKeyRejected。
  3. 互換性: パッチ適用済みの tor-path 署名は、ブラインド公開鍵の下で標準 ed25519 として依然として検証されるため、Tor 相互運用性は変わらない - Test03_Patched_TorPathSignaturesVerifyAsStdEd25519。
  4. 防御: 同じ攻撃数学をパッチ適用済みコードに対して再生すると、真のマスタースカラーと一致しなくなったガベージが生成される - Test04_Patched_AttackMathYieldsGarbage。
  5. 防御(#2): 自己整合的な偽造ディスクリプタは、古い信頼モデルのチェック(parse + cert-sig + descriptor-sig)を通過するが、新しいコンセンサスバインディングチェックによって拒否される - TestForgedSelfConsistentDescriptorIsDetected。
  6. 防御(#2): 実際の取り込み経路は、正直なディスクリプタを受け入れ、改ざんされた / 誤ってバインドされたものを拒否する - TestNewReceivedDescriptor_AcceptsHonestDescriptor、 _RejectsTamperedSignature、_RejectsWrongIdentityBinding。

PoC 内のすべての鍵はテスト時にローカルで生成される。実在のサービスは標的にされていない。

5. 運用上の注意 - デプロイ前に読むこと

  1. 脆弱なコードを実行したことがある場合は鍵をローテーションすること。 公開ディスクリプタ 1 つでマスター鍵を復元するのに十分だった(脆弱性 #1)。パッチは今後の漏洩を塞ぐが、すでに公開されたディスクリプタを非公開に戻すことはできない。新しい onion アイデンティティを作成して移行すること。
  2. ワイヤ互換性は維持される。 ディスクリプタ形式は変わらず、署名はブラインド鍵の下で標準 ed25519 のままである - Tor および通常の検証者は違いを見分けられない。Seed/PEM 形式の鍵は以前とまったく同じように動作する(その経路は常に正しかった。元の TestBlindedSign は依然としてパスする)。
  3. フェイルクローズド動作は意図的である。 ライブコンセンサスがなければ、フロントエンドはインスタンスディスクリプタを盲目的に信頼するのではなく、登録を拒否するようになった。
  4. 上流の patch1 ブランチは脆弱性 #1 も #2 も修正しない。 本パッチは master の上に適用する必要がある(またはバンドルされたツリーを使用すること)。

6. テスト環境

  • Go 1.21.13、linux/amd64(go.mod は go 1.18 を宣言)。
  • go vet ./... クリーン、go build ./... OK。
  • go test ./... → 8 パッケージ ok、失敗 0、回帰なし(既存の上流テストを含む)。
ツールをダウンロード