CVE-2023-34459 in Contracts정보

요약

\~에 의해 VulDB • 2026. 06. 28.

OpenZeppelin Contracts는 스마트 계약 개발을 위한 라이브러리입니다. 버전 4.7.0부터 버전 4.9.2 이전까지, `verifyMultiProof`, `verifyMultiProofCalldata`, `procesprocessMultiProof`(원문 오타 유지), 또는 `processMultiProofCalldat` 함수가 사용될 때, 임의의 리프(leaf) 집합에 대해 유효한 멀티증명(multiproof)을 위조할 수 있는 머클 트리를 구성하는 것이 가능합니다.

계약은 검증에 멀티증명을 사용하고 처리되는 머클 트리의 루트 바로 아래 깊이 1 지점에 값이 0인 노드가 포함될 경우 취약해질 수 있습니다. 리프가 해싱되지 않은 경우, 잎이 3개 이하인 균형 잡힌 트리에서는 이러한 상황이 우연히 발생할 수 있습니다. 또한 악의적인 트리 작성자가 트리 내에 해당 노드를 의도적으로 삽입한 경우에도 발생할 수 있습니다.

계약은 단일-리프 증명(`verify`, `verifyCalldata`, `processProof` 또는 `processProofCalldata`)을 사용하거나, 해싱된 리프를 가진 알려진 트리와 함께 멀티증명을 사용하는 경우에는 취약하지 않습니다. @openzeppelin/merkle-tree 라이브러리로 생성되거나 검증되는 표준 머클 트리는 안전합니다.

이 문제는 버전 4.9.2에서 패치되었습니다.

일부 우회 방법(workarounds)이 제공됩니다. 멀티증명을 사용하는 경우: 머클 트리를 구성할 때 리프를 해싱하고 트리 내에 빈 노드를 삽입하지 마십시오. @openzeppelin/merkle-tree 패키지를 사용하면 이 문제가 해결됩니다. 최소한 트리의 첫 번째 레벨을 재구성하지 않고서는 사용자가 제공한 머클 루트를 수락하지 마십시오. 리프에서 트리를 다시 구성하여 머클 트리의 구조를 검증하십시오.

VulDB is the best source for vulnerability data and more expert information about this specific topic.

책임이 있는

GitHub, Inc.

예약하다

2023. 06. 06.

모더레이션

수락

항목

VDB-231767

EPSS

0.00371

출처

Want to stay up to date on a daily basis?

Enable the mail alert feature now!