연결 중…
연결 중…
전체 보기
마인부우의 크립토볼
Telegram · @minebuu_cryptoball

이번 앱스트랙트 Cardex 취약점의 좀 더 디테일한 컨텍스트

게시
2025.02.19 09:39
조회
1,083
포워드
8
이미지
1장

https://x.com/0xCygaar/status/1891948692204368122

1. 앱스트랙트 글로벌 월렛 (AGW)는 세션 키 기능을 지원. 이 기능을 통해 앱의 세션키가 유저의 월렛에서 제한된 기능을 수행할 수 있음 (유저가 승인한 기능들에 한해)

2. Cardex는 카드 게임이였는데 사용자들은 카드 트레이딩과 관련된 함수(buyShares, sellShares, transferShares)를 앱 세션키에 승인해줬었음

3. 공격자가 Cardex 프론트에서 앱 세션키를 발견했고, 해당 세션키를 통해 유저들의 지갑으로부터 buyShares를 수행 (ETH 소모). 그 후 구매한 shares를 transferShares 함수를 통해 공격자 지갑으로 전송. 공격자는 shares를 판매하여 ETH를 챙김 (즉, buyshares -> transferShares -> sellShares)

4. 위 공격에서 앱이 승인받은 것은 위 3가지 함수들 뿐이며, eth로만 구매가 가능했으므로 ERC20 토큰과 NFT들은 피해를 받지 않았음

5. 우선 Cardex의 가장 큰 잘못은 앱의 세션키를 프론트앤드에 노출시킨 것이지만, 하나의 세션키로 모든 유저 앱을 관리한 것도 문제. Best Pratice는 사용자 당 하나의 세션키를 생성하는 것

6. 결과적으로 위 공격으로 약 400K 상당의 ETH가 탈취당하고 약 9천개의 지갑이 피해를 받음

사건의 구체적인 TimeLine은 이미지 참고하시면 좋을 것 같습니다. Timeline을 보면 앱스트랙트 팀의 대응이 빠르기도 했고, ChainLight팀도 사태 원인을 빠르게 파악하는데 (Cardex 프론트앤드에서 세션 키가 유출되었음을 확인) 도움을 줬습니다.

앞으로 AGW와 같은 Account Abstraction Wallet (AA wallet, smart wallet) 지갑이 많아짐에 따라 앱의 세션키 관리 부주의로 인한 공격이 더 자주 생길 수 있습니다. 각 빌더는 앱을 만들 때 반드시 보안 감사를 거쳐야하며, 사용자는 의심스러운 앱에 지갑을 연결하지 않고 큰 자산은 별도의 지갑에 관리하는 것이 필요합니다.

조회1,083포워드8텔레그램에서 보기