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

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

by Danny_Kim 2023. 8. 24.

🔑 코인 투자 추천 링크 🔑

  1. 비트코인, 알트코인 투자 노하우 모두 공개
  2. OKX 거래소 - 20% 수수료 할인
  3. 플립스터 거래소 - USDT 15% 이자
  4. 해시키 거래소 - HSK 에어드랍

솔리디티 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. 플립스터 거래소 - USDT 15% 이자
  4. 해시키 거래소 - HSK 에어드랍

댓글