背景少し前に、BitSharesの創設者であるダニエル・ラリマー氏は、Liskシステムの一連の問題について疑問を呈した。ほとんどの問題は Lisk の創設者の 1 人である Max によって肯定的に回答されていますが (詳細はこちらを参照)、Max が回答していない、またはまだ解決策を提案していない問題が 1 つ残っています。 それがLiskサイドチェーンが動作する環境だとラリマー氏は語った。
そうでなければ、Lisk のシステムは 2 つの大きな課題に直面します。 まず第一に、Lisk の現在のサンドボックス メカニズムは、サイドチェーン コードの権限を制限するのに十分ではありません。つまり、信頼できないコードを実行することができず、サーバーから重要な情報が盗まれたり、サーバーに直接損害を与えたりする可能性があります。 次に、サイドチェーン開発者に関して言えば、Lisk のサイドチェーン コードは完全に機能する JavaScript 環境で実行されますが、この環境には Math.random など、不確実性を引き起こす可能性のある関数がいくつか含まれています。 Lisk の公式開発ドキュメントでは、開発者に精神的な負担をかけるこれらの機能を避けることが求められていると特に指摘されています。カスタマイズされた JavaScript 環境であれば、不確実性を引き起こす関数は直接排除されるため、開発者はそれらの罠を回避するために余分な労力を費やす必要がありません。 Liskのサンドボックスのセキュリティ問題まず、サンドボックスを使用する必要がある理由について説明します。サンドボックスは、クラウド コンピューティング プラットフォームで広く使用されているセキュリティ対策です。これは、アプリケーション コードの権限を制限し、アプリケーション コードの恣意的なアクセスやシステムの損傷を防ぐことを目的としたアクセス制御メカニズムです。クラウド コンピューティング プラットフォームでは、アプリケーション コードはさまざまなサードパーティ開発者によって実装されますが、そのコードは信頼できません。サンドボックスは、これらのアプリケーション コードが限られたことだけを実行できるように、分離レイヤーを提供するために必要です。 Lisk は、ブロックチェーン分野のクラウド コンピューティング プラットフォームに非常に似ています。いくつかのサービスを提供しており、サードパーティの開発者がこれらのサービスに基づいて独自のアプリケーション (dapps) を構築できるようにしています。 いくつか分析してみたところ、このサンドボックスはその名前に値しないものであることがわかりました。プロセス間通信を実現するためにパイプを使用するだけであり、その方法は回りくどいものです。 Node.js のプロセス間通信は JavaScript コードを通じて直接実装できますが、なぜそれを実装するために C++ を使用するのでしょうか? この疑問といくつかの期待を抱きながら、私は自分で実験をしてみました。 まずlisk-cliを使ってhello worldサイドチェーンを作成します
次に、サイドチェーンプログラムの入り口にコードを追加しました 次にそれを実行すると、このサーバーマスターノードの受託者のパスワードがすべて取得されます
案の定、このサンドボックスは隔離の役割を果たさず、管理者権限を持っていたため、ハッカーに扉を開けているのと同じでした。 Lisk システムには第 2 レベルのパスワードがあると言う人もいます。たとえ第 1 レベルのパスワードを入手したとしても、お金を盗むことはできません。 Linux 独自の権限メカニズムにより、サイドチェーン コードに低レベルのユーザーを割り当てて、他のユーザーのファイルにアクセスできないようにすることができるという人もいます。 これらは一時的な解決策に過ぎず、根本的な解決策ではありません。根本的な解決策は、サンドボックスをその名前にふさわしいものにし、Lisk が構想したように真の環境分離を実現して、サイドチェーンのコードが外部から完全に不明になるようにすることです。 解決では、真のサンドボックスを実現するにはどうすればよいでしょうか?解決策は多数あり、Node.js をスキップして v8 エンジンを直接使用したり、Windows システムの SetWindowsHookEx などのプロセス レベルの権限制御を使用したりすることができます。もちろん、Lisk は現在、Windows ウォレットのフルバージョンをサポートする予定はないため、seccomp テクノロジは Linux システムで使用できます。 最初のステップはネイティブJavaScript仮想マシンを作成することです
これらのコード行により、サイドチェーン コードの分離が完了します。 sideChainCode では純粋な計算ロジックのみが実行でき、v8 エンジンに組み込まれている少量の JavaScript 標準ライブラリのみが使用できます。 setTimeout や console.log すらありません。 追加の作業が必要です。 たとえば、ランタイム環境にsetTimeoutとclearTimeoutを追加します。 サイドチェーンログをメインシステムに転送するログ印刷機能を追加しました
さらに、不確実性を引き起こす機能を無効にすることもできます
これらすべてが完了すると、サイドチェーン コードへのアクセス権は狭い範囲に制限されます。 require、fs、http など、Node.js に組み込まれている標準ライブラリは使用できません。 これにより、セキュリティの目的は達成されますが、機能上の問題という別の問題が発生します。それらの追加ライブラリは使用できず、js 標準ライブラリのみでは不便すぎます。多くの複雑な機能は、特に require なしでは実装できず、モジュール化すら不可能です。 したがって、次のステップが必要です。 ステップ2 webpackWebpack はもともと、フロントエンド プロジェクトのモジュール管理に使用されていた、フロントエンド プロジェクトでよく使用されるパッケージング ソリューションでした。多くの人は、webpack がバックエンドにも適用可能であり、node_modules 内のライブラリや nodejs の組み込みライブラリの一部を一緒にパッケージ化できるという事実を見落としています。 つまり、UI に関連するものを除く、フロントエンドで使用できるすべての js ライブラリ (async、bytebuffer、crypto、js-nacl、bignum など) は、サイドチェーン サンドボックスでも使用できるため、サイドチェーンには十分です。 vm + webpack の組み合わせは完璧です。 これは、常に変化するフロントエンド技術が JavaScript 言語にもたらすメリットであり、Ethereum の Solidity などの新しい言語では実現できないものでもあります。 しかし、まだ仕上げが必要です ステップ3 障害物を取り除く現在、サイドチェーン コードのいくつかの場所では、多くの依存関係を伴う ed2curve などの比較的複雑なライブラリが使用されています。それは不要だと考えています。この部分の機能はメインチェーンで提供され、プロセス間通信を通じて API の形式でサイドチェーンに提供されます。 これにより、サイドチェーン コードの負担が軽減され、サイドチェーン開発者の作業が容易になります。これらのコードがフレームワーク全体に与える影響は非常に小さく、無視できますが、それらが依存するライブラリは、サンドボックス環境では許可されていない操作も含め、コード量の半分以上を占めています。 分析の結果、 また、 最後に、完全なサイドチェーン プロジェクトとメインチェーン フレームワークのキー コードをここにパッケージ化しました。 http://o7dyh3w0x.bkt.clouddn.com/asch-sandbox-solution.tar.gz これが Lisk 開発チームの参考となり、サイドチェーン アプリケーションの登録を開始する前に脆弱性を修正できるようになることを願っています。 |
<<: 「サトシ・ナカモト」を名乗るライト氏がビットコインとブロックチェーンの特許を数百件申請、特許戦争勃発か
>>: ビットコイン: 最高のブロックチェーンアプリケーション
1月10日から、イーサリアムエコシステムの取引手数料は下落局面を迎え、平均および中央値の取引手数料は...
R3 の CTO である Richard G. Brown 氏はブログ記事で、ブロックチェーン技術を...
スティーブン・リーとアイリスが共同編集【プロジェクト紹介】 Filecoin は、クラウド ストレー...
世界最大級のテクノロジーハードウェアメーカーの一社が、暗号通貨マイニング市場向けの新しい GPU の...
何も予想外のことが起こらなければ、かつて中国一の富豪だった趙長鵬氏は、現地時間9月29日に米国の刑務...
洪水の季節が近づいています。積極的に展開しているときに、あるグループの人々が無償で何かを手に入れよう...
世界的なリスク資産は今年初めから大きな変動を経験しています。リスクセンチメントの後退により、米国株と...
テンセントセキュリティが提供したデータによると、デジタル通貨に関連するハッカー攻撃の件数は2013年...
最近、NFT は長らく低迷していた暗号資産市場に活力を吹き込み、数十倍の価値を持つ新しく発売された ...
過去数年間のビットコインの人気により、多くのプレイヤーが「マイナー」になりました。これらのプレイヤー...
2017年から2018年にサークルに参加した友人がいる場合、ブロックチェーンポーカーデッキをまだ覚...
IBM Watson Healthは、ブロックチェーン技術を使用して医療データを取引するための安全で...
テンセントテクノロジーニュース、11月20日、ロイターが入手した草案文書によると、EU諸国はテロリ...
ブロックチェーン業界の重要な事業は、デジタル通貨を従来の銀行や金融市場と結びつけることです。 Rip...
少し前、サムスンが何年も前に発売された大量の古い Galaxy S5 携帯電話を使って、特別なビット...