ブロックチェーン技術は世界中の企業の関心を集めています。不変性や透明性などの利点により、BMWやボッシュなど金融業界以外の老舗企業もスマートコントラクトの実験を行い、より効率的なサプライチェーンを構築し、よりスマートなエンジニアリング製品を開発しています。
スマート コントラクトは、本質的には特定のブロックチェーンにコード化されたソフトウェアであり、複数の当事者間の合意を正式化して実行することで、信頼できる第三者の仲介者を必要とせず、時間を節約し、複数当事者の合意に基づく検証を可能にします。遺言、チェス ゲーム、さらには証書の譲渡など、さまざまな活動に使用できます。
しかし、ブロックチェーンが約束するあらゆる破壊的可能性と大いに宣伝されている機能にもかかわらず、スマート コントラクトを狙った強盗の数は過去 2 年間で 12 倍以上増加しています。スマート コントラクトがそれほど賢いのであれば、なぜ強盗がこれほど急増しているのでしょうか。
理解を深めるために、ブロックチェーンとスマートコントラクトの関係を明確にしましょう。
分散化
Amazon の AWS プラットフォームのようなブロックチェーン ネットワークとその各スマート コントラクトをサーバーとして考えてみましょう。ブロックチェーンでは、ハッカーが悪用できる単一の集中サーバーがないため、サイバー犯罪者がトロイの木馬、物理的攻撃、ランサムウェアなどの従来のハッキング手法を使用することが困難になります。ブロックチェーンは、ネットワークの単一障害点を排除することでこれに対抗します。
ブロックチェーン ネットワークはハッキングされる可能性は低いですが、ブロックチェーンによって実現される多くの分散型アプリやスマート コントラクトはハッキングされる可能性があります。
分散型金融(DeFi)の成功と影響力が徐々に高まったおかげで、大量の価値がスマートコントラクトを通じて流通しており、ハッカーにとって魅力的なものとなっています。そして、トークン化された現実世界の資産の増加に伴って、より多くの資産がオンチェーンで移動するにつれて、この脅威はますます大きくなると思われます。スマートコントラクトから盗まれた資産は回復が非常に難しいため、ハッキングはこの急成長中のブロックチェーン分野にとって深刻な脅威となります。
スマートコントラクトへの脅威
すべてのコードと同様に、スマート コントラクトも人為的エラーの影響を受けます。これらのエラーは、タイプミス、仕様の不正確な表現、またはスマート コントラクトをハッキングしたり「騙す」ために使用できるより深刻なミスの形で発生する可能性があります。ブロックチェーンとは異なり、コントラクトがピア レビューまたは検証されているという保証はありません。
スマート コントラクト監査によって誤ったコーディングを回避できるかもしれませんが、他の脅威はより複雑です。たとえば、デフォルトの可視性の脆弱性は、関数の可視性が指定されておらず、特定の関数がパブリックのままになっている場合に発生する一般的なミスです。たとえば、ハッカーが mint 関数にアクセスして、数十億の関連トークンを作成する可能性があります。幸いなことに、すべての関数がデフォルトでプライベートに設定されていることを確認する監査を実行することで、この脆弱性を防ぐことができます。
コーディング エラーによって引き起こされるもう 1 つのより複雑で深刻な脅威は、再入攻撃です。これは、攻撃者がスマート コントラクトの外部関数呼び出しを悪用し、資金を保有する者とやり取りするために悪意のあるスマート コントラクトを展開するときに発生します。
2016 年、イーサリアムの初期に発生した DAO 事件は、このタイプの攻撃がいかに危険であるかを実証し、最終的にイーサリアム クラシックの作成につながりました。再入攻撃を防ぐのは簡単ではありませんが、CEI (チェック、エフェクト、インタラクション)、再入ガードなど、被害を軽減できるフレームワークとプロトコルがあります。
スマート コントラクト コードに精通している場合、コード自体を読めることは常に大きな利点となります。新しいアパートに引っ越す前に契約書を読むことで予期せぬ事態から身を守るのと同じように、スマート コントラクトのコードを読むことができれば、欠陥、悪意のある機能、または機能しない、あるいは意味をなさない機能を発見することができます。
ただし、特に技術に精通していないエンドユーザーの場合は、広く使用されている公開コードを持つスマート コントラクトのみを使用してください。これは、コードが隠されていて人々が確認できないコンパイル済みスマート コントラクトとは対照的に、推奨されるオプションです。
スマートコントラクトの脆弱性への対処
スマート コントラクト管理者のほとんどが、通常はリリース後の変更を行うために、自分自身に何らかの管理者権限を残していることを忘れないようにしましょう。これらの権限にアクセスするには、管理者は秘密鍵を使用する必要があります。これらの秘密鍵は別の脆弱性であり、適切に保管されていない場合 (オフラインのコールド ボールトなど)、何らかの方法でアクセスしたハッカーがスマート コントラクトに変更を加え、資金を好きな場所に流すことができます。
最近、欧州議会は、スマートコントラクトが侵害された場合に被害を軽減するためにキルスイッチメカニズムを採用することを義務付けました。規制当局の意図は、人々が自分の個人データをより保護できるようにすることでしたが、この行為はWeb3コミュニティで懸念を引き起こしています。
キルスイッチが正しく実装されていない場合、スマート コントラクト全体とそこに保存されているすべての値が破壊される可能性があります。より良い実装方法は、セキュリティ上の脅威が発生した場合にスマート コントラクトをフリーズし、問題が解決したら再度アクティブ化できる一時停止機能を有効にすることです。