QR 코드를 스캔하여 다운로드하세요.
BTC $67,148.71 -1.30%
ETH $1,963.41 -0.95%
BNB $614.37 -0.34%
XRP $1.47 -1.21%
SOL $83.67 -1.02%
TRX $0.2807 -0.80%
DOGE $0.1004 -0.44%
ADA $0.2811 -0.35%
BCH $561.66 +0.03%
LINK $8.73 -0.80%
HYPE $29.39 -1.64%
AAVE $126.83 +1.13%
SUI $0.9616 -0.51%
XLM $0.1656 -1.64%
ZEC $284.68 -1.21%
BTC $67,148.71 -1.30%
ETH $1,963.41 -0.95%
BNB $614.37 -0.34%
XRP $1.47 -1.21%
SOL $83.67 -1.02%
TRX $0.2807 -0.80%
DOGE $0.1004 -0.44%
ADA $0.2811 -0.35%
BCH $561.66 +0.03%
LINK $8.73 -0.80%
HYPE $29.39 -1.64%
AAVE $126.83 +1.13%
SUI $0.9616 -0.51%
XLM $0.1656 -1.64%
ZEC $284.68 -1.21%

Nemo 계약 보안 취약점으로 259만 달러 도난, Sui 체인 자산 안전 다시 경고

Summary: 2025년 9월 7일 베이징 시간, Sui 체인上的 Nemo가 공격당했으며, 해커는 py_index를 조작하여 약 259만 달러를 탈취했습니다. 이번 Nemo 도난의 근본 원인은 PyState가 잘못 설정되어 가변 참조로 되어 있었기 때문입니다.
ExVul 보안
2025-09-14 20:12:36
수집
2025년 9월 7일 베이징 시간, Sui 체인上的 Nemo가 공격당했으며, 해커는 py_index를 조작하여 약 259만 달러를 탈취했습니다. 이번 Nemo 도난의 근본 원인은 PyState가 잘못 설정되어 가변 참조로 되어 있었기 때문입니다.

사건 개요:

2025년 9월 7일 베이징 시간, Sui 체인에서 Nemo가 공격당했으며, 해커는 py_index를 조작하여 약 259만 달러를 탈취했습니다.

공격자 주소:

0x01229b3cc8469779d42d59cfc18141e4b13566b581787bf16eb5d61058c1c724

공격 거래:

https://suivision.xyz/txblock/HMMicxQWn43rnNswi4gNHanUaeiWW5ijqM5bHLca67D9?tab=Overview

Nemo 패키지:

0x0f286ad004ea93ea6ad3a953b5d4f3c7306378b0dcc354c3f4ebb1d506d3b47f

근본 원인:

이번 Nemo 도난의 근본 원인은 PyState가 잘못 설정되어 가변 참조로 되어 있어 공격자가 악의적으로 pyindex를 수정할 수 있게 되었고, mintpy 함수를 호출할 때 py_index와 분리된 SY 매개변수를 곱하여 대량의 PT와 YT를 얻을 수 있었습니다.

심층 분석 결과, py.getsyamountinforexactpyout 함수가 py.currentpyindex를 호출할 때 제약 없이 수를 전달하여 pyState의 pyindex 필드를 수정할 수 있도록 허용했습니다.

· py.getsyamountinforexactpy_out는 PY 출력을 위해 필요한 SY의 입력량을 계산하지만, 여기서 index에는 아무런 제한이 없습니다.

· py.currentpyindex는 전달된 pyindex와 저장된 index를 비교하여 최대값을 pystate.pyindexstored의 최신 값으로 반환합니다.

공격 과정 분석

  1. 공격자는 initpyposition 함수를 호출하여 py_position을 초기화합니다(사용자의 포지션 기록을 초기화하며, 이번 공격과는 무관합니다).

  1. 이어서 플래시 론 py.borrowptamount를 이용해 대량의 PT 토큰을 빌립니다(후속적으로 swap을 통해 SY 잔액으로 교환합니다).

  1. 100회 market.swapexactptforsy를 호출하여 PT를 SY 토큰으로 교환합니다.

  1. py.getsyamountinforexactpyout를 통해 PY 출력을 위해 필요한 SY의 입력량을 계산하는데, 여기서 공격자는 pyindex에 구성된 극단적으로 큰 수 553402322211286548480000을 전달하여 원래 구조를 파괴했습니다.

  1. 이어서 공격자는 비정상적으로 확대된 지수를 이용하여 yieldfactory.mintpy를 호출할 때 비정상적으로 높은 할인율로 PT와 YT를 발행하여 대량의 PT를 탈취합니다.

MintEvent는 다음과 같습니다:

  1. 마지막으로 공격자는 발행된 PT를 사용하여 py.repayptamount로 부채를 상환한 후, redeem을 통해 수익형 자산을 회수하고 Scallop에서 토큰을 인출합니다.

이로써 공격자는 py_index를 조작하여 약 259만 달러를 탈취하였고, 이후 자산을 USDC로 변환한 뒤 Bridge를 통해 크로스 체인 전송하여 최종적으로 ETH와 DAI로 변환하여 0x41b1906c4BCded607c6b02861cE15C2E49FF7576에 저장했습니다.

공격 발생 후 Nemo 팀은 긴급하게 스마트 계약 기능을 중단하고 공격 사건을 조사하기 시작했습니다. 조사 결과, 259만 달러의 자산 손실은 충분한 감사 없이 새로운 기능이上线된 데서 비롯된 것으로 나타났습니다.

사건 요약:

이번 공격의 핵심은 민감한 데이터가 잘못 설정되어 쓰기 가능한 상태가 되어 공격자가 자유롭게 매개변수를 전달하고 수정할 수 있게 된 것입니다. 민감한 데이터의 상태에 대해서는 엄격한 제한과 검사를 해야 합니다.

warnning 위험 경고
app_icon
ChainCatcher Building the Web3 world with innovations.