Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-52134-libiec61850 — libiec61850 v1.6 の GOOSE リプレイ処理に影響する CVE-2026-52134 に関する公開技術勧告および再現エビデンス。 | Kitploit
ツール/GitHubGitHub/if-forget/cve-2026-52134-libiec61850
脆弱性分析SCADA/ICSセキュリティネットワークセキュリティ学習と教育厳選リソースラボと実践
GitHubif-forget/cve-2026-52134-libiec61850

CVE-2026-52134-libiec61850

libiec61850 v1.6 の GOOSE リプレイ処理に影響する CVE-2026-52134 に関する公開技術勧告および再現エビデンス。

リポジトリを見る
61ヶ月前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2026-52134: libiec61850 v1.6 における GOOSE リプレイおよびメッセージ鮮度処理

ステータス

CVE-2026-52134 が割り当てられました。対応する CVE レコードの公開は保留中です。

影響を受ける製品

  • ベンダー: MZ Automation GmbH
  • 製品: libiec61850
  • テスト済みバージョン: 1.6
  • 他のバージョンのステータス: 未確認
  • 影響を受けるファイル: src/goose/goose_receiver.c
  • 影響を受ける関数: parseGoosePayload()

概要

libiec61850 v1.6 の GOOSE サブスクライバ受信パスは、サブスクライバから見える状態を更新し、登録済みリスナーコールバックを呼び出す前に、特定のリプレイまたは古い GOOSE メッセージを適切に拒否しません。

