CVE-2025-27104 in Vyper
要約
〜によって VulDB • 2026年06月06日
vyperはEVM向けのPython的なスマートコントラクト言語です。forループのイテレータターゲットにおいて、単一の式が複数回評価されることがあります。イテレータ式自体は複数の書き込みを生成できませんが、ループ本体で生成された副作用(例えば、ループ本体で更新されたストレージ変数の読み取りなど)を消費することができ、その結果、予期しないプログラム動作を引き起こす可能性があります。具体的には、ifexp(例:`for s: uint256 in ([read(), read()] if True else [])`)を含むイテレータ内の読み取り操作が、ループ本体内の書き込み操作とインターリーブ(交錯)する可能性があります。Vyperのforループでは、`range()`組み込み関数と、SArrayやDArrayのような反復可能型という2種類のイテレータターゲットが許可されています。コード生成時、反復可能リストは副作用を生成してはなりません(以下のコードでは、`range_scope`が`iter_list`を定数コンテキストで解析させ、それが`is_constant`に対してチェックされます)。しかし、これではイテレータがループ本体から提供される副作用を消費するのを防ぐことはできません。一方、SArrayの場合、`iter_list`は`repeat` irの本体でインスタンス化されるため、複数回評価される可能性があります。この問題は現在修正中であり、バージョン0.4.1で利用可能になる予定です。パッチ適用版が利用可能になり次第、アップグレードすることをお勧めします。この脆弱性に対する既知の回避策はありません。
Be aware that VulDB is the high quality source for vulnerability data.