본문 바로가기
블록체인교육/블록체인보안

[블록체인 보안] 스마트컨트랙트 취약성(솔리디티 diritybytes)

by Danny_Kim 2023. 8. 24.

🔑 100배 수익 경험자의 노하우가 담긴 치트키 공개 🔑

  1. 네이버, 카카오 임직원들이 듣고 있는 비트코인 강의
  2. 아무도 알려주지 않은 비트코인, 이더리움의 리스크
  3. 블록체인 전문가들도 놓치기 쉬운 비트코인, 이더리움의 핵심 가치
  4. 천배 수익이 가능한 디파이(DeFi), 코인 생태계 지도
  5. 토큰 제작, 1억 연봉의 블록체인 개발자로 거듭나자!

솔리디티 0.8.15에서의 dritybytes

 

Memory나 calldata에서  storage로 ‘bytes’ 배열을 복사할 때, 길이가 32의 배수가 아닌 경우에도 32바이트 단위로 청크(chunks)를 나눠서 복사함

 

따라서 배열 끝을 넘어서는 추가 바이트가 calldata나 memory에서 storage로 복사될 수 있음.

이런 dirty bytes는 storage의 ‘bytes’ 배열에 ‘.push()’를 인자 없이 수행한 후에 관찰 가능해질 수 있음

즉, 이러한 .push()는 배열 끝에 예상대로 0 값이 생성되지 않을 수 있음.

버그는 레거시코드 생성 파이프라인에만 영향을 미치며, IR 통한 새로운 코드 생성 파이프라인에는 영향을 미치지 않음.

 

 

테스트 소스

https://github.com/SunWeb3Sec/DeFiVulnLabs/blob/main/src/test/Dirtybytes.sol

 

 

 

 

테스트 결과

  Array element in h() not being zero::: 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002

  Such that the byte after the 63 bytes allocated below will be 0x02.

 

참고문서

https://web3sec.notion.site/DirtyBytes-d68e72cf89fa4eea965d2e341c6a673d

🔑 100배 수익 경험자의 노하우가 담긴 치트키 공개 🔑

  1. 네이버, 카카오 임직원들이 듣고 있는 비트코인 강의
  2. 아무도 알려주지 않은 비트코인, 이더리움의 리스크
  3. 블록체인 전문가들도 놓치기 쉬운 비트코인, 이더리움의 핵심 가치
  4. 천배 수익이 가능한 디파이(DeFi), 코인 생태계 지도
  5. 토큰 제작, 1억 연봉의 블록체인 개발자로 거듭나자!

댓글