Image for post
Image for post

スマートコントラクトのセキュリティ Part 1

ーSolidityの6つの脆弱性とその対策ー

“スマート・コントラクトはハッカーのディズニーランドだ”

この記事では、よく知られたセキュリティ・ホールとその対策についてやっていこう。

1. オーバーフローとアンダーフロー

オーバーフローとは、数値が最大値を超えてインクリメントされてしまうことだ。Solidityは256ビットの数値まで扱えるので (2²⁵⁶-1まで)、1ずつインクリメントしていくと結果0となる。

0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ 0x000000000000000000000000000000000001
----------------------------------------
= 0x000000000000000000000000000000000000
Image for post
Image for post
最大値到達後、オドメーターやトリップメーターは0から再スタートする。オドメーター・ロールオーバーと呼ばれる。[出典]
0x000000000000000000000000000000000000
- 0x000000000000000000000000000000000001
----------------------------------------
= 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

2. 可視性とデリゲートコール

2017年7月にこの界隈にいた人々にとって、このバグはよく知られたものであろう。ユーザーが3000万ドルを失った、あのParityウォレットハック事件だ。

Solidityの可視性修飾子とその相違

Public 関数は誰でも呼び出すことができる(コントラクト内の関数から、派生コントラクトの関数から、または外部ユーザーから)

デリゲートコール

solidityドキュメントからわかりやすく言い換えると:

In this case:
web3.sha3("pwn()").slice(0, 10) --> 0xdd365b8b
If the function takes an argument, pwn(uint256 x):
web3.sha3("pwn(uint256)").slice(0,10) --> 0x35f4581b

3. リエントラント性 (TheDAOハッキング事件)

Solidityのcall 関数は、 valueとともに呼び出されると受け取った全てのガスを転送する。下のスニペットでは、センダーの残高を減らすより前にコールが行われている。このことが、The DAOハック事件の際にredditのコメントで非常によく説明されていたように脆弱性へと繋がるのだ。:



Loom Network JP

イーサリアムサイドチェーン上で稼働する大規模なアプリケーションプラットフォームを開発しています。…

Loom Network Japanese

Written by

Loom Networkは、ゲームやソーシャルアプリを中心としたEthereum DAppsのためのスケーリングソリューションを提供します。http://loomx.io/

Loom Network JP

イーサリアムサイドチェーン上で稼働する大規模なアプリケーションプラットフォームを開発しています。 https://loomx.io/

Loom Network Japanese

Written by

Loom Networkは、ゲームやソーシャルアプリを中心としたEthereum DAppsのためのスケーリングソリューションを提供します。http://loomx.io/

Loom Network JP

イーサリアムサイドチェーン上で稼働する大規模なアプリケーションプラットフォームを開発しています。 https://loomx.io/

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch

Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore

Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store