読み取り時間: 10 分
ブロックチェーンは、分散型で改ざん防止の元帳として引用されています。 ただし、この改ざん防止元帳は、ハッキングやエクスプロイトに対して脆弱です。 ブロックチェーンの最大の利点のXNUMXつである分散化は、欠点のXNUMXつです。
まあ、それは問題ありませんが、SDLCはどうですか?
これから説明するソフトウェアライフサイクルアプローチは、スマートコントラクトのセキュリティの脆弱性を複数のフェーズに分類することに基づいています。
最初のセクションでは、スマートコントラクトのセキュリティ問題について説明しました。 次のセクションでは、そのソリューションをXNUMXつのフェーズに分けて説明します。 セキュリティの設計、セキュリティの実装、展開前のテスト、そして最後のXNUMXつである監視と分析。
スマートコントラクトにおけるセキュリティ問題の分析
スマートコントラクトは、さまざまなハッキングやエクスプロイトに対して脆弱です。 実際の法的合意と同義であるこれらの契約は、ネイティブブロックチェーンの条件に基づいて独立して実行されます。
しかし、それらのネイティブブロックチェーンでさえ、スマートコントラクトの潜在的なセキュリティの脅威の原因になる可能性があると思いましたか? 以下に、同じブロックチェーンの特徴のいくつかを示します。
地方分権化:これは、ブロックチェーンベースのプロトコルの利点のXNUMXつと見なされています。 しかし、攻撃者はこのポジティブな機能をネガティブな機能に変える方法を考案しました。
悪意のある攻撃者は、スマートコントラクトを開発および展開するために、偽のIDを作成する可能性があります。 公開ブロックチェーンでは公開アドレス(または)公開鍵しか使用できないため、脆弱な契約を特定することが困難になる場合があります。
オープンソースコード:これはあなたを驚かせるかもしれませんが、はい、一般的に、ほとんどのスマートコントラクトコードはややオープンソースです。
たとえば、イーサリアム仮想マシン(EVM)の場合、そのバイトコードは常に公開されています。 また、一部のSolidity逆コンパイラーは、スマートコントラクトアドレスとSolidityコードを取得するのに役立ちます。 ソースコードが公開されると、攻撃者にとってこの機能が有利になります。
進化していないブロックチェーンプラットフォーム:開発者にとって、開発プラットフォームに精通することが主要な要件です。 未開発または新しいブロックチェーンプラットフォームが多数あるため、開発者はブロックチェーンの操作に関する深い知識を身に付けることができません。
この不整合は、同期がないためにスマートコントラクトに影響します。 ブロックチェーンプラットフォームの欠陥は、その継続的な進化のために見過ごされています。
不明なトランザクション:最初のポイントでは、匿名IDについて説明しました。 同様に、ブロックチェーン上のトランザクションは非公開です。 取引を追跡することは不可能であり、多くの違法行為につながります。 金融取引が関係しているため、セキュリティの問題は莫大な経済的損失をもたらす可能性があります。
スマートコントラクトセキュリティソリューション
今、スマートコントラクトのセキュリティを進めて、スマートコントラクトを保護するために必要なすべてのステップをその進化と比較することができます。 従来のソフトウェア開発と同様に、私たちは開発ライフサイクルに従う傾向があります。 同様に、契約開発ライフサイクルを分類することができます。
スマートコントラクト開発ライフサイクルは、セキュリティ設計、セキュリティ実装、展開前のテスト、監視と分析のXNUMXつのフェーズに分けることができます。
1.セキュリティ設計
この最初のフェーズでは、XNUMXつのテーマがカプセル化されます。 設計原理、設計パターン、およびセキュリティモデリング(上の図を参照)。 これらのテーマの主な焦点は、契約の設計とセキュリティの脅威を回避する方法にあります。
設計原理
設計原則は、ブロックチェーン上で安全なスマートコントラクトを設計するための基本的なアイデアです。 契約にはXNUMXつの重要な設計原則があります。失敗に備える、慎重に展開する、契約をシンプルに保つ、最新の状態に保つ、ブロックチェーンのプロパティについて知っておく必要がある。
今、あなたは考えるかもしれません、彼らはどのように安全なスマートコントラクトを作成するのに役立ちますか?
上記の原則のいずれかを取り上げましょう。たとえば、「失敗に備える」とは、パッチ適用スキームがない場合、契約がバグに対応できる必要があることを意味します。 また、攻撃が発生した場合は、それ以上の損失を防ぐために契約を一時停止できる必要があります。
デザインパターン
ソフトウェアデザインでは、デザインパターンは、問題を解決するために再利用できるソリューションです。
イーサリアムを例にとると、XNUMXつのセキュリティパターンがあります。 チェック効果-相互作用、緊急停止、ミューテックス、スピードバンプ、レート制限、およびバランス制限。
これらのセキュリティパターンを使用して、再入可能性の脆弱性をミューテックスパターンで処理できるように、ブロックチェーンのセキュリティ問題に対処できます。
同時に、緊急停止パターンは、脆弱性の影響を受けた場合に契約の実行を終了するのに役立ちます。
セキュリティモデリング
Solidityは契約の作成に使用されるため、開発されたコードと契約に必要なコードには違いがある場合があります。 この言語はチューリング完全性を満たしていますが、エラーが発生しがちです。
上の図は、このサブフェーズがXNUMXつのフェーズをカバーしていることを示しています。 セキュリティの設計と実装。
セキュリティモデリングは、ビジネスロジックに直接関係しています。 仕様はビジネスから派生しているため、ロジックはエラーのないセマンティクスによって分類できます。 これは、脆弱性を軽減するために実行されるフォーマル検証プロセスの後半で役立ちます。
2.セキュリティの実装
このセクションでは、XNUMXつのテーマのうちXNUMXつについて説明します。 安全
開発、およびセキュリティテンプレート。これは、前のフェーズでセキュリティモデリングについてすでに説明したとおりです。
セキュリティ開発
このセクションでは、契約の実装プロセス中に脆弱性を回避する方法について説明します。
イーサリアムプラットフォームには、セキュリティEIP(イーサリアム改善提案)があります–セキュリティ問題と戦うための推奨事項 Ethereum プラットホーム。 したがって、これらのEIPは、スマートコントラクトを安全に実装するために注目に値します。
セキュリティテンプレート
テンプレートは、新しいドキュメントの原点として機能します。 運用パラメーターを備えたスマートコントラクトテンプレートは、法的合意を実行可能コードに接続します。
スマートコントラクトセキュリティのコンテキストでは、セキュリティパターンやセキュリティライブラリなどのアップグレードされたセキュリティパラメータを使用して、標準のコントラクトテンプレートを抽出できます。 これにより、手動コーディングでエラーが発生する可能性が低くなります。
3.展開前のテスト
繰り返しになりますが、このフェーズの要件は、スマートコントラクトの利点のXNUMXつである「不変性」から生じます。
スマートコントラクトが作成されると、それらを変更する方法はありません。 したがって、展開前にスマートコントラクトのセキュリティを確保するために十分なテストを実行することが必須です。
このフェーズでは、スマートコントラクトを展開する前に従う必要のあるXNUMXつのセキュリティパラメーターについて説明します。 厳密なフォーマル検証、コード分析ツール、およびセキュリティ監査。
厳密な形式的検証
フォーマル検証は、数学的推論と数学的証明を活用してシステムの目的のプロパティを検証する、明確に定義されたプロセスです。
契約プログラムは短く期間限定であるため、スマートコントラクトのフォーマル検証を実行できます。 スマートコントラクトを厳密に形式化して検証する方法は複数あります。 コントラクトコードに基づくものもあれば、Ethereum仮想マシン(EVM)のセマンティクスに基づくものもあります。
コード分析ツール
コードの分析は、プログラムを実行せずに実行されます。 この目的のために、静的アプリケーションセキュリティテスト(SAST)ツールと呼ばれるいくつかのツールを使用します。 これらのツールは、ソースコードのセキュリティ上の欠陥を発見するのに役立ちます。
これらのツールによって実行される分析には、次の手順のXNUMXつまたはすべてが含まれる場合があります。
(ⅰ) 詳細な分析のために、抽象構文木(AST)などの中間表現(IR)を作成します。
(ⅱ) 静的制御または日付フロー分析およびフォーマル検証手法から得られた十分な情報でIRを補完します。 これらの手法には、シンボリック実行、抽象解釈、シンボリックモデル検査が含まれます。
しかし、スマートコントラクトでコード分析を実行するために使用できるツールは何ですか?
セキュリティ分析を実行するために使用できるツールはたくさんありますが、Oyenteが最も人気のあるツールです。
オイエンテ EVMスマートコントラクトのセキュリティ分析を実行するために使用できます。 「シンボリック実行」を使用して、XNUMXつの一般的なバグを発見します。 トランザクションの順序の依存関係、タイムスタンプの依存関係、誤って処理された例外、および再入可能性。
Oyenteのアーキテクチャは、バイトコードを受け取り、入力としてイーサリアムのグローバル状態を提示することを示しています。
Oyenteの裏側のXNUMXつは、セキュリティの脆弱性のみを検出することです。 Oyenteが使用するシンボリック実行手法は、考えられるすべてのパスを調査するわけではありません。 したがって、セキュリティや手動監査などの他のツールが必要になります。
セキュリティ監査
このセクションは、最後のセクションを残したところから始めます。 手動監査。
しかし、最初に、セキュリティ監査の必要性を理解しましょう。 RoninNetworkハックであろうとPolyNetworkハックであろうと、未監査のコードはハッキングやエクスプロイトに対して最も脆弱です。
それらは莫大な経済的損失につながります。 実際のところ、Web3プロジェクトを監査するだけでなく、セキュリティ監査を実行する監査人の専門的な能力に依存するため、専門家による監査を受けることも重要です。
繰り返しますが、それらの専門家はどこにいますか? 信頼できる監査人を探すためにどこかに行く必要はありません。 クリック https://t.me/quillhash それらのXNUMXつと連絡を取るために!
理想的なスマートコントラクト監査は、手動と自動のコード分析の組み合わせです。 前のポイントで説明したように、Oyenteなどのツールから自動コード分析を行ったとしても、契約に未確認の脆弱性が存在する可能性があります。
したがって、これを克服するために、セキュリティ監査人はコードのすべての行を手動で分析し、潜在的な脆弱性に対してテストすることができます。
4.監視と分析
最初に説明したBlockchainの進化し続ける原則を覚えていますか?
このフェーズは同じテーマに基づいています。 コントラクトが展開されて実行されると、前の段階では気付かなかった脆弱性が、新しいリリースや頻繁な更新によって発生し、後でコントラクトの効率が低下する可能性があります。
実行できます。 これらの障壁を克服するためのバグバウンティ、セキュリティモニタリング、および事後分析。
バグバウンティ
契約に関する展開後のセキュリティ問題を検討しているため、バグバウンティが役立つ場合があります。 前述のフォーマル検証手法は、静的分析手法です。 一方、バグバウンティは動的分析手法です。
バグバウンティの背後にある概念は単純です。 ハッカーはバグを発見し、その見返りとして、金銭的な見返りが支払われます。 お互いに有利な状況のように見えますよね? しかし、そうではありません!
ここでのキャッチは; バグの価値はグレーマーケットの報奨金よりも高い可能性があり、ハッカーがバグを悪用または販売して高額になる可能性があります。
バグが確認されない限り、プロジェクトの所有者が報奨金の支払いを拒否することがあります。 ハッカーは、バグが明らかになった後の支払いの不確実性についても心配しています。
これを克服するために、「Hydra」として知られるバグバウンティフレームワークが提案されました。
Hydraは、ブロックチェーン上のバグバウンティシステムとして、N-of-N-versionプログラミング(NNVP)というエクスプロイトギャップテクノロジーを利用しています。
セキュリティ監視
静的コード分析を使用してセキュリティの脆弱性を発見できますが、この方法はスマートコントラクトを展開する前に使用されます。
ただし、バグや潜在的な脆弱性をリアルタイムで見つけるには、ブロックチェーン上のトランザクションデータを監視および分析する必要があります。
スマートコントラクトの分析によって発見されたこれらの脆弱性は、トレース脆弱性と呼ばれます。 これらのトレース脆弱性の中心となるのは XNUMX 種類の契約です。
(ⅰ) 貪欲な契約(生き続けてEtherを無期限にロックする契約)。
(ⅱ) 放蕩契約(不注意に任意のユーザーに資金を漏らす契約)と、
(iii) 自殺契約(任意のユーザーが殺すことができる契約)。
ECFオブジェクトを監視することで脆弱性を特定するために、Effectively Callback Free(ECF)オブジェクトの概念でさえ提案されました。
これに関連して、オンラインアルゴリズムも提示されました。 未知の脆弱性を発見するのに役立ちました。 同じ提案で、メインネットにデプロイする前に、テストネットでスマートコントラクトを実行することが提案されました。
モニタリングUIは、React.jsを利用したブロックチェーンモニタリングプラットフォームです。 このプラットフォームは、トランザクションの実行、資産のチェックの維持、およびブロックチェーンの状態についての問い合わせに使用できます。
スマートコントラクトを安全に監視するためにこのプラットフォームに依存することはできませんが、スマートコントラクトに関連するトランザクションデータのほとんどを見つけることができるため、資産の転送を追跡することで、エクスプロイトをリアルタイムで検出できます。
事後分析
Post Hoc Analysisは、ブロックチェーントランザクションデータを使用して、素人の言葉でブロックチェーン上の潜在的な脅威を分析、発見、または追跡します。
グラフ分析について説明すると、すべてのトランザクションデータ(スマートコントラクトからの内部トランザクションを含む)を収集するためのアプローチとして設計されました。
このデータの助けを借りて、彼らはXNUMXつのグラフを作成しました。
(ⅰ) マネーフローグラフ(MFG)
(ⅱ) 契約作成グラフ(CCG)および、
(iii) 契約呼び出しグラフ(CIG)
上記のグラフの分析に基づいて、相互作用する複数の契約間のセキュリティ問題の解決策など、多くの新しい発見が提案されました。
ポンジースキームは、多数の資金を獲得してネイティブブロックチェーンに影響を与えることができる古典的な詐欺スキームのXNUMXつです。 この詐欺に対抗するために、イーサリアムのポンジースキームを検出するための分類メカニズムが提案されました。
このメカニズムは、データマイニングと機械学習を利用してポンジー契約を検出します。 このプロセスは、スマートコントラクトのソースコードが利用できない場合でも機能します。
キーテイクアウェイ
それだけです、ええ、今のところそれだけです!
これまで一緒にいらっしゃった方はよろしくお願いします。 結論として、これ以上拡張しないと、スマートコントラクトのエコシステムは分散化されており、バグを修正するのは困難です。
私たちは、ソフトウェアライフサイクルの観点からスマートコントラクトのセキュリティを破壊しようとしました。
最初に、ブロックチェーンの主な機能について説明しました スマートコントラクトのセキュリティ問題。 スマートコントラクトのセキュリティソリューションを3つのフェーズに分類しました。 成長するWebXNUMXエコシステムの課題に先んじるために、より多くの投稿を提供したいと考えています。
スマートコントラクトセキュリティのためのこのアジャイルSDLCアプローチについてどう思いますか? 以下のコメントであなたの考えを共有してください!
ポスト スマートコントラクトセキュリティ:アジャイルSDLCアプローチ 最初に登場した ブログ.quillhash.
- "
- 私たちについて
- 抽象
- 取得
- 活動
- 住所
- 利点
- 利点
- 使い勝手のいい
- 契約
- 協定
- アルゴリズム
- すべて
- 既に
- 分析
- どこにでも
- 申し込み
- アプローチ
- 建築
- 資産
- 監査
- 自動化
- 利用できます
- 障壁
- ブロック
- ブロックチェーン
- ブロックチェーンベース
- ブロックチェーン
- バグ
- バグ
- ビジネス
- キャリー
- レスリング
- 課題
- 点検
- コード
- コーディング
- 組み合わせ
- 注釈
- コマンドと
- 補体
- コンセプト
- お問合せ
- 縮小することはできません。
- 契約
- コントロール
- 作ります
- 作成した
- 創造
- データ
- データマイニング
- 地方分権化
- 分権化された
- 展開します
- 展開
- 展開する
- 展開
- 設計
- 設計
- 設計
- 検出
- 開発する
- 発展した
- Developer
- 開発者
- 開発
- 直接に
- 発見
- 発見
- 話し合います
- ディスプレイ
- ドキュメント
- そうではありません
- ダウン
- ダイナミック
- エコシステム
- 効率的な
- 本質的な
- エーテル
- イーサリアム
- 進化
- 例
- 実行
- 専門家
- 悪用する
- 探る
- 不良解析
- 偽
- 特徴
- 特徴
- フィギュア
- ファイナンシャル
- 終わり
- 名
- 欠陥
- フロー
- フォーカス
- フォロー中
- 発見
- フレームワーク
- 詐欺
- 無料版
- 資金
- さらに
- ギャップ
- 受け
- グローバル
- 行く
- グレー
- 成長
- ハック
- ハッカー
- ハック
- 助けます
- 役立つ
- ことができます
- こちら
- ハイ
- より高い
- 認定条件
- HTTPS
- 巨大な
- 識別する
- アイデンティティ
- 違法
- 実装
- 不可能
- include
- 含まれました
- 情報
- 関係する
- 問題
- 問題
- IT
- キー
- キー
- 知識
- 既知の
- 言語
- 大
- つながる
- 主要な
- 漏れ
- 学習
- 元帳
- リーガルポリシー
- レバレッジ
- LINE
- 探して
- 機械
- 機械学習
- 作る
- マニュアル
- 手動で
- マーケット
- 数学的
- 問題
- 事態
- 言及した
- 鉱業
- お金
- モニター
- モニタリング
- 他には?
- 最も
- 一番人気
- の試合に
- 必要
- ネットワーク
- 概念
- 数
- 得
- オンライン
- 業務執行統括
- その他
- 所有者
- 支払われた
- パッチ
- 補修
- パターン
- 支払い
- 視点
- 相
- プラットフォーム
- プラットフォーム
- ポイント
- ポンチ
- Ponzi Scheme
- 人気
- 正の
- 可能性
- 可能
- 投稿
- 潜在的な
- 現在
- ブランド
- 主要な
- 問題
- プロセス
- プロ
- 専門家
- 演奏曲目
- プログラミング
- プログラム
- プロジェクト
- 提案
- 提案された
- プロトコル
- 公共
- 公開鍵
- 目的
- 反応する
- への
- 減らします
- リリース
- 表現
- の提出が必要です
- 責任
- 報酬
- 厳しい
- ロニン
- ラン
- スキーム
- 安全に
- しっかりと
- セキュリティ
- セキュリティ上の脅威
- 売る
- 意味論
- シェアする
- ショート
- 同様に
- 簡単な拡張で
- SIX
- スマート
- スマート契約
- スマート契約
- So
- ソフトウェア
- ソフトウェア開発
- 固い
- ソリューション
- 一部
- ソースコード
- スピード
- 標準
- 都道府県
- 滞在
- 驚き
- 同義語
- テクニック
- テクノロジー
- test
- テスト
- テスト
- ソース
- テーマ
- したがって、
- 脅威
- 介して
- 時間
- 豊富なツール群
- touch
- 追跡
- 伝統的な
- トランザクション
- 取引
- 転送
- チューリング
- ui
- わかる
- 更新版
- us
- つかいます
- users
- 活用
- 値
- さまざまな
- Verification
- 確認する
- バーチャル
- バーチャルマシン
- 脆弱性
- 脆弱性
- 脆弱な
- Web3
- 明確な
- この試験は
- 無し
- 作品
- でしょう