9월 19일 SingularityNET의 이더리움 자산 전환 계약에서 872만1,530개의 FET가 비정상적으로 빠져나갔다. 당시 가격 기준 약 155만달러 규모다. 29분 뒤에는 장기간 활동이 없던 NuNet의 발행 권한으로 4억853만2,878개의 NTX가 새로 발행됐고, 전량이 FET를 받은 지갑으로 전송됐다. 온체인 포렌식 업체 Athena는 두 거래가 같은 조직의 공조 행위일 가능성을 제시했지만, WMTX에도 동일한 방식이 적용됐는지는 아직 확인되지 않았다.
Fetch.ai는 이후 AGIX-FET 교환 서비스와 이더리움 측 브리지 계약을 일시 중단했다. 회사는 문제가 발생한 인프라가 SingularityNET에 속하며, 주로 이더리움-카르다노 브리지와 관련돼 있다고 밝혔다. Fetch.ai 자체 계약과 정상적인 FET 전송은 계속 운영됐다.
유출된 자산은 SingularityNET 전환 계약에 보관돼 있었다
포렌식 분석에서 문제가 된 계약은 TokenConversionManagerV3로 식별됐다. 이 계약은 SingularityNET 브리지 시스템에서 이더리움 측 자산을 잠그고 해제하는 공식 구성 요소다. 검증된 코드는 SingularityNET이 공개한 코드베이스와 일치했으며, 현재 Artificial Superintelligence Alliance의 FET 토큰과 연결돼 있다.
조사 결과 손실은 공격자가 브리지 계약 자체의 구조를 우회해서 발생한 것이 아니라, 백엔드 승인 키가 장악되면서 발생했을 가능성이 큰 것으로 분석됐다. 공격 거래에는 유효한 서명이 포함돼 있었고, 서명 주소는 계약이 사전에 신뢰하도록 설정한 승인 주소였다. 이에 따라 공격자는 conversionIn 함수를 호출해 계약에 보관된 FET 전량을 자신이 통제하는 지갑으로 풀어낼 수 있었다.
계약 설계도 단일 거래의 피해 규모를 키웠다. 기존에 설정된 FET 100만 개의 거래 한도는 이더리움에서 전송되는 물량에만 적용됐고, conversionIn 경로에는 같은 제한이 적용되지 않았다. 그 결과 공격자는 한 번의 거래로 약 872만 개의 FET를 인출했다. 또한 서명 메시지에 최종 수취 주소가 포함돼 있지 않아, 유효한 승인을 확보한 호출자가 토큰을 받을 지갑을 별도로 지정할 수 있었다.
FET 인출 29분 뒤 NTX 4억853만개 발행
온체인 거래 시간표에 따르면 9월 19일 20시50분(UTC), FET 인출 약 29분 뒤 2023년 3월 이후 활동이 없던 NuNet 발행 키가 NTX 4억853만2,878개를 생성했다. 새로 발행된 토큰은 모두 FET를 받은 지갑으로 이동했다. 발행량은 NuNet이 공개한 전체 토큰 공급량의 약 42%에 해당한다.
두 사건의 연계성을 뒷받침하는 거래도 확인됐다. 같은 날 19시36분, FET 인출 45분 전 NuNet 발행 주소는 최종 수취 지갑으로 0.3667 ETH를 직접 보냈다. 공격자와 연관된 또 다른 계정은 이 지갑으로 NTX 2,430만개를 전송했다.
FET 브리지 계약이 비워지기 전부터 NTX는 MetaMask의 교환 인프라를 통해 매각되기 시작했다. 통제된 것으로 보이는 두 종류의 자격 증명을 활용한 자산 이동과 현금화가 주요 FET 인출보다 먼저 시작됐을 가능성이 제기되는 이유다.
유동성 부족으로 토큰 현금화 속도 제한
공격자는 이후 두 종류의 토큰을 각각 처분하기 시작했다. 탈취된 FET의 상당 부분은 MetaMask의 교환 인프라를 통해 이더리움으로 바뀌었고, 새로 발행된 NTX는 2억1,700만개 이상이 탈중앙화 유동성 시장에서 매각됐다. 9월 20일 오전 1시10분 무렵 중심 지갑에는 547.89 ETH, 약 144만달러 상당이 남아 있었으며 NTX 약 2억3,000만개도 보유하고 있었다.
NTX 매각은 곧 유동성 부족에 부딪혔다. 합계 3,855만개의 NTX를 네 차례에 걸쳐 거래했지만, 공격자의 ETH 잔액은 약 0.30 ETH 늘어나는 데 그쳤다. 이용 가능한 거래 풀이 이미 크게 줄었기 때문이다. 별도의 NTX 1,000만개 거래는 Mayan Protocol을 통해 라우팅됐고, 약 940 USDT를 확보한 뒤 크로스체인 전송에 사용됐다.
관련 토큰의 시장 가격도 크게 움직였다. NTX는 한때 0.00053달러에 거래되며 24시간 기준 780.38% 상승했고, 같은 시점 ETH는 2,747.34달러로 4.23% 올랐다. SingularityNET과 관련된 AGIX는 0.08달러로 24시간 기준 0.47% 하락했다. 이 가격은 사건 이후 시장 상황을 보여주는 수치일 뿐, 토큰 공급이나 피해 자산의 처분이 완료됐다는 의미로 해석할 수는 없다.
WMTX 입출금 중단…동일한 공격 경로인지는 미확인
사건의 영향은 이후 WMTX로도 번졌다. Bitvavo는 9월 20일 WMTX와 관련한 보안 사건이 처리 중이라는 이유로 입금과 출금을 중단한 뒤 거래도 일시 정지했다. 거래소는 고객 잔액은 안전하다고 밝혔다.
SingularityNET의 과거 자료에 따르면 WMTX, FET, NTX는 모두 이더리움-카르다노 브리지 생태계와 연계된 인프라를 사용한 이력이 있다. 다만 현재까지의 포렌식 분석은 FET와 NTX 거래를 중심으로 이뤄졌으며, WMTX가 동일한 취약점이나 동일한 자격 증명 때문에 영향을 받았다는 증거는 확인되지 않았다. 같은 시점 카르다노는 0.24달러로 24시간 기준 6.75% 상승했다.
승인 키 폐기와 교체가 서비스 재개 조건
Fetch.ai는 SingularityNET과 함께 조사를 진행하고 있으며, 조사 기간 관련 교환 서비스를 중단한다고 밝혔다. 초기 추적 결과 공격 발생 약 5시간 뒤에도 FET 브리지 승인 주소와 NuNet 발행 자격 증명은 교체되거나 폐기되지 않은 상태였다. 당시 FET 브리지 계약은 이미 비워진 뒤 추가 활동을 멈춘 상태였다.
따라서 서비스 복구를 위해서는 먼저 자격 증명에 대한 조치가 필요하다. 동일한 승인 주소가 계속 FET 전환 계약에서 신뢰받는다면, 계약에 유동성을 다시 공급하는 과정에서 서명된 인출 위험이 재현될 수 있다. NuNet 역시 영향을 받은 지갑이 NTX를 추가 발행할 수 있는 가능성을 차단해야 한다.
향후 확인할 운영 지표는 Fetch.ai가 AGIX-FET 교환과 이더리움 측 브리지 서비스를 언제 재개하는지, 그리고 관련 승인 자격 증명이 실제로 교체됐는지다. WMTX의 경우 Bitvavo가 평가 기간 동안 거래와 전송 제한을 유지한다고 밝힌 만큼, 거래 재개 여부와 자격 증명 보안 조치의 진행 상황이 서비스 복구를 좌우할 전망이다.