ブロックチェーンアプリケーションはソフトウェアセキュリティのベストプラクティスをどのように適応・採用することができるのか?
▲Synopsys シニアセキュリティコンサルタント
スターク・リーデセル
ブロックチェーンに由来するソフトウェアがいまだ黎明期にあるとはいえ、テクノロジーはさらに多くのユースケースに対応する方向で競い合っています。
しかしコミュニティはまだソフトウェアセキュリティの原則を真剣に受け止めているようにはみえません。その証拠に、先ごろ行ったイーサリアムのスマートコントラクトのスキャンでは34,200もの脆弱なコントラクトが見つかりました。
別の見かたをすると、スマートコントラクトは、口座をあちこちに移動し、あるいはブロックチェーン上に保管してあるキー値のペアを変更するためのビジネスロジックを含むソフトウェアの一つであるといえます。
イーサリアム・バーチャルマシンおよびスマートコントラクトのプログラミング言語(Solidityなど)のアーキテクチャ設計で選択を間違えば、セキュリティを意識しているデベロッパーでさえ単純な間違いから深刻な事態を招きかねません。
ブロックチェーンソフトウェアのスタートアップ企業に巨額が投じられている現在、コミュニティはソフトウェアを構築するプラットフォームを改善するためにさらなる努力が求められます。
新たな脅威についての考察
安全なソフトウェア開発のための従来のツールは、今のところまだブロックチェーン中心のソフトウェアに適応していません。高度に分散された管理者不在のシステムによって、まったく新しい脅威があらわれ、ソフトウェアの欠陥を論証するための新たな方法が求められています。
新たな研究論文やそれに付随するツールは毎週発表されますが、コミュニティはデベロッパーが頼れるベストプラクティスに関して合意に至っていません。
いったん脆弱性が見つかってしまえば、ブロックチェーンテクノロジーの本質は変わらないため、既存のコントラクトにパッチングするのを難しくすることもできるし、あるいは効果的に不能にしてしまうことも可能です。
このように柔軟性に欠けることを考慮すると、セキュリティにもっと前向きなアプローチを採用しなくてはなりませんし、バグがブロックチェーンに入りこむ方法を見つける前にそれを排除するツールやベストプラクティスを開発しなければなりません。
次のようなソフトウェアセキュリティ行動をあらゆるスマートコントラクトの開発サイクルに取り入れるのがふさわしいといえます。
コードのフレームワークを確保
デベロッパーが共通のパターンから安全なコードを生みだすには、十分に検証され実績のあるフレームワークが必要です。これには安全な演算操作やデータ確認、権限の付与、あるいは金融取引処理が含まれます。
静的コード分析およびコードのlint処理
最新のツールは、Solidityのコードに含まれる、いわゆる「コードのにおい」を嗅ぎ分け、退治しやすいバグを排除することができます。将来的には、これらのツールがフレームワークを意識するようになり、セキュリティに関連する一連のルールがもっと含まれるようになるに違いありません。
動的コード分析ツール
シンガポール国立大学の研究者らが脆弱なスマートコントラクトを発見するために使ったMaianというツールは、具体的な実行をともなったハイブリッドな静的分析の一例で、記号的実行を欠いた従来の静的分析ツールでは見逃されてしまうような複雑な欠陥を発見するものです。
多くの新しいスマートコントラクト分析ツールはソースコードを必要とせず、パブリックブロックチェーン全体をスキャンして潜在的な脆弱コントラクトを発見するのに使えます。
脅威のモデリング
ブロックチェーンテクノロジーで展開される重要なアプリケーションのためには、システムのすべてのコンポーネントや潜在的な脅威アクター、プラットフォームが提供するコントロールをシステマチックに識別する脅威モデリングプロセスが必要です。
それによって、セキュリティチームはシステムのセキュリティ全体について、また識別した脅威の埋め合わせをするために追加的なセキュリティ対策をどこに加えるかといった結論を引きだすことができます。
安全なガバナンスとポリシー作成
従来、ブロックチェーンコントラクトは変更することができず、ユーザーはコントラクトコードが正確であることを信頼してきました。
現在、ハッキングやバグに対して安全なコントラクトなど存在しません。だからこそ、コントラクトベンダーは消費者と資産の保護に関するポリシーを設定する必要があるのです。
スマートコントラクトのデベロッパーもまた、現行のコントラクトにパッチをあてインシデント対応を扱う際のメソッドのためにポリシーを考慮しなければなりません。