JP2022535785A - ブロックチェーンネットワークにおけるスマートコントラクトをサポートするための方法及びコントラクト書き換えフレームワークシステム - Google Patents
ブロックチェーンネットワークにおけるスマートコントラクトをサポートするための方法及びコントラクト書き換えフレームワークシステム Download PDFInfo
- Publication number
- JP2022535785A JP2022535785A JP2021571359A JP2021571359A JP2022535785A JP 2022535785 A JP2022535785 A JP 2022535785A JP 2021571359 A JP2021571359 A JP 2021571359A JP 2021571359 A JP2021571359 A JP 2021571359A JP 2022535785 A JP2022535785 A JP 2022535785A
- Authority
- JP
- Japan
- Prior art keywords
- contract
- smart contract
- smart
- patched
- vulnerability
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 90
- 238000001514 detection method Methods 0.000 claims abstract description 33
- 239000000284 extract Substances 0.000 claims description 4
- 239000012634 fragment Substances 0.000 claims description 3
- 238000013459 approach Methods 0.000 description 32
- 239000007789 gas Substances 0.000 description 32
- 238000004458 analytical method Methods 0.000 description 31
- 230000006870 function Effects 0.000 description 27
- 241000366596 Osiris Species 0.000 description 24
- 230000008569 process Effects 0.000 description 22
- 230000003068 static effect Effects 0.000 description 18
- RTZKZFJDLAIYFH-UHFFFAOYSA-N Diethyl ether Chemical compound CCOCC RTZKZFJDLAIYFH-UHFFFAOYSA-N 0.000 description 14
- 238000012545 processing Methods 0.000 description 12
- 238000003860 storage Methods 0.000 description 11
- 238000012795 verification Methods 0.000 description 10
- 230000008859 change Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 7
- 238000013461 design Methods 0.000 description 7
- 238000013508 migration Methods 0.000 description 7
- 230000005012 migration Effects 0.000 description 7
- 238000011161 development Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 238000011084 recovery Methods 0.000 description 6
- 238000012546 transfer Methods 0.000 description 6
- 238000011156 evaluation Methods 0.000 description 5
- 238000003339 best practice Methods 0.000 description 4
- 238000005457 optimization Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000011160 research Methods 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 238000010200 validation analysis Methods 0.000 description 3
- 238000012038 vulnerability analysis Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 101100322583 Caenorhabditis elegans add-2 gene Proteins 0.000 description 1
- 206010034432 Performance fear Diseases 0.000 description 1
- 206010000210 abortion Diseases 0.000 description 1
- 238000012550 audit Methods 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000005266 casting Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000011109 contamination Methods 0.000 description 1
- 230000007123 defense Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 239000000796 flavoring agent Substances 0.000 description 1
- 235000019634 flavors Nutrition 0.000 description 1
- 238000005206 flow analysis Methods 0.000 description 1
- 230000035929 gnawing Effects 0.000 description 1
- 230000009474 immediate action Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000002427 irreversible effect Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000000053 physical method Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000013515 script Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/04—Payment circuits
- G06Q20/06—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
- G06Q20/065—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/51—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/656—Updates while running
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/389—Keeping log of transactions for guaranteeing non-repudiation of a transaction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1433—Vulnerability analysis
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1441—Countermeasures against malicious traffic
- H04L63/145—Countermeasures against malicious traffic the attack involving the propagation of malware through the network, e.g. viruses, trojans or worms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Bioethics (AREA)
- Virology (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Stored Programmes (AREA)
Abstract
Description
[1] C. Jentzsch, "The History of the DAO and Lessons Learned," October 10, 2017. [Online]. https://blog.slock.it/the-history-of-the-dao-and-lessons-learned-d06740f8cfa5.
[2] L. D.-H. C. H. O. P. S. a. A. H. Luu, "Making smart contracts smarter.,", the 2016 ACM SIGSAC conference on computer and communications security, 2016.
[3] P. A. D. D. D.-C. A. G. F. B. a. M. V. Tsankov, "Securify: Practical security analysis of smart contracts," the 2018 ACM SIGSAC Conference on Computer and Communications Security, 2018.
[4] S. S. G. M. D. a. S. S. Kalra, "Zeus: Analyzing safety of smart contracts," 25th Annual Network and Distributed System Security Symposium, 2018.
[5] J. a. C. R. Krupp, "teether: Gnawing at ethereum to automatically exploit smart contracts," 27th USENIX Security Symposium , 2018.
[6] I. A. K. I. S. P. S. a. A. H. Nikolic, "Finding the greedy, prodigal, and suicidal contracts at scale," the 34th Annual Computer Security Applications Conference, 2018.
[7] "Manticore," [Online]. https://github.com/trailofbits/manticore.
[8] "Ethereum Smart Contract Best Practices: Upgrading Broken Contracts," [Online]. https://consensys.github.io/smart-contract-best-practices/software_engineering/#upgrading-broken-contracts.
[9] "ZeppelinOS," [Online]. https://zeppelinos.org/.
デプロイコンポーネントが、スマートコントラクトの作成フェーズ中に、当該スマートコントラクトの作成者及び/又は所有者によって与えられる当該スマートコントラクトをアップグレードする許可を取得し、コントラクト書き換えフレームワークシステムが、ブロックチェーンネットワークからスマートコントラクトを取得して、当該スマートコントラクトを脆弱性検出ツールに渡し、脆弱性検出ツールが、スマートコントラクトの脆弱性を検出して、当該脆弱性のタイプと当該脆弱性の命令位置を検出し、リライタツールが、脆弱性を修正するためのパッチを含むようスマートコントラクトを書き換えて、脆弱性のタイプと脆弱性の命令位置に基づいてパッチ適用スマートコントラクトを生成し、デプロイコンポーネントが、パッチ適用スマートコントラクトがブロックチェーンネットワークにデプロイされるよう、パッチ適用スマートコントラクトを含むアップグレードトランザクションをブロックチェーンネットワークに発行する。
デプロイコンポーネントは、スマートコントラクトの作成フェーズ中に、当該スマートコントラクトの作成者及び/又は所有者によって与えられる当該スマートコントラクトをアップグレードする許可を取得する。コントラクト書き換えフレームワークシステムは、ブロックチェーンネットワークからスマートコントラクトを取得して、当該スマートコントラクトを脆弱性検出ツールに渡す。脆弱性検出ツールは、スマートコントラクトの脆弱性を検出して、当該脆弱性のタイプと当該脆弱性の命令位置を検出し、リライタツールは、脆弱性を修正するためのパッチを含むようスマートコントラクトを書き換えて、脆弱性のタイプと脆弱性の命令位置に基づいてパッチ適用スマートコントラクトを生成する。デプロイコンポーネントは、パッチ適用スマートコントラクトがブロックチェーンネットワークにデプロイされるよう、パッチ適用スマートコントラクトを含むアップグレードトランザクションをブロックチェーンネットワークに発行する。
- スマートコントラクトの作成フェーズでは、作成者(またはコントラクトの所有者)がアカウントAにスマートコントラクトをアップグレードする権限を付与する。この場合におけるアカウントAは、コントラクト書き換えフレームワークシステムのデプロイコンポーネントである。
- コントラクト書き換えフレームワークシステムは、アドレスAddrで新しく作成されたコントラクトのバイナリコードをブロックチェーンネットワークから取得して、そのバイナリコードを1つ以上の脆弱性検出ツールに渡す。
- 1つ以上の脆弱性検出ツールが、スマートコントラクトに静的および/または動的分析を適用し、i)検出された各脆弱性のタイプと、ii)検出された各脆弱性の命令位置(つまり、プログラムカウンター「PC」)と、を出力する。
-脆弱性分析の出力は、元のスマートコントラクトコードとともにリライタツールに送信される。リライタツールは、脆弱ブロックを特定し、脆弱ブロックにパッチを適用し(たとえば、必要なチェックを挿入することにより)、パッチ適用ブロックをコントラクトの末尾または未使用のアドレス領域に追加する。リライタツールは、脆弱ブロックの先頭を、パッチ適用ブロックにジャンプするトランポリンジャンプに置き換える。リライタツールは、パッチが適用されたコントラクトバイナリC’を生成し、それをデプロイコンポーネントに渡す。
- デプロイコンポーネントは、アカウントAの秘密鍵で署名されたペイロード(C’,Addr)を使用して、アドレス0x1にアップグレードトランザクションTxupgradeを送信する。
- ブロックチェーンノードは、アドレスAddrでコントラクトをチェックし、アップグレードを許可されたアカウントAを取得する。
- ブロックチェーンノードは、アップグレードトランザクションTxupgradeの署名を検証する。
- トランザクションが有効な場合、ブロックチェーンノードは、アドレスAddrのコードをC’に置き換える。
- スマートコントラクトパッチ適用フレームワークの設計と実装が提供され、ソースコードへのアクセスを必要とせずにイーサリアムスマートコントラクトの即時パッチ適用を可能にする。
- 整数オーバーフローの脆弱性にパッチを適用するスマートコントラクト用のバイトコードリライタ(リライタツールとして)に基づいて、エンドツーエンドの自動パッチ生成ツールのインスタンス化が提供される。
- 本発明の実施形態では、異なるクラスの脆弱性のパッチ適用をサポートする。
- 検出された脆弱性を修正する新しいコードへのジャンプ命令を使用して、スマートコントラクトコードをインストルメント化する。
- コントラクトのアップグレードを可能にするために、コントラクト作成時にスマートコントラクトを調整する。
- コントラクト作成フェーズで、コントラクトCをアップグレードするための特別なアカウントAを含めることで、Aによって署名されたコントラクトCに対する後続のアップグレード要求が受け入れられる。
- 0x1などのコントラクトデプロイ用の特別なアドレスを含めることで、0x1に送信され、ペイロード(C’,Addr)を持つトランザクションが、バイナリC’のアドレスAddrでコントラクトをアップグレードする要求として理解される。
- スマートコントラクト作成フェーズでは、作成者(またはコントラクトの所有者)がアカウントAにコントラクトをアップグレードする権限を付与する。多くのコントラクト所有者がいる場合、所有者はコントラクトがアップグレードされるよう署名を発行できる。この場合のアカウントAは、コントラクト書き換えフレームワークシステムのデプロイメントコンポーネントによって務められる。
- コントラクト書き換えフレームワークシステムは、コントラクトCにパッチを適用して脆弱性を修正し、新しい(パッチ適用された)コントラクトコードC’を生成する。
- コントラクト書き換えフレームワークシステムは、アカウントAによって署名されたペイロード(C’,Arrd)を使用して、アドレス0x1にアップグレードトランザクションTxupgradeを送信する。
- ブロックチェーンノードは、アドレスAddrでコントラクトをチェックし、権限を有するアップグレードアカウントAを読み取る。
- ブロックチェーンノードは、アップグレードトランザクションTxupgradeの署名を検証する
- トランザクションが有効な場合、ブロックチェーンノードは、アドレスAddrのコードをパッチ適用したコントラクトコードC’に置き換える
- ブロック1:コントラクト作成フェーズ中に、作成者(またはコントラクト所有者)は、コントラクト作成トランザクションでアップグレード条件を定義することにより、アカウントAまたは複数のアカウント{A_i}にコントラクトをアップグレードする許可を付与する。
- ブロック2:コントラクト書き換えフレームワークは、アドレスAddrで新しく作成されたコントラクトのバイナリコードをブロックチェーンネットワークから取得し、そのバイナリを1つまたは複数の脆弱性検出ツールに渡す。
- ブロック3:脆弱性検出ツールは、コントラクトに静的または動的分析を適用し、i)検出された各脆弱性のタイプ、ii)各脆弱性の命令位置つまりプログラムカウンタ(PC)、を出力する。
- ブロック4:脆弱性分析の出力は、オリジナルのコントラクトコードと共にリライタツールに送信される。リライタツールは、関連するコード書き換え方法を適用し、パッチ適用バイナリC’を生成して、パッチ検証者に渡す。
- ブロック5:パッチ検証者は、オリジナルのコントラクトに送信されたトランザクションを抽出し、それらを再実行する。オリジナルのコントラクトとパッチ適用されたコントラクトから収集された実行トレースを比較して、パッチ適用のコントラクトによって元に戻される悪意のあるトランザクションを除いて、異なる状態の更新につながらないことを確認する。
- ブロック6:パッチ検証者は、パッチ適用されたコントラクトのロジックの整合性を確認した後、ペイロード(C’,Addr)を含む「0x1」などの特別なアドレスを対象とするアップグレードトランザクションTxupgradeを準備し、関連するアカウント{Ai}の利害関係者に送信する。
- ブロック7:利害関係者は新しいコントラクトC’を確認し、アップグレードに同意する場合は、マルチ署名またはしきい値署名スキームを使用して、Aiのアカウント公開鍵を使用してトランザクションTxupgradeに署名し、署名されたトランザクションをブロックチェーンネットワークにブロードキャストする。
- ブロック8:ブロックチェーンノードは、許可されたアカウント{Ai}に関連するアップグレード条件と併せてTxupgradeに基づいて、アドレスAddrでオリジナルコントラクトを取得する。ブロックチェーンノードは、アップグレードトランザクションTxupgradeの署名が対応するコントラクト作成トランザクションによって定義されたアップグレード条件を満たす場合、その署名を検証する。
- ブロック9:トランザクションが有効な場合、ブロックチェーンノードは、アドレスAddrでコードをC’に置き換える。
I.A.EVMとスマートコントラクト
イーサリアムブロックチェーンシステムの中核には、イーサリアムスマートコントラクトを実行するイーサリアム仮想マシン(EVM)と呼ばれるカスタム仮想マシンがある。EVMは、カスタム命令フォーマットを備えた単純なスタックベースの仮想マシンで構成されている。すべての命令は1バイトのオペコードとして表される。引数はデータスタックに渡される。唯一の例外は、定数をスタックにプッシュするために使用されるプッシュ命令である。これらの定数は、命令バイトに直接エンコードされる。
バイナリ書き換えは、コンパイル後にプログラムを最適化またはインストルメント化する手法である。バイナリ書き換えは、制御フローの整合性などのセキュリティ強化手法を改良するため、コンパイルされたバイナリに適用されるだけでなく、実行中のプログラムにセキュリティパッチを動的に適用するためにも適用されている。x86やARMなどの従来のアーキテクチャでのバイナリ書き換えでは、静的バイナリ書き換えと動的バイナリ書き換えの2つのアプローチが開発されている。後者は、動的バイナリ変換またはインストルメンテーションとも呼ばれる。
一般的な整数型には、最小サイズまたは最大サイズがある。これは、整数型の固定ビット幅に起因する。ただし、プログラマーは、実際の整数型のこの制限を考慮せず、整数値の範囲に関するエッジケースを処理しないことがよくある。これにより、整数のバグが発生する。たとえば、整数のオーバーフローは、算術演算の結果が実際に整数型の最大サイズよりも大きい場合に発生する。次に、結果は整数型のビット幅に切り捨てられる。ほとんどのアーキテクチャでは、符号なし整数の加算が2ビット幅加算法として指定されるように、この動作はしばしば指定される。これにより、予期しない状況が発生し、加算の結果が2つのオペランドよりも小さくなる可能性があります。
現在、イーサリアムは、スマートコントラクトのコードをブロックチェーンにデプロイされると、不変として扱う。コードに許可される唯一の変更は削除である。これは、SELFDESTRUCT命令を使用してコントラクト自体によって実現できる。結果として、イーサリアムは現在、スマートコントラクトを更新するためのプラットフォームサポートを提供していない。回避策として、コミュニティは、デプロイされたスマートコントラクトのバグに対処し、スマートコントラクトにパッチを適用するためのいくつかの回避策を考え出した。ただし、アップグレード可能な契約を作成するためのベストプラクティスが何であるかはまだ明確ではない。現在、イーサリアムコミュニティは、アップグレード可能なコントラクトのさまざまな実装を実験している。
本発明の実施形態では、スマートコントラクトにタイムリーにパッチを適用し、強化するための自動パッチ適用プロセスを提供することができる。本発明の実施形態では、バイトコードリライタを利用して、バイトコードレベルでEVMスマートコントラクトに最小限の侵入パッチを適用することができる。設計上、バイトコードリライタは、オリジナルのコントラクトのコードと書き換えられたコントラクトの間のストレージレイアウトの互換性を保証する。そのため、スマートコントラクトにパッチを適用するのは簡単である。新しい攻撃タイプが発見されたり、バグ発見ツールが改善されたりすると、開発者の介入なしに、コントラクトを自動的にチェックし、パッチを適用し、短時間で再デプロイできる。図6は実施形態における自動パッチ適用プロセスの概要を示している。パッチ適用プロセスには、脆弱性の検出、バイトコードの書き換え、パッチの検証、およびコントラクトの展開、という4つの主要なコンポーネントがある。より具体的には、図6は、実施形態におけるスマートコントラクトに対する自動化されたパッチの生成のためのバイトコード書き換えに基づくプロセスのアーキテクチャを示している。このプロセスは、開発者によって実行される。入力として、バイトコードリライタは、脆弱なコントラクト、特別な機械可読脆弱性レポート、およびパッチテンプレートを受け取る。次に、バイトコードリライタは、パッチが適用されたバージョンのコントラクトを作成する。次に、このパッチが適用されたバージョンは、履歴トランザクションを再生および比較することによって検証される。最後に、パッチが適用されたコントラクトは、call-proxyパターンを使用したコントラクトのアップグレードパスを使用してデプロイできる。
本発明の実施形態では、イーサリアムスマートコントラクトのバイトコードを書き換えるためのツールを提供する。実施形態では、バイトコードリライタは、イーサリアム仮想マシン(EVM)用にコンパイルされたスマートコントラクトにおける命令の挿入、削除、および上書きをサポートする。これにより、自動生成されたパッチをスマートコントラクトに挿入できる。
EVMのスタックベースのアーキテクチャは、静的分析を困難にする。ジャンプターゲットもスタック上で渡されるため、すべてのジャンプは間接ジャンプになる。単純なヒューリスティックは、ジャンプターゲットが同じ基本ブロック内のスタックにプッシュされる大抵のジャンプに使用できる。たとえば、図7は、プッシュ命令が直前にあるジャンプ命令を示している。これは、スタックの最上位が定数値であり、プッシュ命令のバイトにエンコードされることを意味する。このとき、ジャンプターゲットはプッシュ命令からの定数値である。ただし、特に内部関数呼び出しを使用する場合、Solidityコンパイラは、より複雑な制御フロー構造を含むコードを生成する。
実施形態では、コントラクトのコード内の参照を修正する代わりに、トランポリンベースのリライタは、すべての新規および変更されたコードをオリジナルのコントラクトの末尾にコピーすることができる。次に、古いコードは、オリジナルのコードから新しく追加されたコードにジャンプするトランポリンに置き換えられる。これにより、オリジナルのコードで参照を修正する必要がなくなり、データフロー分析が不要になる。実際、リライタは部分的な制御フローグラフしか必要としないため、正確な制御フローグラフの回復でさえ必要ない。トランポリンベースのリライタは、変更された基本ブロックの境界と、これらの基本ブロックのフォールスルーエッジのみを回復する必要がある。
パッチを適用したコントラクトの機能的正確性を確保するために、本発明の実施形態では、コントラクトのすべてのトランザクションを再実行し、オリジナルの脆弱なコードと新しくパッチを当てたコードの動作が異なるかどうかを判断することができる。まず、脆弱なコントラクトに対するトランザクションのリストを取得する場合がある。次に、トランザクションを再実行し、脆弱なコントラクトに対する各トランザクションの実行トレースを取得する場合がある。次に、同じトランザクションを再実行するが、脆弱なコントラクトのコードをパッチを適用したコントラクトコードに置き換える。元のEthereumクライアントはこの機能をサポートしていないため、これは、人気のあるgo-ethereumクライアントに基づいて変更されたEthereumクライアントを使用して実行できる(たとえば、バージョン1.8.27-stable-3e76a291を使用できる)。パッチが適用されたコントラクトを使用したトランザクションの実行トレースも取得される場合がある。最後に、両方の実行トレースを比較して、両方のコントラクトの動作が等しいことを確認できる。パッチ検証者は、動作が異なるトランザクションのリストを生成する場合がある。そのようなトランザクションがない場合は、パッチがコントラクトの機能を阻害していないと見なすことができる。
実施形態では、バイトコードリライタは、EVMアセンブリ言語の短い小片として形成されたパッチテンプレートを取得ことができる。このテンプレートは、パッチが適用されるコントラクトに従って特殊化され、パッチが適用されたコントラクトの最後に再配置される。バイトコードリライタの拡張アセンブラは、パッチテンプレートでシンボリックラベルをサポートする。これは、パッチが適用されたバイトコードが生成されるときに解決される。これにより、パッチテンプレートの移植可能な実装が可能になる。
本発明の実施形態では、アップグレード可能なスマートコントラクトをサポートするために、delegatecall-proxyベースのアップグレードパターンを利用することを提供することができる。このパターンは、ZeppelinOSプロジェクトですでに正常に実装されている。スマートコントラクトは、プロキシコントラクトとロジックコントラクトの2つのコントラクトに分割される。プロキシコントラクトは主要なエントリポイントである。プロキシコントラクトのアドレスは固定されており、変更されない。プロキシコントラクトでは、すべてのデータも直接保存される。プロキシコントラクトのコードは、デプロイ後にアップグレードできないため、最小限に抑えられる。プロキシコントラクトは、すべての呼び出しをロジックコントラクトに転送するだけである。ロジックコントラクトには、コントラクトのすべてのビジネスロジックが含まれ、到着したトランザクションを処理する。プロキシコントラクトは、DELEGATECALL命令を利用してロジックコントラクトを呼び出す。これにより、ロジックコントラクトはプロキシコントラクトのストレージメモリ領域に直接完全にアクセスできるようになり、ロジックコントラクトが追加のオーバーヘッドなしで持続データにアクセスできるようになる。
スマートコントラクトの脆弱性の1つの主要なクラスは、整数のバグである。従来の機能では、多くのコントラクトが脆弱であり、一部は積極的に攻撃されていることが示されている。このため、整数バグと特に整数オーバーフローは、本発明の実施形態におけるバイトコード書き換えベースのパッチ適用フレームワークを紹介するための優れたターゲットとなっている。
本発明の実施形態では、符号なし256ビット整数型の整数オーバーフローおよびアンダーフローを検出するためのパッチテンプレートを提供することができる。これらのパッチテンプレートは、Cプログラミング言語のセキュアコーディングルールによるチェックと、SafeMathSolidityライブラリで実行されるチェックを追加する。実施形態では、バイトコードリライタには、整数の加算、減算、乗算をチェックするためのパッチテンプレートが付属している。パッチテンプレートを使用して、整数オーバーフローに対して脆弱な単一の算術命令を、チェックされたバリアントに置き換えることができる。そのため、パッチは、ガスのオーバーヘッドを最小限に抑え、コントラクトへの侵入を最小限に抑えるように最適化されている。パッチは、整数オーバーフローまたはアンダーフローが発生したことを検出し、例外を発行する。例外は、現在のコールを中止してコントラクトにロールバックする。セクションV.B.において通常のSafeMathSolidityライブラリと比較したチェックの効率の評価が示される。
実施形態におけるバイトコードリライタによって生成されたパッチの正確さを検証するために、Peckshieldと呼ばれるセキュリティ会社によって報告された既知の脆弱性に焦点を当てる。より具体的には、これらのエクスプロイトに基づいて攻撃された整数オーバーフロー/アンダーフローの脆弱性が確認された5つのERC-20トークンコントラクト(図11の表を参照)が見つけられている。
コントラクトの分析中に、OSIRISによって報告されたすべての整数オーバーフローバグにパッチを適用すると、誤検知と失敗が特定された。このことは、多くの解析ツールが完ぺきとは言えないように、本実施形態におけるパッチ検証がプロセスにおいて重要なステップであることを示している。詳細に分析された5つのトークンコントラクトでは、誤検知と失敗の両方が特定されている。オリジナルのOSIRISペーパー(C. Ferreira Torres, J. Schutte, and Others, “Osiris: Hunting for integer bugs in ethereum smart contracts,” in 34th Annual Computer Security Applications Conference (ACSAC18), San Juan, Puerto Rico, USA, December 3-7, 2018, 2018. [Online]. Available: http://orbilu.uni.lu/handle/10993/36757)の報告に反しているが、すべての脆弱性が正確に検出されるわけではない。デフォルトの構成では、OSIRISはしばしば不十分なコードカバレッジを行っている。分析全体とSMT解決者へのすべてのクエリの両方で異なるタイムアウト設定が使用される。複数の実行の結果をさまざまなタイムアウトオプションと組み合わせて、コードカバレッジを向上させている。それにもかかわらず、OSIRISが整数のオーバーフローのバグを正確に報告していない2つのケースが見つかった。
DAO攻撃は、2016年に、莫大な経済的損害を伴うスマートコントラクトの脆弱性により、最初に一般の注目を集めた。それ以来、ブロックチェーンコミュニティはスマートコントラクトの監査と脆弱性分析の実施を開始し、ますます多くの不具合が発見されている。これらの研究の中で、シンボリック実行、フォーマル検証、および汚染分析に基づいて多くのツールが開発されている。これらの分析ツールは、開発者がコントラクトをデプロイする前にコントラクトの潜在的な脆弱性を確認するのに役立ち、攻撃を防ぐ。ただし、一度デプロイされたコントラクトに簡単にパッチを適用する効果的な方法はまだない。Sereumなどの一部の動的分析ツールをEVMに統合して、脆弱なコントラクトに対するライブ攻撃を阻止できる。ただし、このようなツールをデプロイするには、ブロックチェーン開発チームと協力してクライアントソフトウェアをアップグレードする必要がある。このようなプロセスは非常に時間がかかる可能性があり、これらの分析ツールはほとんどブロックチェーンネットワークから切断されたままである。
Claims (15)
- トランザクションを検証する各ノードがスマートコントラクトを実行するための仮想マシンを実行するよう構成されており、前記ノードを有する分散型のブロックチェーンネットワークにおけるスマートコントラクトをサポートするための方法であって、
脆弱性検出ツール、リライタツール、および、デプロイコンポーネントを含むコントラクト書き換えフレームワークシステムが提供されており、
前記デプロイコンポーネントが、スマートコントラクトの作成フェーズ中に、当該スマートコントラクトの作成者及び/又は所有者によって与えられる当該スマートコントラクトをアップグレードする許可を取得し、
前記コントラクト書き換えフレームワークシステムが、前記ブロックチェーンネットワークから前記スマートコントラクトを取得して、当該スマートコントラクトを前記脆弱性検出ツールに渡し、
前記脆弱性検出ツールが、前記スマートコントラクトの脆弱性を検出して、当該脆弱性のタイプと当該脆弱性の命令位置を検出し、
前記リライタツールが、前記脆弱性を修正するためのパッチを含むよう前記スマートコントラクトを書き換えて、前記脆弱性のタイプと前記脆弱性の命令位置に基づいてパッチ適用スマートコントラクトを生成し、
前記デプロイコンポーネントが、前記パッチ適用スマートコントラクトが前記ブロックチェーンネットワークにデプロイされるよう、前記パッチ適用スマートコントラクトを含むアップグレードトランザクションを前記ブロックチェーンネットワークに発行する、
方法。 - 請求項1に記載の方法であって、
前記コントラクト書き換えフレームワークシステムが取得する前記スマートコントラクトは、バイナリ形式であり、特にバイトコードのスマートコントラクトコードである、
方法。 - 請求項1又は2に記載の方法であって、
前記リライタツールが生成する前記パッチ適用スマートコントラクトは、バイナリ形式、特にバイトコードの新規な、及び/又は、変更されたスマートコントラクトコードである、
方法。 - 請求項1乃至3のいずれかに記載の方法であって、
前記パッチ適用スマートコントラクトは、オリジナルのスマートコントラクトコードの脆弱ブロックを置き換えるためのバイナリ形式、特にバイトコードのパッチ適用コードが準備されることによって生成される、
方法。 - 請求項1乃至4のいずれかに記載の方法であって、
前記脆弱性の命令位置がプログラムカウンタを含む、
方法。 - 請求項1乃至5のいずれかに記載の方法であって、
前記ブロックチェーンネットワークから前記コントラクト書き換えフレームワークシステムによって取得された前記スマートコントラクトが前記リライタツールに渡され、
前記リライタツールが前記脆弱性のタイプと前記脆弱性の命令位置とに基づいて前記スマートコントラクトにパッチを適用して、前記パッチ適用スマートコントラクトを生成する、
方法。 - 請求項1乃至6のいずれかに記載の方法であって、
前記脆弱性の命令位置が解読されている間に、前記リライタツールが前記スマートコントラクトを中間表現にリフトされ、
前記中間表現にパッチコード片を含めた後に、当該中間表現がバイナリ形式にコンパイルされることで、前記パッチ適用スマートコントラクトが生成される、
方法。 - 請求項1乃至7のいずれかに記載の方法であって、
前記リライタツールが、前記スマートコントラクトの末尾の未使用アドレス領域にパッチコード片を追加し、
前記リライタツールが、前記スマートコントラクト内の脆弱コードを、命令ポインタが前記パッチコード片にジャンプするよう構成されたトランポリンジャンプに置き換え、
前記パッチコード片の実行が終了すると、前記命令ポインタは前記スマートコントラクトの元の後続コードにジャンプして戻り、前記スマートコントラクトの残り部分の実行を続行する、
方法。 - 請求項1乃至8のいずれかに記載の方法であって、
前記コントラクト書き換えフレームワークシステムの前記デプロイコンポーネントは、前記ブロックチェーンネットワークの前記スマートコントラクトをアップグレードするために使用される予め設定されたアカウントを務め、アップグレードトランザクションが前記予め設定されたアカウントによって署名された場合に、取得された前記スマートコントラクトから前記アップグレードトランザクションが前記ブロックチェーンネットワークのノードによって受け入れられる、
方法。 - 請求項1乃至9のいずれかに記載の方法であって、
スマートコントラクトをデプロイするための予め設定されたアドレスが定義されており、前記予め設定されたアドレスに送信されたトランザクションが、前記スマートコントラクトをアップグレードするための前記アップグレードトランザクションとされる、
方法。 - 請求項1乃至10のいずれかに記載の方法であって、
アップグレードトランザクションが、前記パッチ適用スマートコントラクト及びアドレスAddrを含むペイロードを有する、
方法。 - 請求項11に記載の方法であって、
前記アップグレードトランザクションを受信した前記ブロックチェーンネットワークの前記ノードが、前記アップグレードトランザクションに基づいてアドレスAddrで元の前記スマートコントラクトを確認して、前記デプロイコンポーネントによって示された前記予め設定されたアカウントを取得する、
方法。 - 請求項11又は12に記載の方法であって、
前記ブロックチェーンネットワークの前記ノードが、前記アップグレードトランザクションの署名を検証し、前記アップグレードトランザクションが有効である場合に、前記ブロックチェーンネットワークの前記ノードが、アドレスAddrの前記スマートコントラクトを前記パッチ適用スマートコントラクトに置き換える、
方法。 - 請求項1乃至13のいずれかに記載の方法であって、
前記コントラクト書き換えフレームワークシステムは、さらにパッチ検証者を含み、前記リライタツールが、前記パッチ適用スマートコントラクトを前記パッチ検証者に渡し、前記パッチ検証者が、元の前記スマートコントラクトに送信されたトランザクションを抽出して再実行し、元の前記スマートコントラクトと前記パッチ適用スマートコントラクトから収集された実行トレースを比較し、それらが異なる状態の更新とならないことを検証し、前記パッチ適用スマートコントラクトによって元に戻される悪意のあるトランザクションを除き、前記パッチ検証者が前記パッチ適用スマートコントラクトのロジックの一貫性を確認する、
方法。 - 請求項1乃至14のいずれかに記載の方法を実行する、ブロックチェーンネットワークにおけるスマートコントラクトをサポートするためのコントラクト書き換えフレームワークシステムであって、
前記ブロックチェーンネットワークは、ノードを有する分散型ブロックチェーンネットワークであり、
トランザクションを検証する前記各ノードは、スマートコントラクトを実行するための仮想マシンを実行するよう構成され、
さらに、脆弱性検出ツールと、リライタツールと、デプロイコンポーネントと、を備えており、
前記デプロイコンポーネントが、スマートコントラクトの作成フェーズ中に、当該スマートコントラクトの作成者及び/又は所有者によって与えられる当該スマートコントラクトをアップグレードする許可を取得し、
前記コントラクト書き換えフレームワークシステムが、前記ブロックチェーンネットワークから前記スマートコントラクトを取得して、当該スマートコントラクトを前記脆弱性検出ツールに渡し、
前記脆弱性検出ツールが、前記スマートコントラクトの脆弱性を検出して、当該脆弱性のタイプと当該脆弱性の命令位置を検出し、
前記リライタツールが、前記脆弱性を修正するためのパッチを含むよう前記スマートコントラクトを書き換えて、前記脆弱性のタイプと前記脆弱性の命令位置に基づいてパッチ適用スマートコントラクトを生成し、
前記デプロイコンポーネントが、前記パッチ適用スマートコントラクトが前記ブロックチェーンネットワークにデプロイされるよう当該パッチ適用スマートコントラクトを含むアップグレードトランザクションを前記ブロックチェーンネットワークに発行する、
コントラクト書き換えフレームワークシステム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962860306P | 2019-06-12 | 2019-06-12 | |
US62/860,306 | 2019-06-12 | ||
PCT/EP2020/065993 WO2020249572A1 (en) | 2019-06-12 | 2020-06-09 | Method and contract rewriting framework system for supporting smart contracts in a blockchain network |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2022535785A true JP2022535785A (ja) | 2022-08-10 |
JP7250178B2 JP7250178B2 (ja) | 2023-03-31 |
Family
ID=71170528
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021571359A Active JP7250178B2 (ja) | 2019-06-12 | 2020-06-09 | ブロックチェーンネットワークにおけるスマートコントラクトをサポートするための方法及びコントラクト書き換えフレームワークシステム |
Country Status (4)
Country | Link |
---|---|
US (1) | US11914721B2 (ja) |
EP (1) | EP3906488B1 (ja) |
JP (1) | JP7250178B2 (ja) |
WO (1) | WO2020249572A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102664072B1 (ko) * | 2022-11-25 | 2024-05-09 | 고려대학교 산학협력단 | 스마트 컨트랙트 취약점 수정 방법 및 장치 |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR3117718A1 (fr) * | 2020-12-14 | 2022-06-17 | Commissariat A L'energie Atomique Et Aux Energies Alternatives | Méthode de divulgation sélective de données via une chaine de blocs |
CN112651741A (zh) * | 2021-01-04 | 2021-04-13 | 北京京东乾石科技有限公司 | 基于区块链的数据处理方法和装置 |
CN113347033B (zh) * | 2021-05-31 | 2022-05-27 | 中国工商银行股份有限公司 | 基于区块链的根因定位方法、系统及验证节点 |
CN113360915B (zh) * | 2021-06-09 | 2023-09-26 | 扬州大学 | 基于源代码图表示学习的智能合约多漏洞检测方法及系统 |
KR102529028B1 (ko) * | 2021-07-01 | 2023-05-03 | 한국과학기술원 | 프록시 컨트랙트 생성방법 및 장치 |
KR102529081B1 (ko) * | 2021-07-02 | 2023-05-08 | 한국과학기술원 | 프록시 컨트랙트 생성방법 및 장치 |
US20230177167A1 (en) * | 2021-12-08 | 2023-06-08 | Paypal, Inc. | Automatic verification of decentrailized protocols |
CN114202215A (zh) * | 2021-12-15 | 2022-03-18 | 中山大学 | 智能合约交易异常维护方法、装置、设备及可读存储介质 |
WO2023195920A1 (en) * | 2022-04-06 | 2023-10-12 | Nanyang Technological University | Smart contract evaluation |
CN115456623A (zh) * | 2022-08-11 | 2022-12-09 | 深圳前海环融联易信息科技服务有限公司 | 区块链交易验证方法、装置、存储介质及电子设备 |
CN115174279B (zh) * | 2022-09-09 | 2022-11-29 | 南方科技大学 | 一种以太坊智能合约漏洞实时检测方法、终端及存储介质 |
CN115310100B (zh) * | 2022-10-12 | 2023-02-03 | 鹏城实验室 | 智能合约漏洞修复方法、设备以及介质 |
US11790360B1 (en) * | 2023-03-14 | 2023-10-17 | Gearlay Technologies Inc. | Multi-actor transaction simulation in a blockchain network |
CN116702157B (zh) * | 2023-06-21 | 2023-12-26 | 烟台大学 | 一种基于神经网络的智能合约漏洞检测方法 |
CN116743499B (zh) * | 2023-08-09 | 2023-10-27 | 杭州安碣信息安全科技有限公司 | 一种针对智能合约攻击的模仿交易生成方法 |
CN117251234B (zh) * | 2023-11-16 | 2024-03-29 | 北京中电华大电子设计有限责任公司 | 基于补丁的函数调用方法及装置 |
CN117556425B (zh) * | 2023-11-24 | 2024-04-23 | 烟台大学 | 基于图神经网络的智能合约漏洞检测方法、系统和设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005038428A (ja) * | 2003-07-16 | 2005-02-10 | Microsoft Corp | 脆弱性のあるファイルの自動的な検出およびパッチ |
JP2013134573A (ja) * | 2011-12-26 | 2013-07-08 | Nec Corp | ソフトウェア修正装置、ソフトウェア修正システム、ソフトウェア修正方法、及び、ソフトウェア修正プログラム |
JP2016167262A (ja) * | 2015-03-05 | 2016-09-15 | 富士通株式会社 | 脆弱性分析のための自律型推論システム |
CN108536445A (zh) * | 2018-03-28 | 2018-09-14 | 成都链安科技有限公司 | 面向区块链智能合约的高度自动化形式化验证系统及方法 |
WO2018172439A1 (en) * | 2017-03-22 | 2018-09-27 | NEC Laboratories Europe GmbH | Method for operating a blockchain |
JP2019053729A (ja) * | 2017-09-15 | 2019-04-04 | 富士通株式会社 | スマートコントラクトのテスト方法及びテスト装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10158479B2 (en) | 2017-02-06 | 2018-12-18 | Northern Trust Corporation | Systems and methods for generating, uploading and executing code blocks within distributed network nodes |
CN107464148A (zh) * | 2017-08-23 | 2017-12-12 | 众安信息技术服务有限公司 | 一种基于联盟链的智能合约升级方法和系统 |
US10749687B2 (en) * | 2018-03-15 | 2020-08-18 | Microsoft Technology Licensing, Llc | Binding version stamp for smart contracts |
US10979445B2 (en) * | 2018-07-09 | 2021-04-13 | At&T Intellectual Property I, L.P. | Security management of devices using blockchain technology |
KR101947760B1 (ko) * | 2018-09-04 | 2019-02-13 | 김종현 | 스마트콘트랙트의 보안 인증 서버 |
-
2020
- 2020-06-09 EP EP20734847.5A patent/EP3906488B1/en active Active
- 2020-06-09 WO PCT/EP2020/065993 patent/WO2020249572A1/en unknown
- 2020-06-09 JP JP2021571359A patent/JP7250178B2/ja active Active
- 2020-06-09 US US17/608,759 patent/US11914721B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005038428A (ja) * | 2003-07-16 | 2005-02-10 | Microsoft Corp | 脆弱性のあるファイルの自動的な検出およびパッチ |
JP2013134573A (ja) * | 2011-12-26 | 2013-07-08 | Nec Corp | ソフトウェア修正装置、ソフトウェア修正システム、ソフトウェア修正方法、及び、ソフトウェア修正プログラム |
JP2016167262A (ja) * | 2015-03-05 | 2016-09-15 | 富士通株式会社 | 脆弱性分析のための自律型推論システム |
WO2018172439A1 (en) * | 2017-03-22 | 2018-09-27 | NEC Laboratories Europe GmbH | Method for operating a blockchain |
JP2019053729A (ja) * | 2017-09-15 | 2019-04-04 | 富士通株式会社 | スマートコントラクトのテスト方法及びテスト装置 |
CN108536445A (zh) * | 2018-03-28 | 2018-09-14 | 成都链安科技有限公司 | 面向区块链智能合约的高度自动化形式化验证系统及方法 |
Non-Patent Citations (4)
Title |
---|
MONPERRUS, M.: "Automatic Software Repair: A Survey", IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, vol. 45, no. 1, JPN6023007375, 1 January 2019 (2019-01-01), pages 34 - 67, ISSN: 0005001448 * |
PEREZ, D. AND LIVSHITS, B.: "Smart Contract Vulnerabilities: Does Anyone Care?", ARXIV, vol. 1902.06710v3, JPN6023007371, 17 May 2019 (2019-05-17), pages 1 - 15, ISSN: 0005001446 * |
PERKINS, J. H. ET AL.: "Automatically Patching Errors in Deployed Software", PROC. OF THE 22ND ACM SIGOPS SYMPOSIUM ON OPERATING SYSTEMS PRINCIPLES, JPN7023000799, 11 October 2009 (2009-10-11), pages 87 - 102, XP058334133, ISSN: 0005001447, DOI: 10.1145/1629575.1629585 * |
TSANKOV, P. ET AL.: "SECURIFY: Practical Security Analysis of Smart Contracts", ARXIV, vol. 1806.01143v2, JPN6023007368, 24 August 2018 (2018-08-24), pages 1 - 16, ISSN: 0005001445 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102664072B1 (ko) * | 2022-11-25 | 2024-05-09 | 고려대학교 산학협력단 | 스마트 컨트랙트 취약점 수정 방법 및 장치 |
Also Published As
Publication number | Publication date |
---|---|
WO2020249572A1 (en) | 2020-12-17 |
EP3906488A1 (en) | 2021-11-10 |
US20220318399A1 (en) | 2022-10-06 |
EP3906488B1 (en) | 2023-08-02 |
US11914721B2 (en) | 2024-02-27 |
JP7250178B2 (ja) | 2023-03-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7250178B2 (ja) | ブロックチェーンネットワークにおけるスマートコントラクトをサポートするための方法及びコントラクト書き換えフレームワークシステム | |
Rodler et al. | {EVMPatch}: Timely and automated patching of ethereum smart contracts | |
Bhargavan et al. | Formal verification of smart contracts: Short paper | |
Krupp et al. | {teEther}: Gnawing at ethereum to automatically exploit smart contracts | |
Rodler et al. | Sereum: Protecting existing smart contracts against re-entrancy attacks | |
US20230057419A1 (en) | System and method for compiling high-level language code into a script executable on a blockchain platform | |
Zhang et al. | Precise and accurate patch presence test for binaries | |
US11507669B1 (en) | Characterizing, detecting and healing vulnerabilities in computer code | |
Schoepe et al. | Explicit secrecy: A policy for taint tracking | |
Grishchenko et al. | Ethertrust: Sound static analysis of ethereum bytecode | |
Ferreira Torres et al. | The eye of horus: Spotting and analyzing attacks on ethereum smart contracts | |
Hwang et al. | Gap between theory and practice: An empirical study of security patches in solidity | |
Zhang et al. | BDA: practical dependence analysis for binary executables by unbiased whole-program path sampling and per-path abstract interpretation | |
Weiss et al. | Annotary: A concolic execution system for developing secure smart contracts | |
Bhargavan et al. | Short paper: Formal verification of smart contracts | |
Ahrendt et al. | Smart contracts: a killer application for deductive source code verification | |
Schneidewind et al. | The good, the bad and the ugly: Pitfalls and best practices in automated sound static analysis of ethereum smart contracts | |
Feng et al. | Summary-based symbolic evaluation for smart contracts | |
Li et al. | Detecting standard violation errors in smart contracts | |
Barboni et al. | SuMo: A mutation testing approach and tool for the Ethereum blockchain | |
Di Angelo et al. | Evolution of automated weakness detection in Ethereum bytecode: a comprehensive study | |
Qin et al. | Towards automated security analysis of smart contracts based on execution property graph | |
Li et al. | Eosioanalyzer: An effective static analysis vulnerability detection framework for eosio smart contracts | |
Li et al. | Formal Methods and Software Engineering: 24th International Conference on Formal Engineering Methods, ICFEM 2023, Brisbane, QLD, Australia, November 21–24, 2023, Proceedings | |
Pasqua et al. | Enhancing Ethereum smart-contracts static analysis by computing a precise Control-Flow Graph of Ethereum bytecode |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20220120 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20230127 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20230228 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20230320 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7250178 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |