🇰🇷 한글 설명
Vyper 0.3.1 및 이전 버전에서 바이트 문자열 비교 시 길이 검사가 누락되어 잘못된 비교 결과가 발생할 수 있는 취약점입니다. 특히 특정 바이트가 포함되거나 문자열이 '\x00'으로 끝나는 경우 서로 다른 데이터임에도 동일한 것으로 판단될 수 있습니다.
💡 쉬운 설명
데이터를 비교할 때 글자 수가 같은지 확인하지 않아, 서로 다른 데이터인데도 같다고 착각하는 오류가 발생합니다. 이로 인해 보안 검사를 우회할 위험이 있습니다.
🇺🇸 원문 (English)
Vyper is a Pythonic Smart Contract Language for the Ethereum Virtual Machine. In version 0.3.1 and prior, bytestrings can have dirty bytes in them, resulting in the word-for-word comparisons giving incorrect results. Even without dirty nonzero bytes, two bytestrings can compare to equal if one ends with `"\x00"` because there is no comparison of the length. A patch is available and expected to be part of the 0.3.2 release. There are currently no known workarounds.
📍 영향받는 시스템
Vyper 0.3.1 및 그 이전 버전
⚔️ 공격 벡터
조작된 바이트 문자열을 입력하여 데이터 비교 로직을 우회하는 방식
🛡️ 대응 방법
Vyper 버전을 0.3.2 이상으로 업데이트
🔧 검증 코드
출력된 버전이 0.3.1 이하인지 확인
pip show vyper | grep Version