🇰🇷 한글 설명
Vyper의 특정 버전에서 소스 코드 라인 테이블을 생성할 때 사용하는 str.splitlines() 함수가 Python 파서와 다르게 줄바꿈 문자를 처리하는 취약점이 발견되었습니다. 공격자가 주석이나 문자열 내에 특수 문자를 삽입하면, 실제 실행되는 코드의 숫자 리터럴(주소, 정수 등)을 교묘하게 변경하여 악성 동작을 유도할 수 있습니다.
💡 쉬운 설명
코드 작성 시 눈에 보이지 않는 특수 문자를 사용하여, 개발자가 작성한 숫자나 주소를 컴퓨터가 다르게 읽도록 속이는 공격입니다. 이를 통해 공격자는 코드를 변조하지 않은 것처럼 보이게 하면서 실제로는 다른 값을 실행하게 만들 수 있습니다.
🇺🇸 원문 (English)
Vyper 0.1.0b1 before 0.1.0b17 and 0.4.1 through 0.5.0b1 builds its source-line table with str.splitlines(), which treats characters like form feed and U+2028 as line breaks the Python parser ignores, so numeric literals are classified and validated from shifted source text. An attacker contributing source code can hide these characters in comments, strings or indentation to silently change address, integer or decimal constants.
📍 영향받는 시스템
Vyper 0.1.0b1 미만 버전 및 0.4.1부터 0.5.0b1 미만 버전
⚔️ 공격 벡터
소스 코드의 주석, 문자열 또는 들여쓰기 부분에 Python 파서가 무시하는 특수 줄바꿈 문자를 삽입하여 상수 값을 조작
🛡️ 대응 방법
Vyper를 취약점이 해결된 최신 버전(0.1.0b17 이상 또는 0.5.0b1 이후 버전)으로 업데이트하십시오.
🔧 검증 코드
출력된 버전이 취약 범위(0.1.0b1 미만 또는 0.4.1~0.5.0b1 미만)에 해당하는지 확인하십시오.
pip show vyper | grep Version