Back to Blog

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

Code Auditing
January 3, 2021
2 min read

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

세부 사항

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

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

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

공격자는 먼저 1e-8 WBTC331.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 WBTC331.335 yCREDIT 토큰만 있으므로, 계산된 amountA44입니다 (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
~$135만 달러 손실: BarnBridge, DeFiTuna | BlockSec 주간 보고
Security Insights

~$135만 달러 손실: BarnBridge, DeFiTuna | BlockSec 주간 보고

이 주간 보고서는 2026년 7월 13일부터 19일까지 발생한 2건의 보안 사고를 다루며, 이더리움과 솔라나에서 총 약 135만 달러의 손실이 발생했습니다. 솔라나 대출 프로토콜 DeFiTuna은 포지션 가치가 0일 때 부채와 무관하게 건전한 것으로 처리되는 결함으로 약 57만 달러를 잃었습니다. BarnBridge는 더 이상 사용되지 않지만 활성 상태인 이더리움 거버넌스 시스템을 악용한 공격자가 악의적인 제안을 통과시켜 약 77만 6천 달러의 USDC를 탈취당했습니다.

~$800K 손실: Hinkal 이중 지불 사건 | BlockSec 위클리
Security Insights

~$800K 손실: Hinkal 이중 지불 사건 | BlockSec 위클리

이 주간 보안 보고서는 2026년 6월 29일~7월 5일 이더리움에서 발생한 약 80만 달러 손실의 주요 사고 1건을 다룹니다. Hinkal 실드 풀 프로토콜이 이중 지출 공격으로 탈취되었으며, 레거시 노트 형식의 결함을 악용해 단일 예치금에서 다수의 널리파이어를 도출한 것으로 추정됩니다. 회로 수준 취약점, 공격 흐름, 널리파이어 기반 프라이버시 프로토콜의 시사점을 분석합니다.

뉴스레터 - 2026년 6월
Security Insights

뉴스레터 - 2026년 6월

이 월간 보고서는 2026년 6월의 3대 보안 사고를 다루며, 총 확인 손실액은 약 2,200만 달러입니다. 정교한 허니팟 공격으로 미확인 토큰 허용량을 악용해 JaredFromSubway의 MEV 봇에서 약 1,500만 달러가 유출됐습니다. 두 레거시 Aztec 롤업 배포에서 증명 정산 경계 취약점으로 약 435만 달러가 손실됐습니다. SecondFi의 Ed25519 구현 결함으로 지갑 개인키가 노출되어 374개 지갑에서 약 240만 달러가 유출됐습니다. 세 사고 모두 표면상 온전해 보였지만 실제로는 적용되지 않은 보안 보장이라는 공통 패턴을 공유합니다.

Best Security Auditor for Web3

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

BlockSec Audit