コンテンツにスキップ

リリースノート - v0.202.1

タイトル: Byron の信頼ルート検証とデコードの安全性を改善

日付: 2026年8月27日

バージョン: v0.202.1

このリリースでは、デコーダーが不正な入力によってパニックすることを防ぎ、説明的なエラーを返すようになりました。また、Byron の信頼ルートとネットワークタイミング設定を使用前に追加検証します。

  • 改善 不正な CBOR の処理: 台帳の CBOR デコードとブロック本文の解析で、インデックス参照前にデコード済み配列の形状を検証するようになりました。ApplyTxError.UnmarshalCBOR は、2要素未満の UtxowFailure 配列を説明的なエラーで拒否します。OutsideValidityIntervalUtxo.Error は、具体的な ValidityInterval の値が []any であることを確認し、デコード後の長さも検証します。GetTxBodies は、最小フィールド数を示すインデックス付きエラーを返して空のトランザクション行を拒否しますが、本文のみを含む行は受け入れます。回帰テストで、短い UtxowFailure 配列、形式不正な ValidityInterval の形状、空のトランザクション行、本文のみの行を対象にしています。
  • 強化 Byron の信頼ルートとタイミングの検証: Byron ヘッダーは、genesis の信頼ルートが空の場合に安全側に倒れ、ErrGenesisIssuerSetEmpty を報告するようになりました。ComputeGenesisWindow(uint64, error) を返し、securityParam がゼロ、activeSlotCoeff が nil または範囲外、あるいはオーバーフローとなる入力を拒否します。NewGenesisSelector(*GenesisSelector, error) を返し、不足している genesis ウィンドウを計算するとともに、不一致を拒否します。NewNetworkConfigFromReader は、securityParamActiveSlotCoeff、整数ナノ秒で表せる slotLengthtime.Duration の範囲、epochLengthSlotsPerKESPeriodMaxKESEvolutions を検証します。SlotDuration は変換結果を表現できない場合にゼロを返し、cbor.Rat の JSON デコードは分母がゼロの場合に拒否します。破壊的変更: 呼び出し側では、ComputeGenesisWindowNewGenesisSelector が返すエラーを処理する必要があります。無効な Byron、ネットワーク、genesis の設定は、安全でない値のまま処理を続行せず、安全に失敗するようになりました。

変更内容の比較: v0.202.0…v0.202.1


Doc Holiday logo

Docs authored by Doc Holiday

ページを編集

最終更新日: