노셔널 파이낸스(Notional Finance) V1 에스크로에서 보고된 사건은 흔히 말하는 단순 담보가치 하락 문제가 아니었다. 공개된 분석의 요지는 회계 처리 불일치다. 공격자는 2^128 경계의 막대한 fCash 부채를 만들었고, 프로토콜이 자유 담보(free collateral)를 산정하는 과정에서 이를 uint128으로 축소 변환하면서 부채가 0으로 처리됐다는 것이다. 이 결정적인 검증 단계에서 부채가 사라진 것처럼 기록되면서, 계정은 지급여력이 있는 것처럼 보였고 원래는 출금할 수 없던 자산에 접근할 수 있었던 것으로 분석된다.
4
16
다만 이는 프로토콜의 공식 사후 분석 보고서가 아니라 온체인 모니터링과 보안 연구자 보고를 토대로 한 공개 재구성이다. 자금 이동은 블록체인에서 확인할 수 있지만, 정확한 전체 호출 순서와 최종 피해 규모, 대응 조치 여부는 당시 보도 기준으로 공식 확인되지 않았다.
3
4
핵심: 막대한 부채가 담보 계산에서 0이 된 이유
노셔널 V1은 미래 현금 지급 의무를 fCash로 표현했다. CertiK의 공개 경보에 따르면 공격자는 mintfCashPair()를 두 번 호출해 -2^128의 부채를 만들었다. 이후 자유 담보 평가 과정에서 안전하지 않은 uint128 변환이 이 값을 0으로 절단(truncation)한 것으로 보고됐다.
16
연구자들이 설명한 공격 흐름은 다음과 같다.
- 극단적으로 큰 음수 fCash 포지션 생성: 공격자는 128비트 부호 없는 정수로 축소할 때 부채 표현이 소실될 수 있는 정확한 경계값의 부채를 만들었다.
4
16
- 담보 평가 경로 실행: 에스크로의 회계 로직이 이 부채를 unsafe
uint128 다운캐스트로 변환한 것으로 전해졌다.
- 검증상 부채 소멸: 계산은 막대한 음수 채무를 반영하는 대신 그 값을 0으로 취급했다.
4
6
- 출금 조건 통과: 자유 담보 산정에서 부채가 빠지면서, 계정이 에스크로의 유동성 스테이블코인을 출금할 조건을 충족한 것처럼 보였다는 설명이다.
4
6
따라서 이 사건은 일반적인 의미의 ‘정수 오버플로’라기보다, 축소형 변환(narrowing conversion)과 회계 불변식의 실패로 이해하는 편이 정확하다. 보고된 핵심 효과는 출금을 막아야 할 담보 평가 경로에서 음수 부채가 0으로 변했다는 점이다.
4
16
얼마나 빠져나갔나
온체인 기반 보도에 따르면 에스크로에서는 약 69,257 DAI와 1,650,824 USDC, 합계 약 172만8,000달러가 이동했다. 해당 자산은 약 689.2 ETH로 스왑된 뒤 Tornado Cash에 예치된 것으로 보고됐다.
2
15
보도에서 지목된 대상은 주소 0x9abd0b8868546105F6F48298eaDC1D9c82f7f683의 노셔널 파이낸스 에스크로 컨트랙트다. 한 보고서는 주소 끝자리가 Ce38인 지갑이 2026년 9월 3일 UTC 기준 오후 11시 58분 47초에 준비 거래를 보냈고, 약 3분 뒤인 9월 4일 새벽 자금 유출 거래가 발생했다고 전했다.
17
23
조사자들은 자금 이동과 관련해 다음 두 이더리움 주소를 공개적으로 연결했다.
이는 온체인 조사상 연관 표시에 해당할 뿐, 특정 개인·조직 또는 최종 통제자를 확인한 것은 아니다.
11
ETH 전환과 믹싱이 추적을 어렵게 한 이유
DAI와 USDC가 ETH로 전환되면서 회수 환경은 더 복잡해졌다. 스테이블코인 이동은 이더리움상에서 명확히 추적되지만, ETH로 바뀐 뒤에는 자금이 다른 형태로 분산된다. 이어 Tornado Cash 예치가 이뤄지면 거래의 출발지·도착지·상대방 연결을 난독화하는 프라이버시 계층이 추가된다.
2
29
그렇다고 블록체인 분석이 불가능해지는 것은 아니며, 이후 출금 지갑의 통제자가 누구인지 자동으로 증명하는 것도 아니다. 다만 자금이 믹서에 들어간 뒤에는 공격받은 에스크로에서 특정 후속 수취인까지 이어지는 직접적인 자산별 추적 경로가 크게 복잡해진다.
29
당시 확인되지 않았던 쟁점
보도 시점까지 노셔널은 공개적인 사고 대응 입장을 내놓지 않았으며, 다음과 같은 핵심 사항이 남아 있었다.
- 확정적인 기술적 원인과 전체 익스플로잇 호출 흐름
- 보고된 거래가 영향받은 모든 컨트랙트·계정·자산을 포괄하는지 여부
- 스왑, 수수료, 후속 이체를 반영한 최종 손실액
- 일시정지, 업그레이드, 보상, 자금 회수 수단의 존재 여부
- 공격자 신원과 공개적으로 표기된 두 주소가 동일 통제하의 전부인지 여부
3
4
11
따라서 현재의 원인 분석은 신뢰할 만한 예비 재구성으로 볼 수는 있어도, 감사된 사후 분석이나 프로토콜의 공식 사고 보고서를 대체할 수는 없다.
레거시 DeFi 컨트랙트가 주는 보안 교훈
오래됐거나 제품 로드맵에서 중심 역할을 잃었다고 해서 컨트랙트의 위험이 자동으로 줄어드는 것은 아니다. 자산을 보관하거나 발행·정산·담보·출금 흐름에 접근할 수 있다면, 그 컨트랙트는 여전히 금융 자산을 노출하는 활성 공격 표면이다.
이번에 보고된 노셔널 V1 사례는 프로토콜 팀이 다음 통제를 함께 점검할 필요가 있음을 보여준다.
- 안전하게 표현할 수 없는 값은 명시적으로 거부하는 검증된 축소형 변환 사용
2^128 같은 수치 경계값에서 부호 있는 부채, 정산, 담보 계산 테스트
- 지급여력과 자산 보존 규칙을 불변식으로 정의하고, 여러 호출이 이어지는 시나리오에서 검증
- 발행·정산·출금 기능이 의도치 않은 순서로 조합될 수 있는 특수 또는 권한 경로 점검
- 특정 맥락 밖에서 위험할 수 있는 함수에는 호출자 및 호출 흐름 제한 적용
DeFi에서 반복되는 패턴은 작아 보이는 표현 오류나 권한 결함이 유동 자산을 가진 출금 경로에 닿는 순간 전액 손실로 증폭될 수 있다는 점이다. 방어의 핵심은 개별 함수를 감사하는 데 그치지 않고, 도달 가능한 모든 호출 순서에서 시스템의 회계 불변식이 유지되는지 입증하는 데 있다.