Hydraにおけるターゲットブラックリストの回避により、コード実行が可能になる。
## 概要
Hydraの`instantiate()` APIは、設定ファイル内の`_target_`フィールドで指定されたPythonの呼び出し可能オブジェクトを解決し、実行します。CVE-2026-68508に対応するために導入されたターゲットブラックリストは、不完全でした。
代表的な回避策としては、`timeit.timeit`のような実行ラッパー、`pickle.loads`による実行可能なオブジェクトのデシリアライゼーション、および、実際の呼び出し可能オブジェクトを隠蔽する汎用的なディスパッチまたはラッパーターゲットなどが挙げられます。ターゲットのエイリアス、呼び出し可能オブジェクトを返すヘルパー関数、および、遅延ディスパッチも、同様に名前ベースのチェックを回避する可能性があります。
攻撃者が、信頼できないHydraの設定ファイルをアプリケーションがインスタンス化するように仕向けた場合、これらの脆弱性を利用して、アプリケーションの権限でコードを実行することができます。
## 修正
Hydra 1.3.6では、1.3互換バージョンで使用されているブラックリストを拡張し、強化しました。これにより、報告されている実行およびデシリアライゼーションの脆弱性がブロックされ、正規の呼び出し可能オブジェクトの識別子とエイリアスがチェックされ、呼び出し可能オブジェクトの結果が検証され、即時のターゲットチェックを回避する汎用的なディスパッチおよびラッパーターゲットがブロックされます。
Hydra 1.3のブラックリストは、可能な限り安全性を高めるための対策ですが、完全なセキュリティ境界ではありません。信頼できない設定ファイルをインスタンス化しても安全になるわけではありません。
Hydra 1.4.0.dev9では、同様の強化が施され、実行許可リストが導入され、これが推奨される主要なセキュリティ境界となります。許可リストが提供される場合、信頼されたPythonコードによって許可されていないターゲットは拒否されます。許可リストが提供されない場合、Hydraはレガシーの動作を維持し、非推奨の警告と、可能な範囲での互換性を保つためのブラックリストを使用します。設定ファイルで実行可能な動作を選択または提供できるターゲットは、許可リストに含めることができません。
## 対策
Hydraを1.3.6にアップグレードするか、1.4のプレリリース版をテストする場合は、Hydra 1.4.0.dev9以降にアップグレードしてください。
Hydra 1.3では、信頼できないソースからの設定ファイルの読み込みは行わないでください。Hydra 1.4以降では、信頼できるPythonコードによって提供される厳格な実行許可リストを使用して、信頼できない設定ファイルを制限します。
Hydra 1.4の実行許可リストの設定については、次のページを参照してください:https://hydra.cc/docs/advanced/execution_whitelist/
影響を受けるパッケージ:
- pip (Python) hydra-core: 影響を受けるバージョンは1.3.4以上、1.3.6未満。1.3.6で修正済み。
- pip (Python) hydra-core: 影響を受けるバージョンは1.4.0.dev0以上、1.4.0.dev9未満。1.4.0.dev9で修正済み。