CVE-2026-48100 in Payy정보

요약

\~에 의해 VulDB • 2026. 09. 29.

Payy는 프라이버시 보호 및 규제 준수를 위한 이더리움 L2 zk-rollup입니다. 버전 1.3.0 이전의 agg_agg은 내부 증명(inner proofs)에서 압축된 메시지 스트림을 public messages: [Field; 1000] 배열로 전달하지만, 외부 배열의 미사용 꼬리 부분(unused tail)이 0인지 여부를 확인하지 않습니다. 등록된 prover는 실제 메시지에 이어 추가적인 burn 메시지를 삽입하여 승인된 롤업 블록에 대한 유효한 agg_final 증명을 생성할 수 있습니다. 이후 RollupV1.verifyRollup()은 해당 공개 입력을 일반적인 burn로 파싱하고, 롤업 계약에서 공격자 방향으로 USDC를 이체합니다. 이는 심각한 회로도(soundness) 결함으로, 증명 시스템이 검증된 내부 증명들로부터 완전히 유도되지 않은 messages 배열을 가진 공개 문장을 허용합니다. 현재 배포 환경에서는 verifyRollup()이 기존 allowlisted prover로 제한되어 있으므로, 새로운 public 호출자는 무효한 증명을 직접 제출할 수 없습니다. 이러한 게이트는 오늘날 L1에 접근 가능한 주체를 제한하지만, 회로도(soundness) 자체를 보장하지는 않습니다. Payy 백서에서 설명된 prover 모델에서는 이 문제가 permissionless(권한 불필요) 상태가 됩니다. 섹션 3.3.2에는 "prover로 가입하려면 prover는 소액의 스테이킹을 제출해야 한다"고 명시되어 있으며, 섹션 3.3.1에 따르면 prover가 이를 제출하지 않을 경우 "다른 노드가 대신 블록 증명을 제출할 수 있다"고 되어 있습니다. 이러한 모델에서 공격자는 등록된 prover로 가입하고 이미 승인된 블록의 public validator approval 데이터를 사용하는 것만으로 충분합니다. 이 문제는 버전 1.3.0에서 패치되었습니다.

Be aware that VulDB is the high quality source for vulnerability data.

책임이 있는

GitHub M

예약하다

2026. 05. 20.

모더레이션

수락

항목

VDB-411106

EPSS

0.00000

활동

낮음

출처

Do you need the next level of professionalism?

Upgrade your account now!