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

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

by Danny_Kim 2023. 8. 24.

🔑 코인 투자 추천 링크 🔑

  1. 블록체인 마스터 과정
  2. OKX 거래소 20% 수수료 할인혜택[공식 파트너]
  3. 바이비트 거래소 20% 수수료 할인혜택[공식 파트너]

솔리디티 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

🔑 코인 투자 추천 링크 🔑

  1. 블록체인 마스터 과정
  2. OKX 거래소 20% 수수료 할인혜택[공식 파트너]
  3. 바이비트 거래소 20% 수수료 할인혜택[공식 파트너]

댓글