VM2 Sandbox Escape

ほぼこもセキュリティニュース By Terilogy Worx

VM2はNode.jsの組み込みモジュールで、信頼できないコードを安全に実行するためのサンドボックスです。
元々の狙いが、信頼できないコードを安全に実行するために使用されるものです。
こういったソフトウェアの宿命なのかもしれないのですが、このVM2に脆弱性が確認されています。

  • VM2は広く利用されている
    VM2はとても広く利用されています。
    直接このVM2を自分で活用するという例もあることと思いますが、それ以上に、既存の多くのソフトウェアで前提として利用されています。
    VM2の機能を搭載したい、統合開発環境(IDE)、コードエディター、侵入テストフレームワーク、セキュリティツールなどで使われています。
    このため、VM2は、NPMパッケージリポジトリ経由で毎月1,600万回以上ダウンロードされています。
    これだけの利用状況のソフトウェアに問題があると影響が非常に大きいといえます。

     

  • 重大度9.8
    今回確認されている脆弱性はCVE-2023-29017です。
    CVE-2023-29017のGitHub Advisory DatabaseにおけるCVSS3.1のBase Scoreは9.8です。
    ほぼ最高レベルの脆弱性となっています。

     

  • リモートコード実行
    CVE-2023-29017はリモートコード実行を実現させてしまう脆弱性です。
    VM2のコードの中には様々なエラー処理が含まれますが、そのなかの一部の引数処理に適切ではない部分があったことが原因でした。
    この脆弱性がある状態のコードで脆弱性を悪用すると、サンドボックス機能を回避してリモートからコードを実行できてしまいます。

     

  • 緩和策
    緩和策は存在しません。
    脆弱性のあるバージョンのVM2を使う場合、ソフトウェアは脆弱です。
    脆弱性のあるソフトウェアのバージョンの範囲は3.9.14以前のVM2のすべてのバージョンです。

     

  • 対応策
    対応策はバージョンアップです。
    VM2を3.9.15以降に更新することで対応が可能です。
    2023/4/10時点の最新が3.9.15です。

これは一つの例にすぎません。
パッケージ管理システムは多く存在し、広く活用されています。
パッケージ管理システムの利用によって、自分で作成していない高機能なソフトウェアモジュールを簡単に使用することができ、とても便利です。
しかしパッケージを適切にメンテナンスすることなく利用することは大きな危険を伴います。
それぞれのパッケージ管理システムは、簡単にソフトウェアモジュールを更新する方法を提供しています。

習慣として更新することが重要です。

参考記事(外部リンク):「VM2 Sandbox Escape] Vulnerability in vm2@3.9.14 #515
github.com/patriksimek/vm2/issues/515