[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-deep-evm-4-boan-gibon-yoso-msg-sender-jaejilib":3},{"article":4,"author":55},{"id":5,"category_id":6,"title":7,"slug":8,"excerpt":9,"content_md":10,"content_html":11,"locale":12,"author_id":13,"published":14,"published_at":15,"meta_title":7,"meta_description":16,"focus_keyword":17,"og_image":18,"canonical_url":18,"robots_meta":19,"created_at":15,"updated_at":15,"tags":20,"category_name":34,"related_articles":35},"d5000000-0000-0000-0000-000000000104","a0000000-0000-0000-0000-000000000052","Deep EVM #4: 보안 기본 요소 — msg.sender, 접근 제어, 재진입","deep-evm-4-boan-gibon-yoso-msg-sender-jaejilib","EVM 실행 모델이 보안 취약점을 만드는 방법과 방어 방법: msg.sender vs tx.origin, 재진입 공격, delegatecall 위험, 접근 제어 패턴.","## EVM 수준의 보안\n\n스마트 컨트랙트 보안은 작동하는 코드 위에 검사를 추가하는 것이 아닙니다 — EVM의 실행 모델이 공격 표면을 만드는 방식을 이해하는 것입니다. 모든 외부 호출은 잠재적 재진입 지점입니다. 모든 delegatecall은 스토리지 하이재킹 벡터입니다.\n\n## msg.sender vs tx.origin\n\n- **msg.sender** (CALLER 옵코드): 현재 실행 컨텍스트의 즉시 호출자. 각 CALL마다 변경.\n- **tx.origin** (ORIGIN 옵코드): 트랜잭션을 시작한 외부 소유 계정(EOA). 호출 깊이에 관계없이 변경 없음.\n\n`tx.origin`을 인증에 사용하는 것은 잘 알려진 취약점입니다. **항상 msg.sender를 사용**하십시오.\n\n## 재진입: DAO 공격 패턴\n\n재진입은 가장 악명 높은 스마트 컨트랙트 취약점입니다 — 2016년 $60M DAO 해킹을 일으켰습니다.\n\n### Checks-Effects-Interactions 패턴\n\n표준 방어는 연산 순서를 올바르게 하는 것입니다:\n\n1. **Checks** — 모든 조건 검증\n2. **Effects** — 모든 상태 변수 업데이트\n3. **Interactions** — 외부 호출을 마지막에\n\n```solidity\nfunction withdraw() external {\n    uint256 amount = balances[msg.sender];  \u002F\u002F Check\n    require(amount > 0);                     \u002F\u002F Check\n    balances[msg.sender] = 0;                \u002F\u002F Effect (호출 전에)\n    (bool success, ) = msg.sender.call{value: amount}(\"\");  \u002F\u002F Interaction\n    require(success);\n}\n```\n\n### 일시적 스토리지 재진입 가드 (EIP-1153)\n\n```solidity\nmodifier nonReentrant() {\n    assembly {\n        if tload(0) { revert(0, 0) }\n        tstore(0, 1)\n    }\n    _;\n    assembly {\n        tstore(0, 0)\n    }\n}\n\u002F\u002F 비용: ~200 가스 vs 스토리지 기반 가드의 ~5000 가스\n```\n\n## DELEGATECALL: 힘과 위험\n\nDELEGATECALL은 호출하는 컨트랙트의 컨텍스트에서 다른 컨트랙트의 코드를 실행합니다. 프록시 패턴의 기반이지만 스토리지 충돌 공격에 취약합니다.\n\n## 접근 제어 패턴\n\n- **Ownable** — 가장 단순한 패턴: 단일 `owner` 주소.\n- **역할 기반 접근 제어 (RBAC)** — 다중 역할 관리.\n- **멀티시그와 타임락** — 고가치 운영에 적합.\n\n## MEV 봇을 위한 실용적 보안 체크리스트\n\n1. tx.origin 절대 사용하지 말 것\n2. 모든 곳에서 CEI 패턴\n3. 모든 반환 값 확인\n4. DELEGATECALL 대상 검증\n5. 재진입 가드 사용\n6. 콜데이터 검증\n7. 샌드위치 공격 방어\n8. 접근 제어 구현\n9. 회로 차단기 구현\n10. Yul\u002FHuff 코드 특별히 주의해서 감사\n\n## 결론\n\nEVM의 보안은 추가하는 레이어가 아닙니다 — 외부 호출에 대한 상태 전환 구조의 속성입니다. CEI 패턴, 재진입 가드, 신중한 delegatecall 사용은 모범 사례가 아닌 생존 요건입니다.","\u003Ch2 id=\"evm\">EVM 수준의 보안\u003C\u002Fh2>\n\u003Cp>스마트 컨트랙트 보안은 작동하는 코드 위에 검사를 추가하는 것이 아닙니다 — EVM의 실행 모델이 공격 표면을 만드는 방식을 이해하는 것입니다. 모든 외부 호출은 잠재적 재진입 지점입니다. 모든 delegatecall은 스토리지 하이재킹 벡터입니다.\u003C\u002Fp>\n\u003Ch2 id=\"msg-sender-vs-tx-origin\">msg.sender vs tx.origin\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>\u003Cstrong>msg.sender\u003C\u002Fstrong> (CALLER 옵코드): 현재 실행 컨텍스트의 즉시 호출자. 각 CALL마다 변경.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>tx.origin\u003C\u002Fstrong> (ORIGIN 옵코드): 트랜잭션을 시작한 외부 소유 계정(EOA). 호출 깊이에 관계없이 변경 없음.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Ccode>tx.origin\u003C\u002Fcode>을 인증에 사용하는 것은 잘 알려진 취약점입니다. \u003Cstrong>항상 msg.sender를 사용\u003C\u002Fstrong>하십시오.\u003C\u002Fp>\n\u003Ch2 id=\"dao\">재진입: DAO 공격 패턴\u003C\u002Fh2>\n\u003Cp>재진입은 가장 악명 높은 스마트 컨트랙트 취약점입니다 — 2016년 $60M DAO 해킹을 일으켰습니다.\u003C\u002Fp>\n\u003Ch3>Checks-Effects-Interactions 패턴\u003C\u002Fh3>\n\u003Cp>표준 방어는 연산 순서를 올바르게 하는 것입니다:\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Cstrong>Checks\u003C\u002Fstrong> — 모든 조건 검증\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Effects\u003C\u002Fstrong> — 모든 상태 변수 업데이트\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Interactions\u003C\u002Fstrong> — 외부 호출을 마지막에\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cpre>\u003Ccode class=\"language-solidity\">function withdraw() external {\n    uint256 amount = balances[msg.sender];  \u002F\u002F Check\n    require(amount &gt; 0);                     \u002F\u002F Check\n    balances[msg.sender] = 0;                \u002F\u002F Effect (호출 전에)\n    (bool success, ) = msg.sender.call{value: amount}(\"\");  \u002F\u002F Interaction\n    require(success);\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>일시적 스토리지 재진입 가드 (EIP-1153)\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-solidity\">modifier nonReentrant() {\n    assembly {\n        if tload(0) { revert(0, 0) }\n        tstore(0, 1)\n    }\n    _;\n    assembly {\n        tstore(0, 0)\n    }\n}\n\u002F\u002F 비용: ~200 가스 vs 스토리지 기반 가드의 ~5000 가스\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2 id=\"delegatecall\">DELEGATECALL: 힘과 위험\u003C\u002Fh2>\n\u003Cp>DELEGATECALL은 호출하는 컨트랙트의 컨텍스트에서 다른 컨트랙트의 코드를 실행합니다. 프록시 패턴의 기반이지만 스토리지 충돌 공격에 취약합니다.\u003C\u002Fp>\n\u003Ch2 id=\"\">접근 제어 패턴\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>\u003Cstrong>Ownable\u003C\u002Fstrong> — 가장 단순한 패턴: 단일 \u003Ccode>owner\u003C\u002Fcode> 주소.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>역할 기반 접근 제어 (RBAC)\u003C\u002Fstrong> — 다중 역할 관리.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>멀티시그와 타임락\u003C\u002Fstrong> — 고가치 운영에 적합.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"mev\">MEV 봇을 위한 실용적 보안 체크리스트\u003C\u002Fh2>\n\u003Col>\n\u003Cli>tx.origin 절대 사용하지 말 것\u003C\u002Fli>\n\u003Cli>모든 곳에서 CEI 패턴\u003C\u002Fli>\n\u003Cli>모든 반환 값 확인\u003C\u002Fli>\n\u003Cli>DELEGATECALL 대상 검증\u003C\u002Fli>\n\u003Cli>재진입 가드 사용\u003C\u002Fli>\n\u003Cli>콜데이터 검증\u003C\u002Fli>\n\u003Cli>샌드위치 공격 방어\u003C\u002Fli>\n\u003Cli>접근 제어 구현\u003C\u002Fli>\n\u003Cli>회로 차단기 구현\u003C\u002Fli>\n\u003Cli>Yul\u002FHuff 코드 특별히 주의해서 감사\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch2 id=\"\">결론\u003C\u002Fh2>\n\u003Cp>EVM의 보안은 추가하는 레이어가 아닙니다 — 외부 호출에 대한 상태 전환 구조의 속성입니다. CEI 패턴, 재진입 가드, 신중한 delegatecall 사용은 모범 사례가 아닌 생존 요건입니다.\u003C\u002Fp>\n","ko","b0000000-0000-0000-0000-000000000001",true,"2026-03-28T10:44:27.827661Z","EVM 보안 심층 분석: msg.sender vs tx.origin, 재진입 공격과 방어, delegatecall 위험, 접근 제어 패턴.","EVM 보안 재진입",null,"index, follow",[21,26,30],{"id":22,"name":23,"slug":24,"created_at":25},"c0000000-0000-0000-0000-000000000016","EVM","evm","2026-03-28T10:44:21.513630Z",{"id":27,"name":28,"slug":29,"created_at":25},"c0000000-0000-0000-0000-000000000013","Security","security",{"id":31,"name":32,"slug":33,"created_at":25},"c0000000-0000-0000-0000-000000000014","Solidity","solidity","블록체인",[36,43,49],{"id":37,"title":38,"slug":39,"excerpt":40,"locale":12,"category_name":41,"published_at":42},"d0000000-0000-0000-0000-000000000674","2026년, Bali가 동남아시아의 임팩트 테크 허브가 되고 있는 이유","bali-2026-dongnamasia-impaekteu-tekeu-heobeu-iyu","Bali는 동남아시아 스타트업 생태계에서 16위를 차지하고 있습니다. Web3 빌더, AI 지속가능성 스타트업, 에코 여행 테크 기업이 집중되면서, 이 섬은 지역 임팩트 테크의 수도로 자리매김하고 있습니다.","엔지니어링","2026-03-28T10:44:49.294484Z",{"id":44,"title":45,"slug":46,"excerpt":47,"locale":12,"category_name":41,"published_at":48},"d0000000-0000-0000-0000-000000000673","ASEAN 데이터 보호 패치워크: 개발자를 위한 컴플라이언스 체크리스트","asean-deiteo-boho-paechiwokeu-gaebaljaleul-wihan-keompeullaieonseuchekeuriseuteu","7개 ASEAN 국가가 포괄적인 데이터 보호법을 시행하고 있으며, 각각 다른 동의 모델, 현지화 요건, 벌칙 구조를 가지고 있습니다. 다중 국가 애플리케이션을 구축하는 개발자를 위한 실용적인 컴플라이언스 체크리스트입니다.","2026-03-28T10:44:49.286400Z",{"id":50,"title":51,"slug":52,"excerpt":53,"locale":12,"category_name":41,"published_at":54},"d0000000-0000-0000-0000-000000000672","Indonesia 290억 달러 디지털 전환: 소프트웨어 기업을 위한 기회","indonesia-290eok-dallleo-dijiteol-jeonhwan-sopeuteuweo-gieopui-gihoe","Indonesia IT 서비스 시장은 2026년 290.3억 달러에 달할 것으로 예상되며, 이는 2025년 243.7억 달러에서 증가한 수치입니다. 클라우드 인프라, AI, 전자상거래, 데이터센터가 동남아시아에서 가장 빠른 성장을 주도하고 있습니다.","2026-03-28T10:44:49.265609Z",{"id":13,"name":56,"slug":57,"bio":58,"photo_url":18,"linkedin":18,"role":59,"created_at":60,"updated_at":60},"Open Soft Team","open-soft-team","The engineering team at Open Soft, building premium software solutions from Bali, Indonesia.","Engineering Team","2026-03-28T08:31:22.226811Z"]