JP6952506B2 - 検査装置 - Google Patents
検査装置 Download PDFInfo
- Publication number
- JP6952506B2 JP6952506B2 JP2017115753A JP2017115753A JP6952506B2 JP 6952506 B2 JP6952506 B2 JP 6952506B2 JP 2017115753 A JP2017115753 A JP 2017115753A JP 2017115753 A JP2017115753 A JP 2017115753A JP 6952506 B2 JP6952506 B2 JP 6952506B2
- Authority
- JP
- Japan
- Prior art keywords
- function
- contract
- blockchain
- source code
- detection unit
- 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.)
- Active
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Description
SCでは、「他のSCのアドレス(アカウントとも言える).関数名」の形で、他のSCの関数を呼び出すことができる(外部関数呼び出しと呼ぶ)。しかし、信頼できないコントラクトの関数を呼び出すことは予期しない結果をもたらす可能性がある。例えば、外部のSCに実装された悪意のあるコードを意図せず呼び出してしまう可能性がある。
残高等のフィールド(言い換えればステート)を更新する前に送金等の処理(「特定処理」と呼ぶ。)を実行するようにSCが記述された場合、外部の不正プログラムにより、フィールドの更新前に特定処理を複数回実行するように制御されてしまう可能性がある。この結果、ユーザの残高を超える金銭が引き出されてしまう等、不正な結果が生じうる。なお、実施例における特定処理は、外部関数呼び出しの一種と言え、SCを呼び出した元のプログラムの関数(例えばフォールバック関数)を呼び出すものである。
ブロックチェーンにおいて、複数のトランザクション(具体的にはSCの関数を呼び出す処理等)がブロックに取り込まれる順序は、ブロックチェーンの維持管理作業への参加者(以下「マイナー」と呼ぶ。)に依存する。また、ブロックチェーンでは、複数のマイナーの合意形成を経て新たなブロックが確定したタイミングで、その新たなブロックに取り込まれた複数のトランザクションが、当該ブロックへ取り込まれた順序で実行される。したがって、ユーザが意図した順序でトランザクションが実行されないケースがある。
パブリックなブロックチェーンといえど、ユーザ端末で直接SCを実行させるのではなく、ブロックチェーンを共有するP2Pネットワークに接続されるシステム(アプリケーションサーバ等)をユーザ端末とは別に設ける構成が考えられる。この場合、ユーザは、上記システムを経由してSCの関数等を実行させる。
イーサリアム等のパブリックなブロックチェーンでは、通常、SCのトランザクションは暗号化されない。例えば、SCのフィールドに設定するデータは、たとえそのフィールドがプライベート属性であっても、第三者により閲覧可能である。そこで、第三者に対して秘匿すべき重要な情報(以下「重要情報」とも呼ぶ。)は、SCに保持させるべきではない。重要情報は、第三者に対して非公開にすべき各種秘密情報を含み、例えば、ユーザの個人情報や資産情報、営業秘密等を含む。
イーサリアムのSolidityには「now」という予約後が存在する。「now」には、トランザクション実行時(すなわちブロックチェーンにおけるブロック確定時)の現在時刻が設定される。一部記述したように、ブロックチェーンにおけるブロック確定タイミングはマイナーに依存する。そのため、SCの関数が「now」の値に依存したロジックの場合、「now」が予期せぬ値となって問題が生じることがある。このような問題は、「now」に限らず、SCの関数が、現在時刻等の何らかの時刻値に基づく処理を実行する場合に発生しうる。
イーサリアムのSolidityでは、SCの関数内で何らかのエラー、例外、または問題が発生した場合、「return false」で処理を終了させることが考えられる。しかし、「return」コマンドでは、「return」前までの処理は実行される。その結果、処理の原子性が損なわれる可能性がある。その一方、「throw」を使用すると、「throw」前までの処理がロールバックされるため安全である。そのため、SCの関数内でエラー、例外、または問題が発生した場合は「throw」が使用されるべきである。
図5は、検査装置10の動作を示すフローチャートである。SC記憶部12に予め記憶されたSCの中から特定の検査対象SCを指定した検査開始指示が検査者により入力されると(S10のY)、SC取得部16は、検査対象SCのソースコードをSC記憶部12から読み込む(S12)。解析部18は、予め定められた7つの評価項目のそれぞれについて検査対象SCのソースコードを検査し、検査対象SCにおける脆弱性の有無を検査する(S14)。検査結果出力部20は、検査対象SCにおける脆弱性の有無を示す検査結果データを検査結果記憶部14へ保存する(S16)。検査開始指示が未入力であれば(S10のN)、S12以降の処理をスキップして本図のフローを終了する。
Claims (5)
- ブロックチェーンを共有する複数の機器により実行可能なプログラムであって、実行結果が前記ブロックチェーンに記録されるプログラムであるコントラクトのソースコードを取得する取得部と、
前記ブロックチェーンの仕様に基づき予め定められた評価項目にしたがって、前記取得部により取得されたコントラクトのソースコードの脆弱性を検出する検出部と、
を備え、
前記検出部は、前記コントラクトのソースコードに、前記コントラクトの関数を呼び出した呼び出し元の関数を呼び出す第1処理が記述され、前記第1処理の後に、前記コントラクトに保持された前記呼び出し元に関するデータを更新する第2処理が記述されている場合、前記脆弱性を検出することを特徴とする検査装置。 - ブロックチェーンを共有する複数の機器により実行可能なプログラムであって、実行結果が前記ブロックチェーンに記録されるプログラムであるコントラクトのソースコードを取得する取得部と、
前記ブロックチェーンの仕様に基づき予め定められた評価項目にしたがって、前記取得部により取得されたコントラクトのソースコードの脆弱性を検出する検出部と、
を備え、
前記検出部は、前記コントラクトのソースコードに複数の関数が記述され、前記複数の関数のうち第1の関数に、前記コントラクトに保持されたフィールドのデータを更新する処理が記述され、前記複数の関数のうち第2の関数に、前記フィールドのデータを参照または更新する処理が記述されている場合、前記脆弱性を検出することを特徴とする検査装置。 - ブロックチェーンを共有する複数の機器により実行可能なプログラムであって、実行結果が前記ブロックチェーンに記録されるプログラムであるコントラクトのソースコードを取得する取得部と、
前記ブロックチェーンの仕様に基づき予め定められた評価項目にしたがって、前記取得部により取得されたコントラクトのソースコードの脆弱性を検出する検出部と、
を備え、
前記検出部は、前記コントラクトのソースコードにパブリック属性の関数が記述され、かつ、前記パブリック属性の関数に、当該関数の呼び出し元のアカウントを確認する処理が記述されていない場合、前記脆弱性を検出することを特徴とする検査装置。 - ブロックチェーンを共有する複数の機器により実行可能なプログラムであって、実行結果が前記ブロックチェーンに記録されるプログラムであるコントラクトのソースコードを取得する取得部と、
前記ブロックチェーンの仕様に基づき予め定められた評価項目にしたがって、前記取得部により取得されたコントラクトのソースコードの脆弱性を検出する検出部と、
を備え、
前記検出部は、前記コントラクトのソースコードに、前記コントラクトとは別のプログラムの関数を呼び出す処理が記述されている場合、前記脆弱性を検出することを特徴とする検査装置。 - ブロックチェーンを共有する複数の機器により実行可能なプログラムであって、実行結果が前記ブロックチェーンに記録されるプログラムであるコントラクトのソースコードを取得する取得部と、
前記ブロックチェーンの仕様に基づき予め定められた評価項目にしたがって、前記取得部により取得されたコントラクトのソースコードの脆弱性を検出する検出部と、
を備え、
前記検出部は、前記コントラクトのソースコードに、前記コントラクトの関数を呼び出した呼び出し元の関数を呼び出す第1処理が記述され、前記第1処理の後に、前記コントラクトに保持された前記呼び出し元に関するデータを更新する第2処理が記述されている場合、前記脆弱性を検出し、
前記検出部は、前記コントラクトのソースコードに複数の関数が記述され、前記複数の関数のうち第1の関数に、前記コントラクトに保持されたフィールドのデータを更新する処理が記述され、前記複数の関数のうち第2の関数に、前記フィールドのデータを参照または更新する処理が記述されている場合、前記脆弱性を検出し、
前記検出部は、前記コントラクトのソースコードにパブリック属性の関数が記述され、かつ、前記パブリック属性の関数に、当該関数の呼び出し元のアカウントを確認する処理が記述されていない場合、前記脆弱性を検出し、
前記検出部は、前記コントラクトのソースコードに、前記コントラクトとは別のプログラムの関数を呼び出す処理が記述されている場合、前記脆弱性を検出することを特徴とする検査装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017115753A JP6952506B2 (ja) | 2017-06-13 | 2017-06-13 | 検査装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017115753A JP6952506B2 (ja) | 2017-06-13 | 2017-06-13 | 検査装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2019003309A JP2019003309A (ja) | 2019-01-10 |
JP6952506B2 true JP6952506B2 (ja) | 2021-10-20 |
Family
ID=65006015
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017115753A Active JP6952506B2 (ja) | 2017-06-13 | 2017-06-13 | 検査装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6952506B2 (ja) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11138597B2 (en) | 2018-11-27 | 2021-10-05 | Advanced New Technologies Co., Ltd. | System and method for improving security of smart contract on blockchain |
WO2019072283A2 (en) | 2018-11-27 | 2019-04-18 | Alibaba Group Holding Limited | SYSTEM AND METHOD FOR ENHANCING THE SECURITY OF AN INTELLIGENT CONTRACT ON A BLOCK CHAIN |
US11449491B2 (en) | 2019-01-14 | 2022-09-20 | PolySign, Inc. | Preventing a transmission of an incorrect copy of a record of data to a distributed ledger system |
CN109801166B (zh) * | 2019-01-28 | 2023-04-18 | 浙江师范大学 | 一种基于状态锁的智能合约的安全函数的设计方法及*** |
CN109960652A (zh) * | 2019-02-13 | 2019-07-02 | 平安科技(深圳)有限公司 | 测试设备的共享方法、装置、存储介质及计算机设备 |
CN110390213B (zh) * | 2019-07-31 | 2021-04-16 | 中国工商银行股份有限公司 | 区块链网络环境下智能合约的***署方法及*** |
US11176257B2 (en) * | 2019-08-13 | 2021-11-16 | International Business Machines Corporation | Reducing risk of smart contracts in a blockchain |
CN110688428B (zh) * | 2019-09-24 | 2021-01-26 | 北京海益同展信息科技有限公司 | 用于发布智能合约的方法和装置 |
KR102247233B1 (ko) * | 2019-10-28 | 2021-05-03 | 주식회사 린아레나 | 다중 레이어 기반 스마트 컨트랙트 감사 방법 및 그 장치 |
KR102610532B1 (ko) * | 2019-12-17 | 2023-12-06 | 주식회사 리드포인트시스템 | 블록 체인 네트워크 시스템의 동작 방법 |
JP7347674B2 (ja) * | 2020-07-02 | 2023-09-20 | 富士通株式会社 | 制御方法、情報処理装置及び制御プログラム |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001134431A (ja) * | 1999-11-09 | 2001-05-18 | Mitsubishi Electric Corp | 関数の再入可能性判定方法 |
US9992028B2 (en) * | 2015-11-26 | 2018-06-05 | International Business Machines Corporation | System, method, and computer program product for privacy-preserving transaction validation mechanisms for smart contracts that are included in a ledger |
JP2018156159A (ja) * | 2017-03-15 | 2018-10-04 | 株式会社東芝 | 解析装置、解析方法およびプログラム |
-
2017
- 2017-06-13 JP JP2017115753A patent/JP6952506B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
JP2019003309A (ja) | 2019-01-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6952506B2 (ja) | 検査装置 | |
Huang | Hunting the ethereum smart contract: Color-inspired inspection of potential attacks | |
RU2637477C1 (ru) | Система и способ обнаружения фишинговых веб-страниц | |
CN104537308B (zh) | 提供应用安全审计功能的***及方法 | |
US20120131670A1 (en) | Global Variable Security Analysis | |
Baumann et al. | Disguised chromium browser: Robust browser, flash and canvas fingerprinting protection | |
US20160162686A1 (en) | Method for verifying integrity of dynamic code using hash background of the invention | |
Alkhalifah et al. | A mechanism to detect and prevent Ethereum blockchain smart contract reentrancy attacks | |
CN103631904A (zh) | 反病毒分析期间选择同或异步文件访问方法的***和方法 | |
WO2016119548A1 (zh) | 防软件反编译的方法、防反编译软件启动的方法和装置 | |
CN114826639B (zh) | 基于函数调用链跟踪的应用攻击检测方法及装置 | |
Fröwis et al. | Not all code are create2 equal | |
CN104603791A (zh) | 签名验证装置及签名验证方法和程序 | |
Crincoli et al. | Vulnerable smart contract detection by means of model checking | |
CN110427190B (zh) | 应用程序的识别方法及其装置、电子设备和介质 | |
Mandloi et al. | A machine learning-based dynamic method for detecting vulnerabilities in smart contracts | |
Hong et al. | Circuit: a Javascript memory heap-based approach for precisely detecting Cryptojacking websites | |
Ye et al. | A software analysis based vulnerability detection system for smart contracts | |
Kirillov et al. | Evaluation of tools for analyzing smart contracts in distributed ledger technologies | |
N’Da et al. | Characterizing the cost of introducing secure programming patterns and practices in ethereum | |
Lee et al. | Consortium blockchain based forgery android APK discrimination DApp using hyperledger composer | |
KR20220020566A (ko) | 블록체인 네트워크의 위험 월렛 주소를 관리하는 방법 및 장치 | |
CN116361748B (zh) | 一种软件供应链安全检测方法和装置 | |
JP2007299093A (ja) | 文書管理システム | |
US12050687B1 (en) | Systems and methods for malware detection in portable executable files |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20200330 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20210129 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20210202 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210310 |
|
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: 20210831 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20210928 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6952506 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |