Qtum 開発者が古典的な PoS プロトコルに対する DoS 攻撃ベクトルを公開

Qtum 開発者が古典的な PoS プロトコルに対する DoS 攻撃ベクトルを公開

編集者注: この記事は、Qtum の共同創設者兼コア開発者の Jordan Earlz によって執筆されました。ジョーダン・アールズは 13 歳でプログラミングを学び始め、18 年の開発経験を持っています。コインレビュアーとして、コミュニティ内の100以上の仮想通貨のデザインをレビューしてきました。彼はセキュリティの専門家でもあり、北米のビットコインコミュニティで最も有名な開発者の一人です。以下の意見は、Qtum Quantum Chain Jordan eaelz の個人的な意見のみを表しています。

最近、Qtum Quantum Chain の開発中に、SCRIPT_VERIFY_ALLOW_EMPTY_SIG の識別子フィールドは必須オプションではないことがわかりました。この脆弱性により、サービス拒否 (DoS) 攻撃が発生する可能性があります。このフィールドはオプションであるため、ユーザーは DoS 禁止をトリガーすることなく無効なトランザクションを作成できます。この脆弱性を悪用すると、攻撃者は高価なトランザクションを作成して検証のために送信し、空の push および checksigverify 操作を送信して、空の署名を検証することができます。このように、システムはエラーメッセージを返し、トランザクションは無効とみなされ、ブロックも無効になります。さらに、コード構造により、コストのかかるトランザクションが 2 回評価されることになります。

方法:

voutなしで非標準トランザクションを作成する

[公開キー]

デュパ

トルスタック

以上

トルスタック

CHECKSIG - 有効でtrueを返す必要があります

DROP –結果をドロップ

FROMALTSTACK

FROMALTSTACK

スワップ

— sigopの上限に達するまでこのプロセスを無限に繰り返す

[空プッシュ]

[公開キー]

チェックシグ

1- スタックに1をプッシュし、トランザクション出力を使用可能にする

ブロックに採掘する(非標準なので、おそらく自分で行う必要があるでしょう)

CHECKSIG が true を返すが、エンコード検証などを実行しないようにソース コードを変更します。

最後に、前回のvoutを使用するブロックをマイニング/ステークします(vinは公開鍵の有効な署名である必要があります)

最後に、現在のブロックは前のブロックの出力値を使用します(vinは公開鍵の有効な署名である必要があります)

最後の空のプッシュ署名のため、ブロックは無効なブロックとみなされ、main.cpp:1328 のコードがトリガーされます。

// 署名を検証する

if (!VerifySignature(txPrev, *this, i, flags, 0))

{

if (フラグ & STANDARD_NOT_MANDATORY_VERIFY_FLAGS) {

// 失敗の原因が

// 必須ではないスクリプト検証チェック、例:

// null 以外のダミー引数;

// そうであれば、DoS保護をトリガーしないでください

// アップグレードされたネットワークと

// アップグレードされていないノード。

if (VerifySignature(txPrev, *this, i, flags & ~STANDARD_NOT_MANDATORY_VERIFY_FLAGS, 0))

エラーを返します("ConnectInputs(): %s の非必須の VerifySignature が失敗しました", GetHash().ToString());

}

script.cpp は異なる操作結果を返す必要があると思います:

OP_CHECKSIGの場合:

OP_CHECKSIGVERIFYの場合:

{

// (署名公開鍵 — bool)

スタックサイズ() < 2 の場合

false を返します。

valtype& vchSig = スタックトップ(-2);

valtype& vchPubKey = スタックトップ(-1);

// 最新のコードセパレータから始まるスクリプトのサブセット

CScript スクリプトコード(pbegincodehash、pend);

// 署名を削除する。署名が自分自身に署名する方法はない。

scriptCode.FindAndDelete(CScript(vchSig));

if ((flags & SCRIPT_VERIFY_STRICTENC) && (!CheckSignatureEncoding(vchSig, flags) || !CheckPubKeyEncoding(vchPubKey)))

false を返します。 //ここでは、最初の実行ではスクリプトが失敗しますが、2回目の実行では失敗しません

bool fSuccess = CheckSignatureEncoding(vchSig, flags) && CheckPubKeyEncoding(vchPubKey) &&

CheckSig(vchSig、vchPubKey、scriptCode、txTo、nIn、nHashType、フラグ);コンセンサスメカニズムに対する一般的な攻撃ベクトル:

このセクションでは、コンセンサス メカニズムが直面する可能性のあるさまざまな攻撃ベクトルをまとめます。一般的に、ネットワーク層とコンセンサス プロトコル層に対する一般的な攻撃には、サービス拒否攻撃 ( DoS )Sybil攻撃が含まれますサービス拒否攻撃は、大量のデータをノードに送信することで、ノードが通常のデータを処理できない状態にします (たとえば、システムが通常のトランザクションを処理できないように、大量の小さなトランザクション要求を送信するなど)。 Sybil 攻撃は、ネットワーク内のほとんどのノードを制御することで、正しいデータ冗長バックアップの有効性を弱めます。

PoW コンセンサス メカニズムでは、マイナーは新しく発見したブロックをすぐにネットワーク全体にブロードキャストします。セルフィッシュ・マイニング攻撃では、不正なマイナーが次の方法でコンピューティング リソースを浪費します。新しい有効なブロックを見つけたときに、それをすぐにネットワーク全体にブロードキャストせず、マイニングを継続して、他のマイナーが新しいブロックをマイニングする前に、より多くのブロックをマイニングしようとします。他のマイナーが有効なブロックをマイニングすると、攻撃者は以前に保持していた有効なブロックをすぐにネットワーク全体にブロードキャストします。しかし、一部の研究者は、そのような攻撃を実際に実行するのは容易ではないと考えています。

短距離攻撃では、攻撃者はシステムのセキュリティを確保するさまざまなリソース(コンピューティングリソース、暗号通貨リソースなど)の一定の割合を制御し、トランザクションを実行した後にロールバックします(トークンの支出やスマートコントラクトの実行など)。(つまり、暗号通貨を複数回支出する二重支出攻撃を実行します。)攻撃者が短距離攻撃を開始する場合、まずロールバックするトランザクションをネットワーク全体に送信し、次にトランザクションが n ブロックの確認情報を受信するまで、前のブロックのフォーク (ロールバックするトランザクションを含まないフォーク) でマイニングを続けます。フォーク上のブロック数が n より大きい場合、攻撃者はロールバックするトランザクションを含むブロックを公開します。このように、フォークされたチェーンの長さは元のメインチェーンよりも長いため、ネットワーク内のすべてのノードはフォークされたチェーンをメインチェーンと見なします。この時点で、トランザクションはロールバックされます。

長距離攻撃では、攻撃者はシステムリソースの一定の割合を制御して、ブロックチェーンのメインチェーンを履歴ブロックまたはジェネシスブロックでフォークし、より多くのブロック報酬を獲得したり、トランザクションをロールバックする目的を達成したりします。このタイプの攻撃は、プルーフ・オブ・ステーク合意メカニズムに基づくシステムを主に標的としています。フォークが発生したときに攻撃者が保有しているトークンはごくわずかであっても、フォーク上のトークンを自由に取引できるため、攻撃者はコインを鋳造し、より長いブロックチェーンを迅速に形成しやすくなります。

対照的に、PoS コンセンサス メカニズムに基づくシステムでは、攻撃者はコインの年齢を使用してノード エクイティを計算し、消費されたコインの年齢の合計によって有効なブロックチェーンを決定できます。未使用のトランザクション出力 (UTXO) の年齢は、コインの年齢にブロックの前の履歴ブロックの数を掛けて計算されます (次の章で紹介する Peercoin など)。コイン エイジ蓄積攻撃では、攻撃者はトークンをさまざまな UTXO に分散し、自分のステークがノード平均よりもはるかに大きくなるまで待機します。このように、攻撃者は継続的にコインを鋳造する可能性が高く、それによってメインチェーンをフォークしたり、トランザクションをロールバックしたりする目的を達成できます(二重支払い攻撃の実装など)。

PoS コンセンサス メカニズムでは、現在のブロックの解決は前のブロックのハッシュ値に依存します。十分な計算能力とエクイティを持つ攻撃者は、h 番目のブロックの仮想マイニング プロセス中にランダムな試行錯誤を通じて h 番目のブロックのハッシュ値に干渉し、h+1 番目のブロックをマイニングできるようになります。これは事前計算攻撃と呼ばれます。この方法を使用すると、攻撃者は継続的にコインを鋳造し、対応するブロック報酬を取得したり、二重支出攻撃を開始したりできます。

<<:  ウクライナではビットコインとダッシュ決済が普及し、加盟店カバー率は80%に達する

>>:  EternalBlueウイルスのアップグレード、OKCoinはビットコインの価格に影響を与えない

推薦する

ベネズエラのビットコイン「マイナー」4人が「採掘のために電力を盗んだ」として逮捕

(原題:ベネズエラのビットコイン「マイナー」4人が「マイニング用の電力を盗んだ」として逮捕された)外...

ケンタッキー州議会議員、ビットコイン採掘者を誘致するための税制優遇策を提案

米国のケンタッキー州議員らは先週、同州をビットコインやその他の仮想通貨の採掘者にとってより魅力的な地...

米国で2番目のビットコイン先物ETFが金曜日に開始

10月21日のブルームバーグによると、米国は現地時間の火曜日に初のビットコインETFを立ち上げた後、...

取引所は、マイニング業界のBinance Poolに「侵入」することで何を達成しようとしているのでしょうか?

鉱業は衰退しており、取引所は急速に成長しています。 Binanceが参入を発表したことで、3つの主要...

チェーン・フォー・ライフ:ブロックチェーンが保険業界に革命を起こす方法

ブロックチェーン技術は、中央機関なしで、公開取引を完全に電子形式で記録します。レコードは、一連のプロ...

FTXのコピーですか?米国SECがBinanceに対して提起した13件の告訴はどれほど深刻なのか?ヴ

2023年6月5日、米国証券取引委員会( SEC )は、 Binanceの関連会社と創設者のChan...

世界で最もクールなビットコイン企業がマイニングコンピューターを発売

この会社の名前はとてもかっこいいですね。21 といいます。さらにすごいのは、2015年上半期に設立さ...

データ:イーサリアムは本日20:00にロンドンアップグレードブロックの高さに到達すると予想されています

データによると、イーサリアム メインネットの現在のブロック高は 12,962,210 で、ロンドン ...

アマゾンのクラウドサービスに侵入したハッカーはビットコインのマイニングを選択

セキュリティ情報グループRedLockの最近の報告によると、ハッカーがビットコインを採掘するために2...

マイニングを利用して雇用率を維持し、インドの30都市がビットコインマイニングのトレーニングを開始する

インドの商工会議所は、国内30都市でビットコインマイニングのトレーニングプログラムを開始した。その目...

カナン株式会社の2021年度年次報告書の解釈:売上高49.87億人民元、記録破りの業績後の堀はどこにあるのか?

カナン株式会社は3月3日、2021年第4四半期の財務報告と2021年通期の財務報告を発表しました。報...

多国間中央銀行デジタル通貨ブリッジプロジェクトがユースケースマニュアルを公開

11月3日、国際決済銀行香港イノベーションセンターの支援を受け、香港金融管理局、タイ銀行、アラブ首長...

ブラジル、クリプトジャッキングによるルーターの乗っ取りが8万台増加

ブラジルで仮想通貨マイニング攻撃を受けていることが検出されたルーターの数は、30日間でさらに8万台増...

仮想通貨取引プラットフォームの「3つの罪」の内訳:不正取引、市場操作、犯罪者のマネーロンダリング

近年、ビットコインなどの仮想通貨に関連した投機が横行し、リスクが急速に蓄積されています。中国人民銀行...

1か月足らずで375,000回。次のPEPEを捕まえる方法

PEPE はわずか 21 日間で 375,000 倍に上昇し、多くの人々の生活を変えました。 Mem...