개요 Reentrancy 취약점은 22~23년도 들어서는 해당 취약점으로 인한 공격이 줄었지만, 가장 대표적인 Smart Contract 취약점 중 하나입니다. 2016년 The DAO 해킹을 통해 대중적으로 알려졌으며, 꾸준히 해당 취약점을 활용한 공격이 이루어지고 있습니다. 해당 취약점은 자산 탈취 등 치명적인 공격으로 이어집니다. 취약점 Reentrancy 취약점은 그림과 같이 Contract A에서의 함수가 끝나기 전 Contract B에서 Contract A 함수를 다시 호출하면서 발생하는 취약점입니다. 말로만 설명해서는 이해하기 힘든 취약점이기 때문에 예시와 함께 설명하도록 하겠습니다. // INSECURE mapping (address => uint) private userBalances;..
개요 Access Control(접근 제어)는 안전한 컨트랙트를 만드는데 있어 매우 중요한 부분입니다. 함수를 호출할 수 있는 주소의 제한 뿐 아니라, 다른 함수를 호출할 때 인자를 조정하여 컨트랙트의 안전성을 보장합니다. 반대로 이 기능이 미흡할 경우 컨트랙트 보안에 치명적인 영향을 불러 일으킵니다. 기능 Access Control은 크게 두 가지 기능으로 나눌 수 있습니다. 함수 호출자 제어 컨트랙트 내 함수를 호출하는 호출자를 제어합니다. Erc20 token의 mint 함수나, proxy 컨트랙트의 impl 컨트랙트를 업그레이드 하는 함수 등 일반 사용자가 접근했을 때 문제가 되는 함수에 사용됩니다. // openzeppelin-contracts /** * @dev Upgrade the imple..