CVE-2024-24563 in Vyper정보

요약

\~에 의해 VulDB • 2026. 06. 30.

Vyper는 이더리움 가상 머신(EVM)을 위한 파이썬 스타일의 스마트 계약 언어입니다. 배열은 부호 없는 정수용으로 정의되지만, 키로 부호 있는 정수를 사용할 수 있습니다. 타입 체커(array index로 `int` 사용 시에도 예외를 발생시키지 않고 허용합니다.)는 부호 있는 정수가 인덱스로 사용되는 것을 허용합니다. 이 취약점은 0.3.10을 포함한 모든 버전에서 다양한 형태로 존재합니다. int의 경우 2의 보수 표현이 사용됩니다. 배열이 매우 크게 선언되었기 때문에 경계 검사(bounds checking)를 통과하게 되며, 음수 값은 단순히 매우 큰 숫자로 표시됩니다. 게시 시점 기준 수정된 버전은 존재하지 않습니다.

세 가지 잠재적 취약성 클래스가 있습니다: 예측 불가능한 동작, 접근 불가 요소에 대한 접근 및 서비스 거부(Denial of Service). 클래스 1: 배열을 되돌림(revert) 없이 음수 정수로 인덱싱할 수 있는 경우, 이는 개발자가 예상하지 못한 행동일 가능성이 높으며 이러한 접근은 계약의 예측 불가능한 동작을 초래할 수 있습니다. 클래스 2: 계약에 `assert index = x` 형태의 불변식(invariant)이 있다고 가정해 봅시다. 그러나 음수 인덱스를 사용하면 이를 우회할 수 있습니다. 클래스 3: 인덱스가 계약의 상태(state)에 의존하는 경우, 이는 서비스 거부 위험을 초래합니다. 계약 상태를 조작하여 인덱스가 강제로 음수가 되도록 할 수 있다면(대부분 배열이 극도로 크게 선언되지 않았기 때문에), 배열 접근은 항상 되돌림(revert)될 수 있습니다. 그러나 이러한 시나리오들은 모두 매우 드문 경우입니다. 가장 일반적인 동작은 경계 검사 단계에서 되돌림(revert)되는 것입니다.

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

책임이 있는

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!