EthereumアプリケーションがA +セキュリティ評価を取得する方法

120万を超えるethereumアプリケーションが、スマートコントラクトと呼ばれる自己実行コード行から発生するコストのかかるエラーを回避するために、あまり知られていないセキュリティツールを使用してきました。

10月にethereumテクノロジのスタートアップAmberdataが立ち上げたこの無料ツールは、一般ユーザーの誰でもがethereumブロックチェーン上のアクティブなアプリケーションのセキュリティを解釈するために利用できます。悪用されたバグとの賢い契約は、 数億の曲にさえも、多大な損失をもたらしました。

自動化されたサービスは、スマートコントラクトコードに見られる一般的な脆弱性をスキャンし、分散アプリケーション( dapp )のセキュリティのためにレターグレードの評価(A、B、Cなど)を生成します。

この機能は、ethereumエコシステムにおいて、ベストプラクティスとdapp開発者とエンドユーザーとの間の透明性の向上を促進する多くのツールの1つです。

さらに、それはかなり長い間、より広いWebスペースで使われてきた機能です。プライバシーを重視するブラウザDuckDuckGoは最近、ウェブサイト(dappsではない)をレターグレードで評価するために使用されるChromeブラウザ拡張機能を発表しました。

2017年1月のブログ記事で、「私たちのビジョンは信頼の水準をオンラインで高めることです」とDuckDuckGoは書いています。

同様に、AmberdataのCEO、Shawn Douglassがプレスリリースで強調したように、Amberdataのセキュリティグレーディングツールの背後にあるビジョンは、「スマートアクセスへのアクセスの向上と可視性の向上」を提供することです。

彼が追加した:

「これらのツールをコミュニティに提供することで、外部の依存関係を減らし、コミュニティがより早くより安全に開発できるようになることを願っています。」

評価

しかし、ethereum上のこれらのアプリケーションはAmberdataにどの程度正確に評価されているのでしょうか。

プログラムによって自動的にスキャンされた13種類の脆弱性を指し示すAmberdata CTO Joanes Espanolは、これらをそれぞれ「[自動車]ダッシュボードのエンジンライト」に例えました。

「車で何が起こっているのかをチェックする必要があるということです。 Espanol氏とCoinDesk氏は、次のように説明しています。

また、Amberdataのセキュリティスキャンで検出されたセキュリティエラーが多いほど、dappが受け取るアルファベットグレードは低くなります。これらの評価は、A +からFまでの範囲です。

しかし、それらはセキュリティエラーの数に厳密には依存しません。 Espanolによると、13の脆弱性のそれぞれは、深刻度がさまざまに異なり、それがdappの最終グレードに影響を与えます。 Espanolでマークされている2つの一般的な低深刻度の脆弱性には、「ユーザ指定アドレスへの電話の委任」と「外部契約へのメッセージの電話」があります。

後者が、1つのスマート契約に自己完結しているのではなく、バグのあるコードを所有している追加の契約を呼び出すと、潜在的なセキュリティリスクをもたらす可能性があります。

同様に、デリゲートコールは、スマートコントラクトコードを複数のサブコントラクトに分割するために通常使用されるもう1つの操作であるため、ソフトウェア全体に必要なアップグレードは、アプリケーション全体を終了せずに段階的に行うことができます。

「これが、これらのデリゲートコールの大部分です。しかし、悪いところは、今では契約の所有者として、私が悪いことをし始めることができるということです。そのため、元の[アプリケーション]の動作を変更する契約を置き換えることができます」とEspanol氏は説明します。

そのため、Espanol氏は両方の点で、即時のコードエラーを指摘するのではなく、セキュリティ警告を「警告」を発信すると説明しました。

確かに、現在メッセージ通話を利用しており、かつて1月にデリゲート通話を使用したスマートコントラクトアップグレードを展開していたそのようなdappの1つがTrueUSDです。ブロックチェーンのスタートアップであるTrustTokenによって作成された、ethereum上の米ドル建てのstablecoinは、現在Cレターグレードでランク付けされています。

