Quantcast
Channel: Translations - Cardano Forum
Viewing all articles
Browse latest Browse all 288

:kr: 카르다노 지갑과 달리 이더리움 지갑은 왜 간단하게 출금할 수 있을까요?

$
0
0

    1. 28

탈중앙화 애플리케이션(DApp, 디앱) 영역에서는 안타깝게도 사용자가 악의적 행위자의 먹잇감이 될 수 있습니다. 이러한 악의적 행위자는 사용자를 속여 트랜잭션에 서명하도록 유도하여 지갑에서 자산을 빼돌릴 수 있습니다. 이 문제는 특히 이더리움 생태계에서 널리 퍼져 있으며, 이는 단순히 규모가 크기 때문만은 아닙니다. 이더리움에서 사용자는 일반적으로 디앱이 나중에 지갑에서 얼마든지 자산을 전송할 수 있도록 사전 승인합니다. 이 기능은 편리해 보일 수 있지만, 흔히 '이더리움 탈취기(Ethereum drainers)'라고 불리는 악의적 주체에 의해 악용되는 경우가 많습니다. 이러한 사건은 카르다노 생태계에서는 흔하지 않습니다. 이번 글에서는 그 이유를 설명해드리겠습니다.

미래 자산 전송을 사전 승인하는 것은 위험하다

이상적으로 스마트 컨트랙트에는, 소유자가 스마트 컨트랙트에서 외부 주소로 자산을 이전할 수 있는 메커니즘이나 소유자가 자산을 이전할 수 있는 메커니즘이 없어야 합니다. 이러한 속성은 스마트 컨트랙트에 어느 정도의 신뢰를 부여합니다. 사용자는 제3자가 자산을 조작할 수 없다는 사실을 알고 안심하고 자신의 자산을 스마트 컨트랙트에 위임할 수 있습니다(사람이 아닌 코드를 신뢰). 따라서 사용자는 스마트 컨트랙트를 배포한 팀을 신뢰할 필요가 없습니다.

그럼에도 불구하고 스마트 컨트랙트에 전송 기능을 통합하여 소유자가 스마트 컨트랙트에서 다른 주소로 토큰을 전송할 수 있도록 할 수 있습니다.

이러한 기능은 일반적으로 악의적인 스마트 컨트랙트와 관련이 있습니다.

이더리움 탈취기에는 사용자의 지갑에서 스마트 컨트랙트로 디지털 자산을 이동하는 데 사용되는 ‘transferFrom’ 함수가 포함되어 있습니다. 그런 다음 ‘transfer’ 함수를 사용하여 공격자의 주소로 자산을 전송합니다.

‘transferFrom’ 함수는 디앱에서 일반적으로 사용되며 ERC-20 토큰 표준의 일부입니다. 이 함수는 소스 주소가 스마트 컨트랙트를 승인한 경우 스마트 컨트랙트가 일정량의 토큰을 한 주소에서 다른 주소로 전송할 수 있도록 허용합니다. 승인에 대해서는 나중에 자세히 설명하겠습니다.

스마트 컨트랙트에 의해 자산이 통제(소유)되면, ‘transfer’ 기능을 사용하여 스마트 컨트랙트에서 다른 주소로 자산을 이동시킬 수 있습니다.

‘transfer’ 기능은 ERC-20 토큰 표준의 일부이기도 합니다. 함수 호출자의 주소에서 다른 주소로 토큰을 직접 전송하는 데 사용됩니다.

스마트 컨트랙트의 맥락에서, 컨트랙트 소유자가 토큰을 컨트랙트에서 외부 주소로 전송할 수 있는 전송 함수가 존재한다면, 이는 잠재적으로 악성 컨트랙트의 신호일 수 있습니다. 공격자가 해당 주소를 제어할 수 있는 것입니다.

이더리움 지갑 탈취기는 ‘승인’ 기능을 악용합니다.

이더리움 생태계에서 스마트 컨트랙트와 상호작용할 때, 사용자는 종종 지갑에서 일정량의 토큰을 사용할 수 있도록 컨트랙트를 승인해야 합니다. 이를 ‘토큰 승인’ 트랜잭션이라고 합니다.

일반적으로 악의적이지 않은 사용 사례의 경우, 이는 유용합니다. 사용자는 지갑에서 자산을 미리 옮기지 않고 목표 가격에 자산을 구매하도록 디앱을 승인할 수 있습니다. 전송은 적절한 시점에 이루어집니다.

