
この脆弱性は、js2py のサンドボックス処理が不完全であることに起因します。巧妙に細工された JavaScript が Python の内部オブジェクトモデルを辿り、subprocess.Popen などの危険なクラスへアクセスすることで、任意のコマンド実行が可能になります。
このリポジトリには、js2py.disable_pyimport() を介したサンドボックス回避を実証する**概念実証(PoC)**ペイロードが含まれています。これは 0.74 までの js2py バージョンにおける脆弱性です。
アプリケーションがユーザー指定の JSON/JavaScript を安全でない方法で評価・解析する場合、この脆弱性により攻撃者は JavaScript サンドボックスを脱出し、Python 内部に到達して subprocess.Popen を特定し、任意のコマンドを実行できます。
js2py を使用して JavaScript を安全に解析している多くの Python 環境に影響を与えました。js2py.disable_pyimport() 内の不完全なサンドボックス処理に存在し、グローバルオブジェクトへのアクセスを通じて意図されたインポート制限を回避することを可能にします。__class__、__base__、__subclasses__() にアクセスして subprocess.Popen を特定します。disable_pyimport() サンドボックスエスケープによる js2py RCE https://github.com/advisories/GHSA-h95x-26f3-88hr