TrueUSDが示す脆弱性を見ても、それはあまり良くないようですが、TrustTokenセキュリティエンジニアのWilliam Morrissは、以前のインタビューでCoinDeskに、すべての懸念は実際には「重大」ではないと語った。

「報告されている脆弱性は私たちが攻撃される可能性がある方法ではありません…私たちはそれらを知っています、そして人々が私たちに脆弱性を持って来るとき私たちは非常に真剣に扱います」とMorrissは言いました。

特にメッセージの呼び出しに関して詳しく説明すると、Morrissは、TrueUSDの場合、セキュリティ基準が低い可能性のある第三者とは対照的に、すべての外部契約は会社自身が所有および運営していると付け加えました。

A +の入手方法

重大度が「高」のエラーは、コードエラーや悪用の可能性が高いことを示すため、アプリケーションのセキュリティ評価をより難しくします。

最も一般的なものの1つである「整数オーバーフロー」は、スマートコントラクト内で実行された操作がコード制限を超える値を生成し、最悪の場合、資金の損失につながる可能性がある、厄介で予測不能な動作につながることを示します。

反対に「重大な」重大度のもう1つの脆弱性である「整数アンダーフロー」があります。これにより、逆のことが起こり、定義された範囲を下回る値も同様に誤った出力を引き起こします。

Amberdataのグレーディングシステムによれば、Solidityには、suppide()やtx.originなど、dapp開発者が避けるべきいくつかの機能もあります。後者は、Espanolによって、廃止予定のコードとして削除される可能性があるためです。前者はユーザー資金を凍結するために外部の当事者に乗っ取られる危険性がありますが、後戻りはできません。

これら4つの脆弱性のいずれも持っていないため、 悪名高い人気のethereum dapp CryptoKittiesは現在AmberdataのA +セキュリティ評価を受けています。 CryptoKittiesソフトウェアエンジニアのFabiano Sorianiは、これを「できるだけ多くのテストを実装すること」と考えています。

Soriani氏はCoppDeskに次のように述べています。

「誰かが監査をするとき、彼らはあなたのことを指摘します。より伝統的な経歴を持つ開発者はブロックチェーンに精通していないので、これは非常に優れた(受動的なリソースに対する)補完的なリソースです。」

「それは新たな問題です」

確かに、それがdappsを構築することになると、気密で貫入不可能なコードの重要性は軽視することはできません。その根本的な理由は2つあります。

まず、伝統的なアプリケーションとは異なり、dappは一般的にオープンソースのコンピュータプログラムであり、Morrissが説明しているように、「パブリック」なコードを実行するときには「高レベルの注意」が必要です。

「従来のアプリケーションにバグがあった場合、数年間それを回避できる可能性があります。ただし、スマートコントラクトにバグがあった場合、人々はそれをすぐに見つけて破壊に利用することになります。モリスは言った。

第二に、ethereum上のdappsはスマートな契約で排他的に実行されます。プログラミング言語Solidityで特別にコード化され、 Ethereum Virtual Machine(EVM)と呼ばれるブロックチェーンの神経センターで実行されます、dappsの重要な強みはそれらが変更できないということです。

これのマイナス面は明らかです。プログラマは、いったんブロックチェーンに配置されると、ソフトウェアのエラーやバグを簡単に修正することはできません。

これらの理由から、サードパーティのセキュリティ監査をスキップしたりスキャンしたりすることを「厄介なエラー」と呼んでいるため、開発者は自分たちの「ハブリス」の犠牲にならないようにしてください。コード。"

「ethereumを使えば、Solidityでコーディングするときに人々が気付かない新しい一連の問題です」とEspanol氏はCoinDesk氏に強調しました。

Shutterstockによるプログラミングイメージ