BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース 「npm install」を安全にする

「npm install」を安全にする

原文(投稿日:2019/06/29)へのリンク

QCon New York 2019で、AgoricのソフトウェアエンジニアのKate Sills氏が、構成可能なスマートコントラクトコンポーネントをJavaScriptを使用して構築する際のセキュリティ上の課題について説明した。npmインストールプロセスでのセキュリティリスクに対する解決策として、TC39 JavaScriptの2つの新しい提案としてレルムとSecure ECMAScript(SES)が発表された。

今日、npm installコマンドを実行すると、モジュールと依存関係にあるすべてのモジュールがファイルシステムやネットワークアクセスを含む多くのネイティブオペレーションにアクセスできるようになる。セキュリティ上の主なリスクは、信頼できるモジュールの不正な依存関係により危険にさらされて、暗号通貨ウォレットなどのローカルマシン上の個人情報にアクセスし、その情報をHTTP接続を介してリモートサーバにアップロードすることを目的とするロジックに置き換えられることである。

JavaScript標準の将来のバージョンを担当する技術委員会であるTC39には、現在承認ステージ2にある2つの提案がある。 1つ目は、レルムで、ソースコードを容易に分離し、コードが存在する区画へのアクセスを制限することができる。レルムの提案は、サンドボックスの外部にあるself、fetch、およびその他のAPIへのアクセスを制限することによって、サンドボックスへのアクセスを制限してしまうという問題を解決する。レルムにはセキュリティの分離以外にも、プラグイン、ブラウザ内のコードエディタ、サーバーサイドのレンダリング、テスト/モック、ブラウザ内での変換など、多くの潜在的なユースケースがある。realms shimは、現在のレルムのドラフト提案を活用するために利用できる。

もう1つの潜在的な攻撃方法は、オブジェクトのプロトタイプが意図せずに変更されるプロトタイプポイズニングである。この攻撃方法と戦う提案はSecure ECMAScript(SES)であり、現在TC39承認プロセスのステージ1にあり、それはRealmsにTransitive Freezingを結びつけるものである。npm install sesからSES shimにアクセスできる。

レルムとSESはJavaScriptを正常にロックダウンするが、多くのアプリケーションはファイルシステムやネットワークなどのAPIにアクセスする必要がある。Sillsの講演で、彼女は必要最低限の権限のみを付与し、それ以上は付与しないという原則を強調した。

Sillsは、コンソールのスタイルを変更するためにJavaScriptエコシステム内の共通の依存関係に依存する、コマンドラインのtodoアプリケーションの例を挙げた。このモジュールは、オペレーティングシステムオブジェクトへのアクセスを必要とするが、特定のオペレーティングシステムに見られるカラーグリッチに対処するためだけに必要である。SESでは、依存関係にあるモジュールがカラーグリッチを修正するのに必要なosオブジェクトの機能にのみアクセスできるように制限するためにアクセスを弱めることが可能である。

プレゼンテーション中、Sillsはまた、SESと同様に、ES2018を完全にサポートしているModdable XSを強調した。それによって、ユーザがIoTデバイスにアプリケーションを安全にインストールできる。現在のSES実装の他の例としては、SES環境内のすべての依存関係を持つEthereumウォレットとSalesforceロッカーデバイスがある。

SESとレルムには将来性があるが、現在これらの提案がJavaScript言語の公式部分になる前に解決すべきいくつかの制限、パフォーマンスの課題、開発者のエルゴノミクス(例えば、今日のモジュールは文字列への変換が必要)がある。

この記事に星をつける

おすすめ度
スタイル

BT