Python ライブラリ js2py の脆弱性 CVE-2024-28397:PoC エクスプロイトと技術的詳細が公開

CVE-2024-28397: js2py Vulnerability Exposes Millions of Python Users to RCE

2024/06/21 SecurityOnline — 月間のダウンロード数が 100万を超える、Python ライブラリjs2py に存在する脆弱性 CVE-2024-28397 (CVSS:8.8) により、無数の Web スクレイパーやアプリケーションが、RCE (remote code execution) 攻撃にさらされる可能性が生じている。この脆弱性の悪用に成功した攻撃者は、JavaScript のサンドボックスを抜け出し、基盤となるシステム上で任意のコマンドを実行することが可能になるという。


この js2py を使用することで、Python 開発者たちは、JavaScript コードをプロジェクトにシームレスに統合できる。さらに js2py は、Web ページ内の JavaScript の解析/実行にも対応するため、Web スクレイピング・ツールとしても人気を博している。しかし、この機能そのものが、危険な攻撃ベクターとなっている。

侵害した Web サイトや、偽の API コールを通じて、標的を騙して悪意の JavaScript ファイルを処理させることが可能な攻撃者であれば、この脆弱性を悪用できる。いったん悪用が成功すると、悪意のスクリプトからのホスト・システムへのアクセスが可能となり、攻撃者は自由自在にコマンドを実行できるようになる。

この脆弱性を 2024年2月に発見したセキュリティ研究者の Marven11 は、js2py の公式リポジトリにパッチを提出している。しかし、プロジェクトのメンテナからは、4ヶ月間にわたって反応が無かったという。そこで Marven11 は、パッチに加えて PoC エクスプロイトも公開した。

この脆弱性は、Python 3.12 以下で動作する、js2py バージョン 0.74 以下の全バージョンに影響する。さらに、pyloadcloudscraperlightnovel-crawler などの、js2py を利用している人気のプロジェクトも危険にさらされている。

現時点において、js2py  のメンテナからは、公式のパッチが提供されていない。しかしユーザーは、fix.py スクリプトを使用して自動的に、または、patch.txt の指示に従って手動で、ソースコードにパッチを適用することで、Marven11 の修正プログラムを活用できる。

この脆弱性の深刻さと、広範囲で悪用される可能性を考慮すると、開発者と管理者に強く推奨されるのは、js2py に依存しているアプリケーションの更新および、パッチの適用である。RCE 攻撃のリスクは、無視するには深刻すぎる。