‘승인’ 트랜잭션이 체결되면 스마트 컨트랙트는 사용자의 추가 승인이나 조치 없이도 언제든지 ‘transferFrom’ 함수를 호출할 수 있습니다. ‘transferFrom’ 함수는 온체인 트랜잭션이며, 사용자의 지갑에서 자동으로 지불되는 GAS 수수료가 필요합니다.

‘승인’ 트랜잭션과 ‘transferFrom’ 트랜잭션 모두 GAS 수수료가 필요합니다.

공격자는 종종 사용자를 속여 악성 컨트랙트의 승인 함수를 호출하도록 유도하고, 나중에 transferFrom을 사용하여 사용자 지갑에서 토큰을 빼돌립니다. 토큰을 받고 보유하도록 설계된 컨트랙트의 경우 전송 함수가 유사하게 사용될 수 있습니다.

지갑 탈취의 단계별 작동 방식

공격은 사회 공학으로 시작됩니다. 공격자는 그럴듯한 피싱 웹사이트나 악성 디앱을 만들어야 합니다. 공격자는 종종 Google에 비용을 지불하고 사용자에게 가짜 웹사이트를 첫 페이지로 표시합니다. 사용자를 속이고 함정으로 유인하는 방법에는 여러 가지가 있습니다.

악성 디앱은 인기 있는 디파이 서비스(DEX 또는 대출 플랫폼)의 가짜 버전이거나 높은 수익을 약속하는 새로운 디앱일 수도 있습니다. 또한, NFT 시리즈를 발행하거나 이자 농사를 위해 토큰을 스테이킹하거나 토큰 세일에 참여하도록 유혹할 수도 있습니다.

사용자는 악성 웹사이트나 디앱을 방문하고 여기에 상호작용하기로 결정합니다.

디앱과 상호작용하기 위해 사용자는 이더리움 지갑을 연결하라는 요청을 받습니다. 지갑이 연결되면 디앱은 사용자에게 트랜잭션 '승인’에 서명할 것을 요청합니다. 사용자는 대개 가능한 최대 금액인 많은 양의 토큰 지출을 승인하라는 요청을 받습니다.

악의적이지 않은 디앱의 경우 일반적으로 ‘승인’ 거래에 서명하기 때문에 사용자는 이를 의심하지 않을 것입니다. 중요한 세부 사항에 주의를 기울이지 않을 수 있습니다.

사용자는 자신의 지갑에서 거래를 확인하지만, 악성 스마트 컨트랙트에 자신의 토큰을 모두 사용할 수 있는 권한을 부여했다는 사실을 깨닫지 못합니다.

거래가 확인되면 악성 스마트 컨트랙트는 언제든지 전송(또는 transferFrom) 함수를 호출하여 사용자의 지갑에서 승인된 모든 토큰을 빼낼 수 있게 됩니다.

이더리움 스마트 컨트랙트에 부여된 승인을 취소할 수 있습니다. 이 프로세스를 종종 토큰 허용 취소 또는 토큰 승인 취소라고 합니다. 승인 취소는 온체인 트랜잭션이므로 사용자는 GAS 수수료를 지불해야 합니다. 일부 사용자는 관련 수수료 때문에 토큰 승인 취소를 주저할 수 있습니다.

그러나 대부분의 경우 공격자는 빠르게 행동하기 때문에 사용자가 실수했다는 사실을 깨닫기까지 기다릴 시간이 없습니다.

카르다노 지갑을 쉽게 탈취할 수 없는 이유는 무엇일까?

카르다노와 이더리움 생태계 모두, 공격자가 사용자를 속여 의도한 것보다 더 많은 자산을 전송하는 트랜잭션에 서명하도록 유도할 위험이 도사리고 있습니다.

이더리움과 달리 카르다노의 스마트 컨트랙트에는 상응하는 승인 메커니즘이 없습니다. 이는 스마트 컨트랙트가 사용자의 지갑에 무제한으로 접근할 수 없음을 의미합니다. 따라서 악의적인 스마트 콘트랙트는 사용자가 송금할 때마다 명시적으로 트랜잭션에 서명하지 않는 한 사용자의 지갑을 탈취할 수 없습니다.

