강의

멘토링

커뮤니티

[취미로 해킹 #8] 블랙아웃 이펙트, 무한 루프가 시스템을 침묵시키는 방법

장용하

2025. 11. 13. 18:40

수정됨

교보재(블랙아웃 이펙트).zip
ZIP

교보재(블랙아웃 이펙트).zip

2.8MB

  • 개요: 해당 콘텐츠는 가상 시스템의 숨겨진 결함을 파고드는 일지 시뮬레이션입니다.

  • 제목: 블랙아웃 이펙트, 무한 루프가 시스템을 침묵시키는 방법

  • 분야: 블록체인, 스마트 컨트랙트(solidity)

  • 소개

    • 화려한 런웨이 뒤, 디지털 세상의 그림자에 숨겨진 결함을 쫓는 자가 있다. 이번 목표는 모두가 '완벽하다'고 칭송하는 최신 메시지 전달 서비스. 극도의 미니멀리즘 뒤에 가려진 '과도한 신뢰'는 작은 지연, 사소한 패턴으로 드러난다. 한 줄의 '끝나지 않는 시'가 시스템 전체를 침묵시킨 순간, 아무도 예상치 못한 경제적 마비의 서막이 열린다. 이 재앙의 원인은 무엇일까?

  • 범위


    • 테스트 환경에서 발견되지 않는 '비용 비대칭성' 문제.

    • '신뢰'가 시스템 보안에 미치는 영향과 방어 전략

      .

    • 고전적인 취약점이 새로운 기술 Web3에 재등장하는 패턴.


  • 참고

    • 해당 콘텐츠는 교보재로 활용되는 10,000원 상당의 전자책(PDF)을 제공합니다.

    • 교보재 참고 자료 목록

      • No. 799 탈중앙화라는 완벽한 환상과 그것을 깨뜨리는 관리자

      • No. 800 EVM의 DELEGATECALL은 누구의 시점으로 세상을 보는가

      • No. 801 아무도 부르지 않은 함수, fallback이 응답하는 이유


      • No. 805 결정론이라는 신성한 감옥, EVM

      • No. 806 인터넷이 정보를 해방시켰다면, IBC는 자산을 해방시킨다

      • No. 808 블록체인의 심장, EVM은 왜 외부 세계와 단절되어야 하는가

      • No. 810 보안의 제1원칙: 왜 장부를 먼저 정리하고 돈을 내줘야 하는가

      • No. 814 블록체인의 인터넷은 누가 움직이는가

아래 퀴즈의 정답을 알고 계신다면, 이번 콘텐츠는 건너뛰셔도 좋습니다.

어떤 시스템은 사용자가 제출한 '특별 지시 코드(Callback)'를 대신 실행해주는 '배달부'를 운영했습니다. 하지만 한 공격자가 '영원히 끝나지 않는 시'를 제출하자, 이 코드를 실행한 배달부의 자원이 100% 고갈되어 멈춰버렸고, 결국 시스템 전체가 마비되었습니다.

이 가상 시스템의 코드에는 치명적인 방어 로직 한 줄이 빠져있었기 때문입니다.

// ... // 사용자의 코드를 실행할 가상 머신(VM)을 준비 vm := GetVirtualMachine() /* *** 문제의 지점 *** 공격 코드가 자원을 고갈시키기 전에, 바로 이 위치에 방어 코드가 있어야 합니다. */ // ██████████ err := vm.Run(userInstruction.GetCode())

위 코드의 ██████████ 위치에 들어갈, 이 치명적인 '자원 고갈 공격'을 막을 수 있는 가장 핵심적인 방어 코드는 다음 중 무엇일까요?

  1. if (err != nil) { return err }

  2. vm.SetGasLimit(DEFAULT_GAS_LIMIT)

  3. vm.AuthorizeUser(user.GetID())

  4. if (code.ContainsLoop()) { return ERROR }

패션 위크가 막 끝난 어느 늦은 밤, 나는 날카롭게 재단된 턱시도를 벗어던지고 가장 편안한 캐시미어 스웨터로 갈아입는다. 화려한 런웨이의 조명이 꺼지면, 나만의 또 다른 런웨이가 펼쳐진다. 바로 이 검은 화면, 수백만 줄의 코드로 직조된 거대한 디지털 생태계다.

사람들은 나를 반짝이는 것들, 고급 원단과 가죽, 그리고 시즌 트렌드를 잘 아는 정도로 알지만, 그건 절반일 뿐이다. 완벽해 보이는 디지털 세상의 묘한 패턴을 짚어내는 취미가 있다는 것은 아무도 모를 것이다. 모든 디자이너가 완벽한 재단을 꿈꾸지만, 어떨 때는 어설픈 실밥이나 잘못된 다트가 숨어있기도 하다. 때로는 그게 잘 보이기도 한다. 이번 의뢰는 아주 세련된 ‘메시지 전달 서비스’였다.


미니멀리즘의 함정

처음 이 시스템을 마주했을 때의 느낌은 마치 캘빈 클라인의 90년대 광고 같았다. 깨끗하고, 군더더기 없으며, 극도의 미니멀리즘. 모든 것이 투명하고 잘 정돈된 인터페이스 뒤에 숨어 있었다. 모든 것이 ‘사용자 친화적’이라는 이름으로 포장되어 있었다.

하지만 패션에서 미니멀리즘이 가장 비싼 원단과 최고의 재단사를 요구하듯, 디지털에서 미니멀리즘은 가장 정교한 논리와 철저한 방어 로직을 요구한다. 이 시스템은 너무… 깨끗했다. 마치 갓 지은 쇼룸의 새하얀 카펫 같았다. 아름답지만, 작은 잉크 방울 하나로도 모든 것이 망가질 수 있는 그런 위태로움이 숨어 있다.

‘낙관적 설계’. 이 시스템은 모든 사용자가 선량한 의도를 가졌다고 가정하고 있었다. 마치 파티에 온 모든 손님이 레드 와인을 흘리지 않을 거라 믿는 순진한 호스트처럼. 나는 그 레드 와인이 될 생각이었다.


아주 작은, 그러나 치명적인

모든 것은 아주 사소한 ‘느낌’에서 시작된다. 시스템과 상호작용할 때, 나는 단순히 데이터를 보내는 게 아니라 일종의 ‘대화’를 시도한다. 그리고 이 시스템은 미묘하게 다른 반응을 보였다.

잠금 해제하고, 전체 내용을 확인하세요

결제 즉시 열람 · 평생 소장

교보재(블랙아웃 이펙트).zip
ZIP

교보재(블랙아웃 이펙트).zip

2.8MB