저자: 콩앤리사
편집자: 리즈
배경
5월 28일, SlowMist는 코르크 프로토콜과 관련된 잠재적인 의심스러운 활동을 감지하고 보안 경고를 발표하여 사용자들에게 경계심을 갖고 계정과 자금의 보안에 주의하도록 권고했습니다.

(https://x.com/SlowMist_Team/status/1927705256915333359)
얼마 지나지 않아 코르크 프로토콜은 다음과 같은 공지를 발표했습니다. "오늘 11시 23분(UTC), wstETH:weETH 마켓에서 보안 사고가 발생했습니다. 위험 확대를 방지하기 위해 코르크는 다른 모든 마켓 거래를 중단했으며, 현재 다른 마켓은 영향을 받지 않았습니다. 저희 팀은 사고 원인을 적극적으로 조사하고 있으며 관련 진행 상황을 지속적으로 업데이트할 예정입니다."

(https://x.com/Corkprotocol/status/1927808041984086083)
사건이 발생한 후 SlowMist 보안팀은 즉시 분석에 개입했습니다. 다음은 공격 방법과 자금 이체 경로에 대한 자세한 분석입니다.
필수 조건
코르크 프로토콜은 DeFi 생태계에 기존 금융의 신용 디폴트 스왑(CDS)과 유사한 기능인 디페그 스왑(Depeg Swap)을 제공하도록 설계된 도구입니다. 디페그 스왑은 스테이블코인, 유동성 담보 토큰, RWA 등과 같은 고정 자산의 디페깅 위험을 헤지하는 데 특히 사용됩니다. 핵심 메커니즘은 스테이블코인과 유동성 담보 토큰의 디페깅 위험을 중심으로 하며, 사용자는 위험 파생상품 거래를 통해 스테이블코인이나 LST/LRT의 가격 변동성 위험을 시장 참여자에게 이전하여 위험을 줄이고 자본 효율성을 개선할 수 있습니다. 주요 개념은 다음과 같습니다.
RA(환매 자산): 코르크 시장에서 디페깅 이벤트(예: ETH::stETH 시장의 ETH)를 환매하거나 결제하는 데 사용되는 벤치마크 자산입니다.
PA(Pegged Asset): RA와의 가격 고정을 유지하는 것을 목표로 하지만, 시장 변동성, 프로토콜 위험 등으로 인해 기준 가격에서 벗어날 수 있는, 가격 고정 해제 위험이 있는 자산(예: ETH::stETH 시장의 stETH).
DS(Depeg Swap): 코르크 프로토콜이 발행한 핵심 파생상품 도구로, 페그 해제 위험을 헤지하는 데 사용됩니다. 이는 기본적으로 전통 금융의 신용 디폴트 스왑(CDS)과 유사합니다. 사용자는 이러한 토큰을 구매하여 페깅 해제 위험을 피할 수 있습니다.
CT(커버 토큰): DS와 짝을 이루는 파생 상품으로, CDS의 판매자 역할과 유사하게, 가격 고정에서 벗어나는 위험을 감수하고 수익을 창출하는 데 사용됩니다. 디페깅이 발생하면 보유자가 손실을 감수하게 됩니다.
환율: PA와 RA 간의 가치 관계를 측정하는 핵심 매개변수로, 파생상품 거래의 결제 논리와 디앵커링 이벤트의 결정에 직접적인 영향을 미칩니다. 현재, 코르크 프로토콜을 사용하면 사용자가 사용자 정의 환율 공급자를 사용하여 시장을 만들 수 있습니다.
코르크 볼트: 자본 효율성을 개선하기 위해 만기별 유동성을 자동으로 관리합니다.
페그 안정화 모듈(PSM): DS와 CT의 주조/파기, 시장 마감일 설정, AMM을 통한 동적 가격 조정을 담당합니다. 사용자는 다음과 같은 교환을 할 수 있습니다.
PA + DS = RACT + DS = RA
근본 원인
이 공격의 근본 원인은 한편으로는 CorkConfig 계약을 통해 사용자가 모든 자산을 상환 자산(RA)으로 생성할 수 있도록 허용하고, 다른 한편으로는 공격자가 DS를 RA로 사용할 수 있다는 것입니다. 반면, 모든 사용자는 권한 없이 CorkHook 계약의 beforeSwap 함수를 호출하고 사용자가 CorkCall 작업에 대한 사용자 지정 후크 데이터를 전달하도록 허용하여 공격자가 합법적인 시장의 DS를 조작하여 다른 시장에 입금하여 RA로 사용하고 해당 DS 및 CT 토큰을 얻을 수 있습니다.
공격 분석
공격자는 먼저 합법적인 시장에서 wstETH를 사용하여 weETH8CT-2 토큰을 구매한 다음, 나중에 DS 토큰과 함께 wstETH 토큰을 RA로 교환할 수 있었습니다.

그런 다음 공격자는 새로운 시장을 만들고 사용자 정의 환율 제공자를 사용했습니다. 이 시장은 weETH8DS-2 토큰을 RA로, wstETH를 PA로 사용하여 만들어졌습니다. 따라서 새로운 시장의 주요 토큰은 다음과 같습니다.
RA: weETH8DS-2PA: wstETHCT: wstETH5CT-3DS: wstETH5DS-3
weETH8DS-2가 위치한 시장의 주요 토큰은 다음과 같습니다.
RA: wstETHPA: weETHCT: weETH8CT-2DS: weETH8DS-2

공격자는 새로운 시장을 만든 후, 프로토콜이 Uniswap v4에서 해당 유동성 풀을 초기화할 수 있도록 시장에 일정량의 유동성을 추가합니다. 이를 통해 CorkHook이 이 풀에서 beforeSwap을 실행할 수 있습니다.

다음으로 가장 중요한 점은 Uniswap V4 풀 관리자가 잠금 해제되어 있는 한 모든 사용자가 CorkHook의 beforeSwap 함수를 호출하고 프로토콜의 시장 유동성을 작동시키기 위한 매개변수를 전달할 수 있다는 것입니다. 따라서 공격자는 Uniswap V4 풀 관리자의 unlockCallback 함수를 사용하여 CorkHook의 beforeSwap 함수를 호출하고 사용자 정의된 마켓 및 후크 데이터를 전달합니다.

beforeSwap은 법률 시장의 CorkCall 함수를 다시 호출하고 지정된 후크 데이터를 실행합니다.

CorkCall은 상위 계층의 합법적인 CorkHook에서 전달된 데이터를 신뢰하고 직접 구문 분석하여 실행합니다.

이를 통해 공격자는 합법적인 시장에서 지정된 수의 weETH8DS-2 토큰을 RA로 생성한 새로운 시장으로 전송하는 후크 데이터를 구성하고, 새로운 시장에 해당하는 CT 및 DS 토큰을 얻을 수 있습니다.

PSM의 특성에 따르면, 공격자는 획득한 CT 및 DS 토큰을 사용하여 새로운 시장에서 RA 토큰, 즉 weETH8DS-2 토큰을 교환할 수 있습니다.

공격자는 weETH8DS-2 토큰을 얻은 후 이를 이전에 구매한 weETH8CT-2 토큰과 매칭하여 원래 시장에서 wstETH 토큰을 교환할 수 있습니다.

이때 공격자는 시장이 환매 자산의 유형을 제한하지 않고 프로토콜이 CorkHook.beforeSwap의 호출자 및 수신 데이터를 검증하지 않는다는 사실을 이용하여 합법적 시장의 DS 유동성을 다른 시장으로 이전하여 RA로 환매함으로써 모든 시장의 유동성을 훔쳤습니다.
MistTrack 분석
온체인 자금세탁 방지 및 추적 도구인 MistTrack의 분석에 따르면, 공격자의 주소 0xea6f30e360192bae715599e15e2f765b49e4da98은 3,761.878 wstETH의 수익을 냈으며, 이는 1,200만 달러 이상의 가치입니다.

그러면 공격자는
8개의 거래가 wstETH를 4,527 ETH로 변환했습니다.

또한 공격자의 초기 자금은 Swapuz.com에서 이체된 4,861 ETH에서 나왔습니다.

현재 공격자의 주소에는 총 4,530.5955 ETH가 남아 있으며, 우리는 계속해서 해당 자금을 모니터링할 것입니다.

요약하다
이 공격의 근본 원인은 사용자가 전달한 데이터가 기대에 부합하는지 엄격하게 검증되지 않았기 때문에 프로토콜의 유동성이 조작되어 예상치 못한 시장으로 이전된 다음 공격자가 불법적으로 이를 이용해 이익을 취했다는 것입니다. SlowMist 보안팀은 개발자가 설계 시 프로토콜의 각 단계가 예상대로인지 신중하게 검증하고, 시장에 출시되는 자산 유형을 엄격하게 제한할 것을 권장합니다.
