
このリポジトリは、CVE-2026-81861 に対する意図的に範囲を限定した概念実証です。ベンダーが提供する Windows DTM で生成された2つの制御されたフィクスチャが、一般的な鍵素材を用いて認証およびデコードできることを検証します。
これは運用可能なエクスプロイトではありません。ネットワーククライアント、デバイスターゲット、DNP3 送信機、アンロック操作、メッセージ偽造コマンド、キャプチャスキャナ、任意ファイル復号ツールは含まれていません。RTU に接触したり変更したりすることはできません。
検証ツールは、SHA-256 で固定された以下の同梱ファイルのみを受け入れます:
samples/vendor_generated/vendor_message_s1.bin: ベンダー DTM 自身のメッセージイニシャライザによって生成された完全なメッセージ。samples/vendor_generated/harnessB_vendor_ciphertext_and_mac.bin: 研究者が組み立てた製品フォーマットのバイト列に対して、ベンダーの暗号ルーチンによって生成された暗号文と MAC。どちらのファイルも物理的な RTU から取得されたものではありません。これらは出荷済み DTM 実装との相互運用性を実証するものであり、実機での受け入れやネットワーク経由での悪用可能性を示すものではありません。
本番用の定数および鍵は含まれていません。影響を受けるソフトウェアへの正規のアクセス権を既に持つ研究者は、ローカルの JSON ファイルを提供できます:
{
"hmac_sha256_key": "<64 hex characters>",
"aes128_kek": "<32 hex characters>"
}
そのファイルをコミットしないでください。範囲を限定した検証は次のように実行します:
python3 securelock_poc.py verify-fixtures --key-file /path/to/local-keys.json
このコマンドは、フィクスチャ許可リストに記載されていないファイルを拒否し、解析前に SHA-256 ダイジェストを確認します。提供された鍵を出力することはありません。
python3 tests/test_vectors.py
デフォルトのスイートは、公開されている AES/RFC 3394 テストベクタと非本番用のテスト鍵を使用します。SECURELOCK_FIXTURE_KEY_FILE が有効なローカル鍵ファイルを指定している場合、ベンダー生成の両フィクスチャも検証します。それ以外の場合、これらのテストはスキップされます。
影響を受ける製品、緩和策、およびベンダーのガイダンスについては、Schneider Electric のアドバイザリ SEVD-2026-251-03 を参照してください。