OrdinalsやBRC20などの普及で、昨今ビットコインウォレットを使う機会が増えてきています。その中で1番恐ろしいのが詐欺被害に遭うことです。
僕はUnisatWalletでサイトにアクセスし、安易に署名したことで大事にしていたNFTやBRC20トークンをすべて失っています。
この記事ではビットコインウォレットを使う際に気をつけなければいけないことを経験談をもとに解説しています。
Contents
ビットコインウォレットとは?
ビットコインウォレットとは、ビットコインL1資産をやり取りできるウォレットのことで、ウォレットを作成すればOrdinals(ビットコインNFT)やBRC20の送受信や、サイトに繋げてスワップやトークンの交換に使えます。
※L1資産とはビットコインブロックチェーンに刻まれている資産のことです。
ビットコインウォレットは簡単に作れるので興味がある人はこちらの「Unisat Walletの作成手順【BRC-20トークンの買い方】をご覧ください。
ビットコインウォレットにはUnisatやOrdinalWallet、Magicedenなどがあります。基本的な使い方はマーケットにウォレットを繋げてNFTやトークンを購入します。
ビットコインNFTやBRC20などを購入するにはまず、暗号資産取引所を開設してビットコインを購入します。国内の暗号資産取引所で人気が高い取引所はコインチェックがありますが、僕は主にビットコインエコシステムに触っているのでBTCの送金手数料が無料なBITPOINTを利用しています。
取引所はリスク回避など含めて複数開設しておくと便利です。この機会にぜひ公式ページをチェックしてみましょう。
ウォレットに署名
他のサイトでもウォレットが対応していれば使うことができます。この際にウォレットに署名しなければいけないのですが、この署名が原因で僕のUnisatWalletの全財産は消失しました。
では、何が原因だったのか?
簡単に説明するとウォレットの偽造です。
技術者ではないので詳しくは知りませんが、正規のUnisatWalletにはないトランザクション(署名の領域)を偽造してユーザーに署名させ、ウォレットにある資産を盗む手口です。
マーケットプレイスやDeFi、その他のアプリを利用するには必ず署名をすることになります。
で、署名の偽造にサインしてしまうと悪意のあるプログラムが発動しウォレット内の全財産が抜かれてしまいます。これを実行するのがbotです。
SIGHASHトランザクションを使っていますが、これ食らったら90%資産の回収は無理です。
トランザクションを偽造(SIGHASH_NONE)とは?
どのような方法でUnisatに偽のトランザクションを偽造しているのか?
SIGHASH_NONE トランザクションをUnisatウォレットに偽造して、サイン(署名)を求めてきます。で、これが結構わかりずらくてウォレットの使い方に慣れている人でもサインをする可能性はあると思います。
僕は一応のクリプトリテラシーはあったつもりでしたが、この日はまったく疑わずにサイン(署名)していました。自分で言いたくないけど大馬鹿ですね。
疲れていたり体調が悪いときには確認がおろそかになるので油断しないように注意しましょう。
SIGHASH_NONEは以下のような警告がウォレットに表示!
下の画像はSIGHASH_NONE偽造画面(XverseWalletだと思う)です。
このような画面が表示されたら要注意、絶対にConfirm(確認)をクリックしないようにする!
上図にどのようなことが書いてあるのか翻訳すると以下です。
トランザクションはSIGHASH_NONEを使用します。このトランザクションに署名すると、リクエスト者に資金に対する完全な権限が与えられ、資金の行き先を変更する可能性があります。潜在的な資金損失を理解した上で使用してください。この取引はあなたのウォレットからブロードキャストされません。後で第三者によってブロードキャストされる可能性があります。
SIGHASH_NONEを簡潔に説明すると、あなたがウォレットに署名した時点であなたの権限はなくなり権限はすべて第三者にゆだねられてしまうということです。
もうどうにもなりませんよね。
すぐに気が付けばRBF(リプレースバイフィー)で資産を取り戻せる可能性もあるようでが、早期での対策が必要になり極めて困難です。
ウォレット画面によくわからない文言が出現したら一旦踏みとどまってよく確認しましょう。絶対に署名しないように!
警告が表示されないウォレットもある
そのような署名を認識できるウォレットはまだ少ないようです。
現在、警告が表示されないウォレットもあるのでこの詐欺は脅威となる可能性がありますが、LeatherWalletは昨年からSIGHASHトランザクションについて警告を表示していたようです。
下の画像で警告文が表示されているのが分かります。
翻訳すると以下です。
Be careful with this transaction.The details of this transaction are not guaranteed and could be modified later.Continue only if you trust.
この取引には注意してください。この取引の詳細は保証されておらず、後で変更される可能性があります。信頼できる場合のみ続行してください。
1枚目2枚目のように警告文が表示されたときには必ずキャンセルしましょう。
※尚、1枚目の画像はXverseWallet2枚目画像がLeatherWalletのものだと思われます。
LeatherWalletやXverseWalletは対策済みだと思われますが、決して油断しないでください(DYOR)。
すべて抜かれたUnisatWalletの中身
下図は僕の資産をすべて抜かれたあとのUnisat Walletの中身です。
この中にはTrac、BMP、bitmap(レアのものがほとんど)のほかいくつかのNFTが入っていましたが、ご覧の通りすべて資産を抜き取られて「0」表示になっています。
ちなみにBTCは0.0001BTCだけ残してくれたみたいです。
ALLを見るとNFTが一つだけ入っていますが、2日後にウォレット確認してみたらすべて抜かれていたはずのウォレットに一つだけNFTが戻っていました。売ろうと思ったのですが、罠だと思いこのままにしています。
どちらにしても感染ウォレットなのでこのままウォレットを永久的に閉じることにします。
SIGHASH_NONE以外
このSIGHASHトランザクションは基本的に3つ存在しているようです。
SIGHASH_NONE以外にもSIGHASH_ALLとSIGHASH_SINGLEがあるようです。
よくわからないけどSIGHASH_○○は偽造トランザクションとして活用できるようですね。では、この恐ろしいSIGHASH、どのような特徴があるのか一緒に確認しておきましょう。
- SIGHASH_ALL:SIGHASH_ALLはすべてという意味があるようにすべての入力と出力に署名して、TXを変更できないようにしている(これデフォルトのようです)
- SIGHASH_SINGLE:特定の出力情報に署名する(同じインデックス番号を持つ)
- SIGHASH_NONE:入力には署名するが出力には署名しない(誰でも資産を自由に移動できる)
詐欺対策
では、どのようにして詐欺から身を守ることができるのか?
最低でも以下の3つは自身のウォレットをサイトへ繋げる前に必ず確認することです。
- 偽のウォレットアプリが出現していないか?
- 公式のウェブサイトかどうか?
- 公式のXアカウントかどうか?
この中でも極めて危険が潜んでいるのがウォレットアプリが偽物だった場合です。もしも訪れたサイトにウォレットアプリが表示されてシードフレーズを求められたらそれは詐欺です。
シードフレーズを打ち込んだ時点であなたの資産はすべてbotに抜かれます。
また、上述したようにSIGHASHの警告が表示されないウォレットもあります。この場合、現状での対策は極めて困難なため信頼できるマーケットプレイスやDeFiを使うこと以外にできることはありません。
面倒でもウォレットをこまめに使い分けることで分散性を持たせて、最悪の事態に遭遇しても被害を最小限に抑えられる工夫をしておくべきです。
これはすべてのことに当てはまりますが、情報発信元が公式サイトかどうか?しっかり確認しておくことがとても大事です(ドメインなども巧妙に変えてきます)。
何回でも言います!ウォレットに表示される警告表示は無視しないでください。
トランザクションに署名する際には入力と出力をよく確認してください。
通常、入力側は支払うためのBTCが表示されていますが、怪しい入力が多すぎる場合や不必要なOrdinalsの転送が入力されている場合にも署名しないでください。
最後に
SIGHASHについて説明してきましたが、主に使われている3つのSIGHASHの中でも最も恐ろしいトランザクションがSIGHASH_NONEです。
僕も自身の不注意から大切な資産を奪われましたが、今回のことは良い勉強代だと思って諦めます。同じような被害に遭った人も今は悔しいと思いますが、グッとこらえて心の傷が癒えたらまた、必ず一歩進めるはずです。
最後までありがとう
ビットコインエコシステムに関心のある人は一読くださいませ。