CVE-2025-54070 in openzeppelin-contracts정보

요약

\~에 의해 VulDB • 2026. 05. 25.

OpenZeppelin Contracts는 안전한 스마트 계약 개발을 위한 라이브러리입니다. 버전 5.2.0부터 버전 5.4.0 미만까지, `Bytes.sol` 라이브러리의 `lastIndexOf(bytes,byte,uint256)` 함수는 다음 두 가지 조건이 모두 충족될 때 초기화되지 않은 메모리에 접근할 수 있습니다. 1) 제공된 버퍼 길이가 비어 있는 경우(즉, `buffer.length == 0`)와 위치가 `2**256 - 1`이 아닌 경우(즉, `pos != type(uint256).max`). `pos` 인수는 버퍼 경계 외부의 임의 데이터에 접근하는 데 사용될 수 있습니다. 이로 인해 연산 중 가스 소진이나 유효하지 않은 인덱스(비어 있는 버퍼 외부) 반환이 발생할 수 있습니다. 이러한 유효하지 않은 결과를 처리하여 `buffer`에 접근하면 정상적인 조건에서 되돌림(revert)이 발생합니다. 함수가 트리거되면 `buffer + 0x20 + pos` 오프셋에서 메모리를 읽습니다. 해당 위치(버퍼 외부)의 메모리가 검색 패턴과 일치하면, 함수는 예상되는 `type(uint256).max` 대신 경계를 벗어난 인덱스를 반환합니다. 이는 호출자가 버퍼 경계 외부를 가리키는 유효해 보이는 인덱스를 받게 되는 예기치 않은 동작을 초래합니다. 경계 검사를 수행하지 않고 반환된 인덱스를 사용하는 후속 메모리 접근은 설정에 따라 잠재적 영향을 신중히 검토해야 합니다. 빈 버퍼에 대해 이 함수가 `type(uint256).max`를 반환하거나 경계 검사 없이 반환된 인덱스를 사용하는 코드는 정의되지 않은 동작을 보일 수 있습니다. 사용자는 패치를 받기 위해 버전 5.4.0으로 업그레이드해야 합니다.

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

책임이 있는

GitHub M

예약하다

2025. 07. 16.

모더레이션

수락

항목

VDB-316817

EPSS

0.00334

출처

Want to know what is going to be exploited?

We predict KEV entries!