2 つの制御された実験は、同じ受信パスにおける関連する動作を示しています:

  1. 低い stNum へのロールバック: サブスクライバが stNum=2 を処理した後、以前にキャプチャした stNum=1 フレームをリプレイすると、リスナーが古い状態とデータを再度報告しました。
  • 非増加 sqNum のリプレイ: 同じ stNum であるが古い sqNum を持つ以前にキャプチャしたフレームをリプレイすると、そのフレームは無効とマークされましたが、リスナーコールバックは依然として発生し、リプレイされたデータは見えたままでした。
  • これらは、2 つの別々の CVE ではなく、1 つのリプレイ/メッセージ鮮度処理の問題に関する 2 つの関連する観察結果として提示されています。

    攻撃の前提条件

    攻撃者は以下を実行できる必要があります:

    • 関連する IEEE 802.3 レイヤー2 ブロードキャストドメインまたは VLAN にアクセスする
    • 正当な GOOSE イーサネットフレームをキャプチャする
    • EtherType 0x88B8 を使用してイーサネットフレームを注入する

    これは、任意のインターネットベースのリモート攻撃ではありません。

    技術的根拠

    関連する受信ロジックは、受信した stNum が保存されている stNum と等しい場合に sqNum をチェックします。テストされたコードパスは、サブスクライバ状態が更新され、リスナーが呼び出される前に、より低い stNum を拒否しません。

    テストされたライブラリファイルは変更されていません。src/goose/goose_receiver.c のオリジナルと作業用コピーは同じ SHA-256 値を持っていました:

    root@kitploit:~
    c42f2aec80f605c458d0bca524ccb09f2e35f9b83a02f854f95d9444616c075b
    

    ソース整合性チェック

    テスト環境

    • Ubuntu 20.04.6 LTS
    • libiec61850 v1.6
    • Linux veth0 / veth1 分離された仮想イーサネットペア
    • tcpdump
    • TShark
    • Python 3 および Scapy
    • テストハーネスとしてのみ使用された、変更されたサンプルパブリッシャーおよびサブスクライバ

    テストハーネスは制御された状態遷移を生成し、コールバックから見える stNum、sqNum、有効性、およびデータ値を出力しました。脆弱なライブラリファイル自体は変更されていません。

    実験 A: 低い stNum へのロールバック

    ベースライン

    制御されたパブリッシャーは 2 つの状態を送信しました:

    root@kitploit:~
    State A: stNum=1, sqNum=0, data=1111
    State B: stNum=2, sqNum=0, data=2222
    

    ベースラインのパケットキャプチャには、この順序で 2 つの GOOSE フレームが含まれていました:

    root@kitploit:~
    Frame 1: stNum=1, sqNum=0
    Frame 2: stNum=2, sqNum=0
    

    ベースラインフィールドとコールバック

    サブスクライバ出力には、State B の前に valid=false とマークされた stNum=1, sqNum=0 の補助コールバックも含まれていました。この補助コールバックは証拠に保持されていますが、ロールバックの結論の根拠としては使用されていません。決定的なリプレイ前状態は、stNum=2 とデータ値 2222 を含む後のコールバックでした。

    単一リプレイ

    リプレイスクリプトは 2 フレームのベースラインキャプチャを読み込み、フレーム 1 を選択し、veth0 を通じて 1 回送信しました。

    リプレイの直前、リスナーは次のように報告していました:

    root@kitploit:~
    stNum=2, sqNum=0, valid=true, allData={2222}
    

    古いフレームが 1 回リプレイされた後、リスナーは次のように報告しました:

    root@kitploit:~
    stNum=1, sqNum=0, valid=true, allData={1111}
    

    単一リプレイと stNum ロールバック

    これは、以前にキャプチャされた低い stNum のフレームをリプレイした後に、stNum=2 から stNum=1 へのサブスクライバ状態のロールバックが観察されることを示しています。

    追加の同一リプレイ

    同じ古いフレームのコピーがさらに 4 つ送信されました。4 つすべてに stNum=1, sqNum=0 が含まれていました。

    後のコピーは valid=false と報告されましたが、コールバック番号は増え続け、リプレイされたデータは表示されたままでした:

    重複リプレイでもコールバックが発生

    この二次的な観察は、繰り返されたフレームを無効とマークしても、テストされた受信パスにおけるリスナーへの配信を妨げなかったことを示しています。

    実験 B: 非増加 sqNum のリプレイ

    初期の再現では、公式のサンプルパブリッシャーとサブスクライバが使用されました。パブリッシャーは通常のシーケンスを生成しました:

    root@kitploit:~
    stNum=1
    sqNum=0, 1, 2, 3
    

    最初にキャプチャされたフレーム (stNum=1, sqNum=0) は、サブスクライバがすでに後のシーケンス値を処理した後にリプレイされました。

    元の sqNum ベースライン

    リプレイされたコピーは、受信した sqNum=0 が保存されたシーケンス値より新しくなかったため、無効と報告されました。ただし、サブスクライバはリプレイされたデータを含むリスナーイベントを出力し続けました:

    元の sqNum リプレイコールバック

    この実験は、より限定的ではあるが関連する観察を裏付けています:

    • 同一状態のリプレイは有効性フラグを通じて検出されました。
    • 検出は、テストされた例において、リプレイされたメッセージのコールバック配信を妨げませんでした。

    生の元のリプレイスクリーンショットは、補足資料として保持されています:

    • 12-original-sqnum-replay-command-raw.png
    • 13-original-sqnum-replay-terminal-raw.png

    これらの生の画像には、無関係な Scapy オプションモジュールのインポート警告が含まれています。警告は、スクリプトがキャプチャされた GOOSE フレームを報告して送信を完了することを妨げませんでしたが、技術的な結果を確認するには、上記のより鮮明なスクリーンショットが推奨されます。

    2 つの実験の関係

    これらの実験は、同じ GOOSE リプレイ/メッセージ鮮度問題の異なる分岐を示しています:

    観察受信メッセージ観察された結果
    低い stNum のリプレイ保存済み stNum=2; 受信した古い stNum=1テストした実行では、古い状態とデータがリスナーに配信され、有効として報告されました
    非増加 sqNum のリプレイ同じ stNum; 受信した古いまたは重複した sqNumメッセージは無効と報告されましたが、リスナーコールバックとリプレイデータ配信は継続しました

    最初の観察は、新しい状態から古い状態へのロールバックを示すため、主要な CVE 発見事項です。2 番目の観察は、無効な同一状態のリプレイがリスナーパスを通じて継続する方法に関する裏付けとなる証拠です。

    観察された影響

    実証されたソフトウェアレベルの影響は次のとおりです:

    • 新しい状態がすでに処理された後、以前に受け入れられた GOOSE 状態がリスナーに配信される可能性があります。
    • サブスクライバから見える状態が、より新しい stNum からより古い stNum に移動する可能性があります。
    • 繰り返される古いフレームは、後のコピーが無効と報告された場合でも、リスナーアクティビティを引き起こし続ける可能性があります。

    独立した鮮度チェックなしでコールバックデータを消費するアプリケーションは、古い値またはリプレイされた値を処理する可能性があります。

    下流への影響は、サブスクライバアプリケーション、構成、インターロックロジック、および保護ロジックに依存します。

    これらの実験では、物理的な保護リレー、トリップ回路、遮断器、または実運用の変電所ネットワークはテストまたは操作されていません。

    推奨される改善の方向性

    サブスクライバ状態を更新するか、リスナーを呼び出す前に:

    1. 最後に受け入れられた stNum より古い受信 stNum を拒否します。
    2. stNum が変更されていない場合、非増加の sqNum を拒否します。
    3. 無効と分類されたフレームが、最後に受け入れられた状態を上書きしたり、通常のリスナーパスを通じて古いデータを配信したりできないようにします。
    4. 最終的な実装では、正当な再起動、再同期、およびカウンタ処理動作を考慮します。

    一時的なリスク軽減

    • GOOSE イーサネットセグメントおよび VLAN へのアクセスを制限します。
    • 許可されていないデバイスがレイヤー2 フレームを注入するのを防ぎます。
    • 予期しない stNum ロールバックと繰り返される sqNum 値を監視します。
    • 重要なロジックでコールバック値を使用する前に、サブスクライバデータの鮮度を検証します。
    • 本番展開の前に、分離されたラボ環境で変更をテストします。

    裏付けとなる証拠

    以下の画像は、来歴と環境情報を提供します。これらは再現を裏付けるものですが、主な結果を理解するために個別に必要なわけではありません。

    テストハーネスの検査

    テストハーネスの検査

    ビルド成功

    ビルド成功

    分離された veth ネットワーク

    分離された veth ネットワーク

    ベースラインキャプチャの概要

    ベースラインキャプチャの概要

    アーティファクトのチェックサム

    アーティファクトのチェックサム

    提案される分類

    • 弱点: リプレイおよびメッセージ鮮度検証の弱点
    • 提案 CWE: CWE-294、キャプチャリプレイによる認証バイパス

    実証された結果は、リプレイの受け入れと古い状態の配信です。これは、テストされた展開で暗号認証が有効であったことを証明することに依存しません。

    参考情報

    • 公式 libiec61850 リポジトリ
    • v1.6 ツリー内の影響を受けるソースファイル
    • CVE.org の CVE-2026-52134

    クレジット

    報告者:

    • Wang Jing
    • Li Chen Yu
    • Guo Lu Lu
    • Guo Jia Xin
    • Zhang Jia Tu
    ツールをダウンロード