Smart Contract20 스마트 컨트랙트 공격 - tx.origin 피싱 공격 ⛔️ tx.origin 피싱 공격 tx.origin 피싱 공격에 대해 설명하기 전 tx.origin과 msg.sender의 차이에 대해 설명하겠습니다. 위의 시나리오에서 사용자는 외부 소유 주소/계정(EOA)인 일반적인 이더리움 지갑 주소로 Contract A를 배포합니다. 사용자가 one 함수를 호출하면 내부적으로 two 함수를 호출하고 해당 함수는 내부적으로 다른 Contract B의 three 함수를 호출합니다. 이러한 경우, Contract B에서 msg.sender는 Contract A가 되고, tx.origin은 원래 트랜잭션을 시작한 주소, 즉 사용자(EOA)가 됩니다. 따라서 msg.sender는 현재 함수를 호출한 주체를 나타내며, 이는 스마트 컨트랙트일 수도 있고, EOA일 수도 있습니.. Smart Contract/Security 2023. 11. 6. 스마트 컨트랙트 공격 - 재진입 공격 ⛔️ 재진입 공격 재진입 공격은 스마트 컨트랙트에서 발생할 수 있는 보안 취약점 중 하나로, 이러한 공격은 보통 컨트랙트 간 자금 이체 시 발생하며, 공격자는 스마트 컨트랙트의 실행 흐름을 조작하여 여러 번 호출되는 함수를 악용하여 스마트 컨트랙트의 자금을 불법적으로 탈취하는 것을 목표로 합니다. 재진입 공격에서 해커는 일반적으로 피해자를 공격하는데 스마트 컨트랙트를 사용합니다. 😭 피해자 스마트 컨트랙트 // SPDX-License-Identifier: MIT pragma solidity ^0.8.9; contract SavingsBank { mapping(address => uint) public balances; function deposit() public payable { balances[msg.. Smart Contract/Security 2023. 11. 3. 스마트 컨트랙트 공격 - 소유권 착취 ⛔️ 소유권 착취 아래 예시 스마트 컨트랙트는 부동산 가격을 설정하는 간단한 예시입니다. // SPDX-License-Identifier: MIT pragma solidity 0.8.9; contract RealEstatePrice { uint256 public apartmentprice; constructor(uint256 _price) { apartmentprice = _price; } function updateApartmentPrice(uint256 _price) external { apartmentprice = _price; } } 생성자는 아파트의 기본 가격을 설정하며, updateApartmentPrice 함수를 통해 아파트의 가격을 변경할 수 있습니다. 그러나 이 스마트 컨트랙트는 외부 함.. Smart Contract/Security 2023. 11. 2. 스마트 컨트랙트 정적/동적 분석 ✏️ 스마트 컨트랙트 정적/동적 분석 🔴 정적 분석 (Static Analysis) 정적 분석은 프로그램을 실행하기 전에 소스 코드를 분석하여 결함을 식별합니다. 개발자가 코드를 작성한 후에 컴파일 또는 빌드 단계에서 수행됩니다. 소스 코드의 문법 오류, 잠재적인 보안 취약점, 코드 스타일 문제 등을 검사합니다. 프로그램의 실제 실행 없이도 취약점을 찾을 수 있습니다. 정적 분석은 런타임 시에 발생할 수 있는 오류를 미리 예방하고, 개발 초기 단계에서 결함을 식별하여 비용과 시간을 절약합니다. 프로그램의 실행경로에 따른 동적인 상황은 고려하지 않으므로 모든 결함을 찾을 수는 없습니다. 🔵 동적 분석 (Dynamic Analysis) 동적 분석은 프로그램을 실행한 후에 프로그램의 동작을 모니터링하고 결함을.. Smart Contract/Security 2023. 11. 2. 스마트 컨트랙트 퍼즈 테스팅 (Fuzz Testing) ✏️ 퍼즈 테스팅 (Fuzz Testing) 스마트 컨트랙트 퍼징 또는 퍼징 테스팅은 자동화된 방식으로 구현된 소프트웨어 테스트 기술입니다. 이 기술은 블랙박스 테스트 방법으로, 기형 또는 반기형 데이터를 주입하여 소프트웨어의 구현 버그를 찾는 데 사용됩니다. 더보기 💡 블랙박스 테스트 블랙박스 테스트는 소프트웨어 테스트의 한 종류로, 테스트 수행자가 소프트웨어 내부의 구조나 코드를 알지 못하는 상태에서 테스트를 진행하는 것을 의미합니다. 😲 퍼징 기술의 활용과 목적 퍼징은 유효하지 않거나 예기치 않은 데이터를 컴퓨터의 입력으로 주입하여 애플리케이션 내의 버그와 취약점을 발견하는 자동화된 소프트웨어 테스트 기술입니다. 퍼징은 보안 전문가와 악의적인 공격자 모두에 의해 사용될 수 있습니다. 🟢 보안 전문가.. Smart Contract/Testing 2023. 11. 2. 스마트 컨트랙트 테스트 ✏️ 스마트 컨트랙트 테스트 스마트 컨트랙트 테스트는 스마트 컨트랙트의 코드가 예상대로 작동하는지 확인하는 프로세스입니다. 이를 통해 계약이 신뢰성, 유용성 및 보안에 대한 요구 사항을 충족하는지 확인할 수 있습니다. 테스트는 작은 데이터 샘플로 스마트 컨트랙트를 실행하고, 스마트 컨트랙트가 올바른 결과를 생성하는지 확인하는 과정을 포함합니다. 🤔 스마트 컨트랙트 테스트의 중요성 스마트 컨트랙트는 고가의 금융 자산을 관리하거나 다양한 중요한 기능을 수행하는 경우가 많기 때문에 프로그래밍 오류로 인한 위험이 큽니다. 이더리움과 같은 퍼블릭 블록체인은 배포 후 스마트 계약 코드를 변경하기 어렵습니다. 이로 인해 "가상 업그레이드"를 수행하기 위한 계약 업그레이드 패턴이 존재하지만 구현하기 어렵고 사회적 합의.. Smart Contract/Testing 2023. 11. 2. 스마트 컨트랙트 업그레이드 ✏️ 스마트 컨트랙트 업그레이드 스마트 컨트랙트 업그레이드란 스마트 컨트랙트의 비즈니스 로직을 변경하면서 스마트 컨트랙트의 상태를 유지하는 것을 말합니다. 블록체인에서 한 번 배포된 스마트 컨트랙트는 수정할 수 없다는 원칙이 있습니다. 그러나 실제로는 이러한 제한을 극복하기 위해 다양한 전략과 패턴이 개발되었습니다. 1️⃣ 컨트랙트 마이그레이션 컨트랙트 마이그레이션은 기존 스마트 컨트랙트의 새 인스턴스를 배포하고, 스토리지와 잔액을 새로운 컨트랙트로 이전하는 과정입니다. 새롭게 배포된 컨트랙트는 초기 상태가 비어있어, 이전 컨트랙트에서 데이터를 복구하여 새로운 구현에 쓸 수 있습니다. 이후에는 이전 컨트랙트와 상호작용 했던 모든 컨트랙트를 새 주소로 업데이트해야 합니다. 이 방법은 상대적으로 간단하나, .. Smart Contract/Smart Contracts 2023. 11. 2. ERC (Ethereum Request for Comment) ✏️ ERC (Ethereum Request for Comment) ERC는 프로그래머가 Ethereum 블록체인에서 스마트 컨트랙트를 작성하는 데 사용하는 문서입니다. 이 문서들은 이더리움 기반 토큰이 준수해야 하는 규칙과 표준을 설명합니다. Ethereum 커뮤니티는 이러한 문서들을 검토하기 위해 Ethereum 개선 제안(EIP)이라는 프로세스를 사용합니다. 개발자들은 새로운 아이디어나 기능, 토큰 표준 등을 개선하거나 제안하기 위해 EIP를 작성합니다. 이러한 EIP들은 커뮤니티에 공개되고 검토를 거쳐 최종적으로 받아들여질 수 있습니다. EIP로 시작된 문서들 중 일부가 ERC로 최종화됩니다. 예를 들어, ERC-20, ERC-721, ERC-1155 등과 같은 토큰 표준은 이러한 프로세스를 거쳐.. Smart Contract/Smart Contracts 2023. 11. 1. 이전 1 2 다음