서싱트(Succinct)의 SP1 V6 네이티브 Rust 검증 경로에서 잘못된 실행의 증명이 통과할 수 있는 취약점이 확인됐다. 서싱트는 취약 버전을 수정하고 운영 중인 메인넷 Prover Network에 패치를 적용했다.
서싱트는 2026년 10월 11일 공개한 보안 공지에서 취약점 심각도를 ‘높음(High)’으로 분류했다. 영향 패키지는 sp1_hypercube, sp1_prover, sp1_sdk이며, 영향 버전은 6.0.0부터 6.8.0까지다. 수정 버전은 6.8.1이다.
문제는 증명 데이터를 읽어 들일 때 텐서의 저장 요소 수와 선언된 차원값의 곱이 일치하는지 검사하지 않은 데서 발생했다. 텐서는 여러 차원의 데이터를 담는 구조로, 저장 요소 수는 각 차원값을 곱한 결과와 같아야 한다.
기존 검증기는 두 값의 일치 여부를 확인하지 않았다. 일부 검증 단계는 저장 요소 수를 다시 확인하지 않고 선언된 차원값을 사용했다. 이에 따라 악의적인 증명자가 불일치하는 텐서를 제출하면 단계마다 같은 텐서의 서로 다른 부분을 처리할 수 있었다.
서싱트는 이 경우 잘못된 실행의 증명이 네이티브 Rust 검증을 통과할 수 있다고 설명했다. 이는 취약점의 기술적 영향에 관한 설명이며, 공개된 악용 사례는 확인되지 않았다.
영향 대상은 취약한 네이티브 Rust 검증기에 직접 제출되는 Core·Compressed 증명이다. 신뢰할 수 없는 외부 증명자의 증명을 이 경로로 받는 애플리케이션이 취약점에 노출될 수 있다.
취약점 발견 당시 공지에 기재된 영향 배포 사례는 제3자 증명자의 증명을 받던 서싱트 운영 메인넷 Prover Network다. 다른 서비스의 영향 여부는 확인되지 않았다.
Solidity 기반 Groth16·Plonk 검증 경로는 이번 취약점의 영향을 받지 않는다. 고정된 형태의 증명을 사용해 문제가 된 Rust 텐서를 처리하지 않기 때문이다. Compressed 증명도 집계 결과가 Groth16 또는 Plonk 증명으로 끝나는 경우에는 해당 라이브러리 검증 경로에서 영향이 없다.
SP1은 Rust 등 LLVM으로 컴파일되는 프로그램의 실행을 증명하는 영지식 가상머신(zkVM)이다. 서싱트는 Immunefi의 SP1 프로그램 안내에서 개발자가 프로그램 실행 증명을 만들고 검증하는 구조라고 설명한다.
이번 문제는 SP1 전체가 아니라 V6의 특정 네이티브 Rust 검증 경로에서 텐서 형태 검사가 누락된 사례다. 아비트럼이 SP1에서 실제 메인넷 블록의 영지식 증명을 생성한 사례를 앞서 전한 바 있다.
서싱트는 텐서를 읽어 들일 때 저장 요소 수와 선언된 차원값의 곱을 대조하고, 네이티브 검증 과정에서도 실제 텐서 형태를 확인하도록 수정했다. 6.8.1 공개 후에는 메인넷 Prover Network에 패치 검증기를 적용했다.
해당 네트워크 이용자는 별도의 연동 변경을 할 필요가 없다. 신뢰할 수 없는 증명을 받는 네이티브 Rust 검증기를 독립적으로 운영하는 곳에는 6.8.1로 업데이트할 것을 안내했다.
<Copyright ⓒ TokenPost, unauthorized reproduction and redistribution prohibited>
Most Popular