私たちは書きました 、2022 年、広く使用されている JavaScript サンドボックス システムのコード実行ホールについて vm2
.
今、私たちはあなたにお知らせするために書いています 似ているが異なる穴 同じサンドボックス ツールキットで、更新を促します vm2
このパッケージに依存する製品を使用する (またはビルドする責任がある) 場合。
ご想像のとおり、VM は バーチャルマシンは、「ソフトウェア コンピューター」と呼ばれるものを説明するためによく使用される名前で、アプリケーションを制限された方法で実行するのに役立ちます。これらのアプリケーションに、基盤となるオペレーティング システムとハードウェアへの直接アクセスを許可した場合よりも、より慎重な制御が可能になります。
そしてその言葉 サンドボックス これは、アプリケーションが本物だと考えているが、無能か悪意によるかを問わず、危険なアクションを実行する能力を制限するようにアプリを繭にします。
人工現実に閉じ込められた
たとえば、アプリは、システム全体のユーザー データベース ファイルを見つけて開くことができると想定する場合があります。 /etc/passwd
、エラーを報告し、それができない場合は先に進むことを拒否する可能性があります。
場合によっては、それで満足するかもしれませんが、(セキュリティと同様に安全のために) 名前に応答するファイルを開くことができるサンドボックスでアプリを実行することを決定するかもしれません。 /etc/passwd
ですが、これは実際には、実際のファイルの簡略化またはモックアップされたコピーです。
同様に、アプリによって行われるすべてのネットワーク リクエストを囲い込み、インターネットへの自由なアクセスが可能であると認識し、プログラムによってそうであるかのように動作するようにすることもできます。
..実際には、アプリを適切に規制された壁に囲まれた庭に保ち、コンテンツと動作を自由に制御できるネットワークシミュレーターを介して通信しています。
要するに、メタファーに合わせて、アプリを独自のサンドボックスでプレイするように強制しています。これにより、バグ、マルウェア コード、またはプログラミングの不適切な選択によって引き起こされる可能性のある害から保護することができます。アプリ自体を変更したり、アプリを再コンパイルしたりする必要はありません。
サーバー用のブラウザスタイルのサンドボックス
Web ブラウザーはサンドボックスの良い例です。サンドボックスは、リモート Web サイトからダウンロードして実行する JavaScript プログラムを制御する方法です。
お使いのブラウザーの JavaScript は暗黙のうちに信頼されていないため、実行が許可されていない、または意図的に削除された、または不完全な応答を受け取る JavaScript 操作が多数あります。たとえば、次のようなものです。
- ローカル コンピューター上のファイルにアクセスできません。 ブラウザの JavaScript は、ファイルの読み取りや書き込み、ディレクトリの一覧表示、特定のファイルが存在するかどうかの確認さえできません。
- 他のサイトからの Cookie や Web データにはアクセスできません。 の一部として取得された JavaScript
example.com
たとえば、Cookie や他のサイトによって設定された認証トークンなどの Web データをのぞき見することはできません。 - カメラやマイクなどのハードウェアへのアクセスを制御します。 Web サイトの JavaScript は、視聴覚ハードウェアの使用を要求できますが、デフォルトでは、JavaScript から制御できないポップアップを介して同意しない限り、アクセスできません。
- タイマーやその他のシステム測定値による精度の制限。 ブラウザーベースの JavaScript が、画面サイズや実行タイミングなどの詳細に基づいてコンピューターの身元について知識に基づいた推測を行うのを困難にするために、ブラウザーは通常、有用ではあるが不正確または不完全な応答を Web サイトに提供します。あなたは他の訪問者より目立ちます。
- Web ページ ウィンドウ外のディスプレイへのアクセスはありません。 これにより、Web サイトの JavaScript がブラウザー自体からの警告を上書きしたり、アドレス バーに表示される Web サイトの名前を変更したり、意図的に誤解を招くような視覚的なトリックを実行したりすることを防ぎます。
vm2
パッケージは、ブラウザーの外部で実行される JavaScript に対して同様の制限環境を提供することを目的としていますが、信頼できないソースまたは半信頼のソースからのものである可能性があるため、厳重に管理する必要があります。
最近では、クラウドベースのサービスのバックエンド サーバー ロジックの多くが、Java ではなく JavaScript でコーディングされています。 node.js
JavaScript エコシステム。
So vm2
は、それ自体が JavaScript で記述されており、ブラウザーが Web ページの JavaScript に提供するのと同じ種類のサンドボックス保護を本格的なサーバーベースのアプリに提供することを目的としています。
明確にするために: Java と JavaScript の XNUMX つの言語は、それぞれの名前に含まれる共通の文字でのみ関連しています。 共通点はほとんどありません 自動車 および または および ペット.
エラー ハンドラのセキュリティ エラー
残念ながら、この新しい CVE-2023-29017 のバグ vm2
これは、バックグラウンド タスクの実行中にエラーが発生した後に整理するのに役立つはずのサンドボックス内の JavaScript 関数を意味していました…
…バグのある関数をトリガーするために意図的にエラーを引き起こした場合、だまされて選択したコードを実行する可能性があります。
簡単に言えば, 「脅威アクターは、サンドボックス保護をバイパスして、サンドボックスを実行しているホストでリモート コード実行権限を取得できます。」
さらに悪いことに、韓国の博士号。 学生は、エクスプロイトがどのように機能するかを示す XNUMX つの概念実証 (PoC) JavaScript フラグメントを GitHub で公開しました。 コードにはコメントで注釈が付けられています。 「期待される結果: 脱出できる vm2
任意のシェルコードを実行します。」
サンプル エクスプロイト スニペットは、C 関数で実行できるように、システム シェルで任意のコマンドを実行する方法を示しています。 system()
、Python 関数 os.system()
、または Lua の os.execute()
.
何をするか?
vm2
開発者 このバグにパッチを当てました 超高速、そして 速やかに公開 GitHub アドバイザリ…
…ヒントを参考にして、依存しているアプリがある場合はできるだけ早く更新してください。 vm2
.
バグはパッチされました vm2
バージョン 3.9.15、先週の木曜日 (2023-04-06T18:46:00Z) に公開されました。
サーバーサイドを使用する場合 node.js
自分で管理および構築しておらず、それらが使用しているかどうかわからない JavaScript アプリケーション vm2
そうでない場合は、ベンダーに連絡してアドバイスを求めてください。
- SEO を活用したコンテンツと PR 配信。 今日増幅されます。
- Platoblockchain。 Web3メタバースインテリジェンス。 知識の増幅。 こちらからアクセスしてください。
- 情報源: https://nakedsecurity.sophos.com/2023/04/09/popular-server-side-javascript-security-sandbox-vm2-patches-remote-execution-hole/