CVE-2024-24563 in Vyper情報

要約

〜によって VulDB • 2026年06月30日

Vyperは、Ethereum Virtual Machine(EVM)向けのPython風のスマートコントラクト言語です。配列のインデックスには符号付き整数を使用できますが、定義上は符号なし整数のみを対象としています。型チェッカーは、`int`を配列のインデックスとして使用していることを検出してもエラーをスローしません。つまり、型チェッカーは符号付き整数を配列のインデックスとして使用するのを許可しています。この脆弱性は `0.3.10` を含むすべてのバージョンに存在します。

`int` には2の補数表現が使用されます。配列が非常に大きく宣言されている場合、境界チェックは通過し、負の値は単に非常に大きな数値として表現されます。公開時点では修正版は存在しません。

これにより3つの潜在的な脆弱性クラスが生じます:予期せぬ動作、アクセス不可能な要素へのアクセス、およびサービス拒否(DoS)。

1. クラス1: 配列をロールバックせずに負の整数でインデックス付けできる場合、これはおそらく開発者の意図するところではなく、そのようなアクセスによりコントラクトの予期せぬ動作を引き起こす可能性があります。 2. クラス2: コントラクトに `assert index = x` という形式の不変条件がある場合、通常は特定の要素のみがアクセス可能ですが、負のインデックスを使用することでこれを回避できます。 3. クラス3: インデックスがコントラクトの状態に依存している場合、サービス拒否(DoS)のリスクが生じます。コントラクトの状態を操作してインデックスが強制的に負になるようにすると、配列アクセスは常にロールバックする可能性があります(おそらく配列が極端に大きく宣言されていないため)。ただし、これらのシナリオはいずれも非常に発生しにくいと考えられます。最も可能性の高い動作は、境界チェック時にロールバックすることです。

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

責任者

GitHub, Inc.

予約する

2024年01月25日

モデレーション

承諾済み

エントリ

VDB-253130

EPSS

0.01539

アクティビティ

非常低い

ソース

Want to stay up to date on a daily basis?

Enable the mail alert feature now!