카르다노의 스마트 컨트랙트는 본질적으로 검증자 스크립트입니다. 이러한 스크립트는 스크립트의 주소에서 자금을 이동하려는 트랜잭션의 유효성을 검사할 때 각 카르다노 노드에서 자동으로 실행됩니다.

카르다노의 UTxO 모델과 이더리움의 계정 기반 모델의 차이는 지갑을 고갈시킬 수 있는 가능성 측면에서 중요합니다.

카르다노는 자산이 계정의 잔액이 아닌 미사용 아웃풋에 저장되는 UTxO 모델을 사용합니다. 이 모델에서 트랜잭션에는 인풋과 아웃풋이 있으며, 인풋은 이전 트랜잭션의 미사용 아웃풋입니다. 각 UTxO는 전체적으로 한 번만 소비할 수 있습니다. 따라서 카르다노의 UTxO 모델에는 이더리움의 승인 기능에 상응하는 기능이 없습니다.

일반적으로 트랜잭션에는 사용자가 지갑에 보유하고 있는 제한된 수의 UTxO만 포함됩니다. 트랜잭션에 입력으로 포함되지 않은 다른 UTxO는 트랜잭션 서명의 영향을 받지 않습니다.

보안 관점에서 볼 때, 이 모델은 지갑 탈취 공격에 더 강하다고 볼 수 있습니다.

그림에서 앨리스는 UTxO를 사용하는 모든 트랜잭션에 서명해야 하는 것을 볼 수 있습니다. 스마트 컨트랙트가 앨리스가 소유한 UTxO를 임의로 전송하는 것은 불가능합니다.

단일 주소로 표시되는 이더리움 계정에는 다양한 ERC-20 토큰을 포함한 여러 유형의 토큰 잔액을 보유할 수 있습니다. 승인 기능은 일반적으로 전체 계정에 대한 지출 승인을 부여하지 않습니다. 대신, 특정 스마트 컨트랙트에 사용자 계정에서 특정 ERC-20 토큰의 특정 금액을 사용할 수 있는 승인을 부여합니다.

그러나 악의적인 스마트 컨트랙트는 의도치 않게 사용자의 전체 계정에서 토큰을 사용하도록 승인할 수 있습니다. 악성 스마트 컨트랙트는 이 승인 메커니즘을 악용하여 사용자의 추가 승인이나 조치를 요구하지 않고도 사용자의 지갑에서 토큰을 빼낼 수 있습니다.

그림에서 앨리스는 ‘승인’ 트랜잭션에만 서명한 것을 볼 수 있습니다. 이로 인해 악성 스마트 컨트랙트는 앨리스의 계정에서 모든 토큰을 전송할 수 있었습니다.

계정에서 모든 자산을 잃지 않으려면 사용자는 믿을 수 있고 신뢰할 수 있는 스마트 컨트랙트에 대해서만 지출 승인을 부여해야 합니다.

결론

이더리움의 승인 기능은 개발자에게 제3자가 주기적으로 은행 계좌에서 지정된 금액을 인출하도록 허용하는 것과 유사한 기능을 제공하고 있습니다. 이는 유용한 기능이지만, 사용자는 제3자가 자신의 인출 한도를 초과하지 않도록 신뢰해야 합니다. 반면, 카르다노는 개발자에게 이와 유사한 기능을 제공하지 않습니다. 사용자는 지갑에서 UTxO를 사용하는 각 트랜잭션에 명시적으로 서명해야 합니다.

두 접근 방식 모두 장점이 있습니다. 각 팀은 스마트 컨트랙트를 만들 때 보안을 보장하는 것과 개발자에게 다양한 옵션을 제공하는 것 사이에서 균형을 잡아야 했습니다. 카르다노의 스크립트는 UTxO를 사용하기 위한 조건이 충족되었는지 검증하도록 설계되었지만, 이더리움의 스마트 컨트랙트에서는 사용자 계정에 대한 통제권을 확보할 수 있게 되어 있습니다.


* Source: https://cexplorer.io/article/why-is-simple-to-drain-the-ethereum-wallet-unlike-the-cardano-wallet
* Translation: Ilhun@CryptoVeri :twitter: enics_sky@naver.com

1 post - 1 participant

Read full topic


Viewing all articles
Browse latest Browse all 288

Trending Articles