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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
sonic-gnmi-noauth — SONiC gNMI における fail-open 認証脆弱性を文書化・再現します。空の UserAuth マップにより、未認証での gNMI Set および gNOI 書き込みが可能になる問題を、ループバックラボハーネスを用いて検証します。 | Kitploit
ツール/GitHubGitHub/abraxas/sonic-gnmi-noauth
組み込みシステムセキュリティ脆弱性分析エクスプロイトネットワークセキュリティペネトレーションテストハードウェアとIoTセキュリティ認証設定ミスラボと実践
GitHubabraxas/sonic-gnmi-noauth

sonic-gnmi-noauth

SONiC gNMI における fail-open 認証脆弱性を文書化・再現します。空の UserAuth マップにより、未認証での gNMI Set および gNOI 書き込みが可能になる問題を、ループバックラボハーネスを用いて検証します。

715日前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
リポジトリを見る

Abraxas Labs - sonic-gnmi-noauth

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  sonic-gnmi-noauth

sonic-gnmi-noauth

SONiC gNMI f13a08e0440f - SONiC Foundation / sonic-net

コミュニティ版 SONiC NOS。Dell Enterprise SONiC ではない。SonicWall SonicOS でもない。委員会は CVE を発行しない。gnmi-native.sh は --client_auth を省略すると認証が完全に無効化されることを把握しているため、user_auth が欠落している場合は証明書モードを強制する。フェイルクローズド。しかし証明書が存在しない場合、--ca_crt を渡すことは決してない。setupFlags は CA が存在しないため証明書を unset する。authenticate() は空のマップを成功として扱う。ネイティブおよび translib の書き込みはコンパイルされたまま残る(ENABLE_NATIVE_WRITE=y)。2 つの本番フラグセット、同じスキップ:デフォルト ToR は --noTLS --bind_address 127.0.0.1、SmartSwitch DPU は --insecure --allow_no_client_auth、bind は空、全インターフェース、ポート 8080。

証明書 unset 後の空の UserAuth は、認証されていない gNMI Set および gNOI 書き込みである。証明書のない DPU は :8080 でリモートに公開される。

IDCVE 未発行
CWECWE-306、CWE-287
CVSSCritical: 9.8 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H(DPU 証明書なし)。デフォルト ToR は 127.0.0.1:8080 上の同じスキップ(High、ローカル)。
Productsonic-gnmi / sonic-buildimage
Affectedsonic-gnmi から master f13a08e0440f まで、ランチャー 9495839742e4
Auth認証なし
LicenseGNU Affero GPL v3.0
Lab127.0.0.1 のみ

攻撃者ができること

gNMI 証明書のない SmartSwitch DPU 上では、ネットワークから TCP :8080、JWT なし、PAM なし、クライアント証明書なしで、gnmi.gNMI/Set(ネイティブ CONFIG_DB / translib)を呼び出せる。gnoi.debug.Debug を呼び出せる。再起動。工場出荷時リセット。/tmp、/var/tmp、/host 配下への File.Put。

証明書のないデフォルト ToR/リーフでは、127.0.0.1:8080 に到達できる任意のプロセスが同じことを行える。gnmi コンテナはホストネットワーク上にあるため、そのループバックはホストのものである。

つまり、認証なしでスイッチ設定の書き換えと admin としてのホストコマンド実行が可能である。デバッグのホワイトリストには docker、config、redis-cli、sonic-installer、reboot が含まれる。デフォルトの admin は docker および %sudo に属する。ドキュメント化されたデフォルトの admin パスワードではない。KillProcess は空の UserAuth に対して依然として Unauthenticated を返す。これを成功の判定基準として使用しないこと。

発見の経緯

最初に SECURITY.md を読んだ。sonic-net/SONiC は wiki である。コードは兄弟の sonic-net/* ツリーにある。次にそれらのピンに対して 10 回の調査を行った:CLI インジェクション、REST 認証、gNMI Set、hostcfgd PAM、RESTCONF、ZTP、イメージの Redis/sshd/sudo、FEATURE デフォルト、GCU/SSTI、DHCP/LLDP/SNMP。実機スイッチは使用していない。基準は Critical/High であった。

その基準のほとんどはすでにクローズされているか、デフォルトではない。sonic-restapi は INCLUDE_RESTAPI ?= n である。RESTCONF の本番ランチャーは PAM を強制する。ホスト Redis は 127.0.0.1 で requirepass なしだが、これは最初のホップであり、脆弱性ではない。gnmi コンテナはオプションではない。INCLUDE_SYSTEM_GNMI = y。FEATURE gnmi は有効。ホストネットワーク、ホスト PID、ホストユーザー名前空間。

完全な sonic-vs イメージは立ち上げていない。ラボは、ピン f13a08e0440f の setupFlags と authenticate() の SHA256 検証済み抽出物を薄く gRPC でラップしたものである。両方のリスナーは auth_enabled=false および enable_native_write=true で SONIC-GNMI-NOAUTH-WITNESS を返した。認証情報なしのパスワード UserAuth は Unauthenticated である。これが実際のスキップであり、常に成功するスタブではない。

すでに記録済みの誤った方向:KillProcess Unauthenticated(その RPC はすでに空の UserAuth を拒否する - ラボは Set パスの authenticate() スキップを必要とする)、パスワード UserAuth がオンで認証情報がない場合の Probe OK(その場合の判定基準はスタブである)、gNOI Debug docker ガジェット、nsenter ペイロード、リバースシェル。すべて茶番である。これを Dell Enterprise SONiC ボックスや SonicWall に向けるのは誤った製品である。

ラボ

cd lab
./run.sh

対象は 127.0.0.1:18080(ToR 平文)と 127.0.0.1:18081(DPU TLS-insecure)のみ。薄い gRPC であり、完全な DPU イメージではない。ピン抽出物はビルド時に sonic-gnmi f13a08e0440f に対してハッシュ化される。

IOC tor-connect 127.0.0.1:18080 plaintext no-metadata
IOC tor-check witness=SONIC-GNMI-NOAUTH-WITNESS auth_enabled=false enable_native_write=true user_auth_any=false mode=tor
IOC dpu-connect 127.0.0.1:18081 tls-insecure no-client-cert no-metadata
IOC dpu-check witness=SONIC-GNMI-NOAUTH-WITNESS auth_enabled=false enable_native_write=true user_auth_any=false mode=dpu
IOC tor-negative status=UNAUTHENTICATED
IOC dpu-negative status=UNAUTHENTICATED
SUCCESS SONIC-GNMI-NOAUTH who=unauth tor=18080 dpu=18081 SONIC-GNMI-NOAUTH-WITNESS

修正

証明書を除去した後に UserAuth が空の場合、Set/gNOI 書き込みを提供しないか、ループバック以外でリッスンしないこと。--noTLS パスでも UserAuth をコピーすること。サーバー証明書と CA をプロビジョニングして --ca_crt が設定され、証明書モードが unset されないようにすること。到達可能な :8080 上で SmartSwitch DPU の証明書なし(空の CA で --insecure --allow_no_client_auth)を実行しないこと。書き込みパスで空の UserAuth に対して両方のリスナーが Unauthenticated を返さなければならない。

参考資料

  • sonic-gnmi f13a08e0440f · telemetry.go · server.go · whitelist.go · command.go
  • sonic-buildimage 9495839742e4 · gnmi-native.sh · rules/config · init_cfg.json.j2
  • SECURITY.md
  • CWE-306 · CWE-287

ライセンス

GNU Affero GPL v3.0。LICENSE を参照。ループバックラボのみ。無保証。

ツールをダウンロード