DERP例2:NFTマーケットプレイス
HOPRのDERPツールは、クリプトが真にプライベートで分散型であるために私たちが取り組まなければならない課題を明らかにします。 ツールの仕組みについて詳しくは、こちらの概要記事をご覧ください。また、秘密のMetamaskアカウントが思ったほど秘密ではない可能性があることを説明している最初のDERP例も参照して下さい…
2つ目のDERP例は、Metamaskのリンカビリティ問題ほど極端なものではありませんが、エクスプロイトの単純さは、特定の暗号資産サービスの提供方法に関する深刻な問題を浮き彫りにします。悪意のあるRPCプロバイダーは、それが処理するリクエストにおけるデータペイロードを利用してあなたのトランザクションをフロントランします。
この例では、NFTマーケットプレイスを使用しますが、多くの異なるクリプトdAppに置き換えても同じ問題を確認することができます。
この例では、わずかに異なるDERP設定を使用しています。イーサリアムメインネットのRPCプロバイダーの代わりに、ノーシス(Gnosis)チェーンのRPCプロバイダーを使用しています。
これを再現する場合は、下の図の設定を使用してください。
Network Name: DERP — Gnosis Chain
RPC URL: https://derp.hoprnet.org/rpc/xdai/mainnet
Chain ID: 100
Currency Symbol: xDAI
ウォレットにすでにノーシスチェーンが設定されている場合は、チェーンIDを入力するとエラーが発生します。 これは無視しても大丈夫です。
このエクスプロイトをテストするために、HOPR独自のBoost NFTを1つ使用しています。 これはテストネットやその他の活動で獲得できるNFTです。 あなたのAPRを増やすために私たちのステーキングプログラムでロックすることができますが、それらを売買取引することもできます。 これはノーシスチェーンのNFTマーケットプレイスであるepor.ioで入手できるものです。
上の動画では、ウォレットを接続し、ボタンをクリックして、silver Surveyor boost NFTに14xDAIを入札するプロセスを開始したことがわかります。 しかし、私は取引を完了させていません。
では、DERPには何が表示されるでしょう?
この小さなインタラクトにより、多くのリクエストが送られました。下にスクロールしていくと私たちの興味を引くeth_estimateGasが表示されます。このコールは、ペンディング中のトランザクションに必要なガスを見積もるために使用されます。結果は、ウォレットUIが提案されたガス価格を表示するために使用されます。
そのリクエストのデータは次のとおりです:
[
{
“gasPrice”: “0x77359400”,
“value”: “0xc249fdd32777ffff”,
“from”: “0x0c89edd253cfd1a95a9d56a11dcd7f0a1ea9eeb0”,
“to”: “0x8b90560963cf5625384e6e642c4979e6a1c38b04”,
“data”: “0x12c04b3e00000000000000000000000000000000000000000000000000000000000092af”
}
]
16進数コンバーターを使用すると、データを次のように解釈できます。
”gasPrice”の0x77359400 は、Metamaskが推奨するガス代価格です。
“value”の 0xc249fdd32777ffff は、私の入札額である14xDAIです。
データペイロードはそれほど興味深いものではありません。最初の8文字は4bytes.directoryに表示されないため、NFTマーケットプレイス専用の関数コールを表しているはずです。そしてゼロが続き文字列92afが現れます。この文字列とリバースエンジニアリングによって、入札されている正確なNFTと所有者を特定することができます。
これは特に個人情報というわけではありませんが、 所有者はepor.io入札ページのアバターをクリックして見つけることもできます。興味深いのは、このデータペイロードがこのNFTに入札するために必要なすべての情報であるということです。
例えば、DERPをプログラムして、このようなリクエストを受信するたびに、同じデータペイロードを使用して、私たちが管理するアカウントから同じトランザクションを送信するようにすることができます。そして、同じNFTをより高い価格ですぐに再リストすることが可能です。
それはあまり悪用されているようには思われないかもしれませんが、私があなたのアカウントをNFTコレクターとして識別した場合(RPCプロバイダーとして私はすでにあなたのアドレスを知っているので、トークンの保有を分析することで簡単に行えます)、少し高めの入札にあなたを押し込むことができる確かな入札案件となります。
この例で興味深いのは、これが可能であるのは誰のせいなのか、それに対して何をすべきなのかが明確でないことです。クリプトユーザーとして、私は明らかに、取引に支払う必要のあるガス代を見積もる必要があります。これを計算する唯一の方法は、私が行う予定のトランザクションの詳細を使用することです。ただし、フロントラン攻撃が発生する可能性があるほど多くのデータを送信する必要は必ずしもありません。多くの場合、呼び出されているスマートコントラクト関数のタイプを明らかにし、識別に使用され得る詳細を省略すれば十分です。
Sebastian Bürgel,
HOPR Founder
本記事はこちらの記事の日本語訳です。翻訳に関して誤りや助言等ございましたらどうぞご連絡ください。
Website: https://www.hoprnet.org
Twitter: https://twitter.com/hoprnet
Telegram: https://t.me/hoprnet
Telegram(日本語): https://t.me/HOPRJapanese
Discord: https://discord.gg/dEAWC4G
Forum: https://forum.hoprnet.org
Staking: https://stake.hoprnet.org
Bounties: https://bounties.hoprnet.org