Back to Blog

적게 예치하고 더 많이 얻기: yCREDIT 공격 상세 내용

Code Auditing
2021년 1월 3일
2 min read

2021년 1월 2일 (베이징 시간 오전 07:25), 저희의 모니터링 시스템 ThunderForecast가 yCREDIT 스마트 컨트랙트를 향한 일련의 의심스러운 트랜잭션을 보고했습니다. 이후 저희는 연구팀이 개발한 EthScope 시스템을 사용하여 해당 트랜잭션들을 분석하고, 보고된 모든 트랜잭션이 악의적임을 확인했습니다. 이 블로그에서는 공격의 세부 사항을 설명합니다.

세부 사항

이번 공격은 실제로 발행된 토큰 수량이 의도된 수량과 일치하지 않는 문제로 인해 발생했습니다. 이로 인해 공격자는 더 낮은 가격으로 훨씬 더 많은 yCREDIT 토큰을 획득할 수 있었습니다. 이렇게 획득한 토큰은 이익을 얻기 위해 판매될 수 있습니다.

취약한 함수는 StableYieldCredit 컨트랙트의 _deposit 함수에 있습니다.

아래에서는 공격 트랜잭션을 사용하여 전체 과정을 설명합니다.

공격자는 먼저 1e-8 WBTC와 331.335 yCredit 토큰을 WBTC-yCREDIT 페어 풀로 전송했습니다. 그런 다음 공격자는 StableYieldCredit 컨트랙트에 0.5 WBTC를 예치하여 공격을 시작했습니다.

구체적으로, _value는 가격 오라클 제공자 ChainLink를 기반으로 token (0x2260fac5e5542a773aa44fbcfedf7c193bc2c599 - WBTC)의 amount (0.5)를 사용하여 계산됩니다 (480번째 줄, _value는 1466786010075). 이는 예치된 WBTC의 USD 가치를 계산하기 위한 것입니다. 그런 다음 컨트랙트는 WBTC를 예치한 사람(공격자)에게 yCREDIT 토큰 수량(_value - fee)을 전송합니다. 이는 시스템 설계상 yCREDIT의 가치가 1 USD이기 때문입니다. 공격자가 소량의 fee를 잃는 것을 제외하면 모든 것이 정상적으로 작동합니다.

또한, 컨트랙트는 예치된 WBTC를 WBTC-yCREDIT 페어 풀에 추가합니다. 이는 예치된 WBTC가 컨트랙트에 잠기면 유동성을 잃게 되기 때문입니다. 따라서 풀에 투입될 토큰 페어(WBTC 대 yCREDIT)의 가치를 먼저 계산합니다. 이 값은 _addLiquidity 함수를 사용하여 계산됩니다. 기본적으로 풀 내의 기존 준비금을 기반으로 계산됩니다. 풀에는 1e-8 WBTC와 331.335 yCREDIT 토큰만 있으므로, 계산된 amountA는 44입니다 (amountB는 1466786010075). 즉, 공격자는 44e-8 WBTC만 소비하고 (485번째 줄) 14667.86010075 - fee = 14594.52080025 yCREDIT 토큰을 얻습니다 (493번째 줄). 동시에, 소량의 WBTC (1e-8 + 44e-8)와 (331.335 + 14667.86010075) yCREDIT 토큰이 풀에 남게 됩니다.

이익을 얻기 위해 공격자는 획득한 14594.52080025 yCREDIT 토큰을 거래소에서 간단히 거래할 수 있습니다. 흥미롭게도, 이 트랜잭션에서 이익을 얻는 과정은 필요 이상으로 훨씬 복잡합니다. 다른 트랜잭션에서도 영리한 공격 전략이 관찰되었습니다.

공격에는 다음을 포함한 (이에 국한되지 않는) 일련의 트랜잭션이 관련되어 있습니다.

업데이트

2020/01/03: 취약점을 수정한 새로운 스마트 컨트랙트가 배포되었습니다.

타임라인

  • 2021/01/01 23:25 UTC, 저희 시스템에 의해 공격이 감지됨
  • 2021/01/02 16:20 UTC, 본 블로그 게시
Sign up for the latest updates
약 4억 1,800만 달러 손실: Bitget, NEAR Intents 해킹 사건 | BlockSec Weekly
Security Insights

약 4억 1,800만 달러 손실: Bitget, NEAR Intents 해킹 사건 | BlockSec Weekly

이번 격주 보안 리포트는 2026년 9월 21일부터 10월 4일까지 발생한 8건의 사고를 다루며, 이더리움, BNB 체인, 솔라나, 비트코인, 트론, XRP 레저, 지캐시, 아발란체, 니어 등 네트워크에서 약 4억 1,840만 달러의 손실이 발생했습니다. Bitget의 3억 8,750만 달러 규모 제3자 보안 제품 취약점과 NEAR Intents의 387만 달러 환불 검증 결함 및 상태 롤백 누락 문제를 상세히 분석합니다.

Bitget의 3억 8,750만 달러 오프체인 침해 사고: 키와 컨트랙트를 넘어서
Security Insights

Bitget의 3억 8,750만 달러 오프체인 침해 사고: 키와 컨트랙트를 넘어서

2026.9.24, 공격자가 제3자 보안 제품 취약점을 악용해 내부 자격증명을 탈취하고 출금 명령을 위조했습니다. 이더리움·EVM·XRP Ledger·Zcash·TRON상 Bitget 지갑에서 약 3.875억 달러가 인출됐으나 개인키·콜드월렛은 무사했습니다. 이 글은 사건 경위·자금 흐름과 자산 전환·복구 대응을 분석하고, 기관용 심층 방어 체계를 제안하며 승인된 블록체인 침투 테스트의 검증 역할을 설명합니다.

약 1,130만 달러 손실: Multicall Router, Nostra | BlockSec Weekly
Security Insights

약 1,130만 달러 손실: Multicall Router, Nostra | BlockSec Weekly

2026/09/14~09/20, 이더리움·Starknet에서 약 1,130만 달러 손실 발생. 멀티콜 라우터가 자신 주소를 대상으로 받아들여 Safe 지갑 권한이 도용되어 약 2,900 aEthrsETH가 공격자 Uniswap v4 풀로 유출. Starknet Nostra는 오라클 최소 소스 1개 요구로 조작된 가격이 반영돼 NSTR이 약 $49.52로 평가, 약 350만 달러 대출 발생.

Best Security Auditor for Web3

Validate design, code, and business logic before launch. Aligned with the highest industry security standards.

BlockSec Audit