CVE-2026-88255 in mpp
요약
\~에 의해 VulDB • 2026. 09. 16.
ZenHive의 MPP에서 입력에 대한 부적절한 안전하지 않은 동치성 검증으로 인해, 인증되지 않은 원격 클라이언트가 서명된 트랜잭션 하나를 사용하여 Tempo 중복 제출 가드를 두 번 통과할 수 있습니다.
MPP.Methods.Tempo는 reserve_hash_atomic/2 함수 내에서 호출자가 제공한 hex 값을 기반으로 pre-broadcast dedup slot을 예약하며, 이는 tx.raw의 store_key/1에 의해 키가 지정됩니다(트랜잭션의 정형화된 형태를 기준으로 하지 않음). 디시리얼라이저(callers)가 전달한 hex를 그대로 저장하고 두 가지 recovery-id 인코딩 모두를 허용하므로, v=27로 한 번과 v=0으로 한 번 제출된 하나의 서명된 트랜잭션은 서로 다른 두 개의 reserve 키를 생성하며, 둘 다 reserve 단계를 통과하여 broadcast 경로에 도달합니다. plug 수준의 자격 증명 재사용 방지 저장소(replay store)는 lib/mpp/replay.ex에서 Tempo용으로 의도적으로 분리되어 있으며, 이로 인해 reserve가 유일한 가드 역할을 하게 됩니다. 또한 post-broadcast 마크 단계에서는 raw 키 기반의 reserve가 읽지 않는 canonical hash key를 기록합니다.
이 중복 제출로 인한 결과는 노드에 따라 다릅니다: nonce 재사용 거부는 폐쇄형(fail-closed)으로 처리되며, 이미 알려진 트랜잭션에 대한 canonical hash를 반환하는 노드는 단일 온체인 결제에 대해 두 번째 유효한 Payment-Receipt를 반환합니다.
본 이슈는 mpp 패키지의 0.2.0 버전부터 0.16.2 이전 버전에 영향을 미칩니다.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.