Judge0 の深刻な脆弱性が FIX:サンドボックス・エスケープによる乗っ取りの可能性

Critical Judge0 Flaws Expose Online Coding Platforms to Full System Takeovers

2024/04/24 SecurityOnline — 広く使用されているオンライン・コード実行システム Judge0 に、複数の深刻な脆弱性が発見された。それによる壊滅的な結果が、競争力のあるプログラミング・サイト/e ラーニング・プラットフォームといった、安全なコード評価に依存する各種のサービスにもたらされる可能性があるという。Judge0 のバージョン 1.13.0 未満に影響を及ぼす3件の脆弱性 CVE-2024-29021/CVE-2024-28185/CVE-2024-28189 により、システムの完全な侵害にいたる可能性がある。


これらの、3件の脆弱性の悪用に成功した攻撃者には、以下のアクションが許される可能性がある:

  • コードが解析されるサンドボックス環境からのエスケープ
  • Judge0 をホストするサーバ上で悪意のコードの実行
  • システムの完全な管理制御を奪う可能性
内在する危険

SSRF によるサンドボックス・エスケープ CVE-2024-29021 (CVSS:9.1):Judge0 のデフォルト・コンフィグでは、パスワード保護が緩いため、サーバ・サイド・リクエスト・フォージェリ (SSRF) 攻撃の可能性が生じるこの脆弱性の悪用に成功した攻撃者はサンドボックスを突破し、Docker コンテナ上で root ユーザーとして、コードを実行する可能性を得る。

エスケープのキーとなるシンボリック・リンク CVE-2024-28185/CVE-2024-28189:Judge0 のシンボリック・リンク処理方法を、攻撃者が悪用する可能性がある。 サンドボックス環境外のファイルへのシンボリック・リンクを巧妙に作成する攻撃者は、任意のファイルを書き換えるだけではなく、以前の脆弱性を修正するために設計されたパッチを完全にバイパスできる。 どちらの欠陥も、CVSS:10 である。

ドミノ効果: サンドボックスからサーバへ

Judge0 の Docker コンテナは、特権アクセスにより実行されることが多いため、リスクはエスカレートする。いったんサンドボックス・エスケープが生じると、攻撃者はホスト・システム全体を侵害することが可能となる。つまり、機密性の高いデータベースおよび内部ネットワークや、同一マシン上でホストされている重要アプリケーションへの自由なアクセスが生じることになる。

誰が危険にさらされるのか?

オンライン・コード実行に Judge0 を使用するプラットフォームは、すべてが脆弱である。それらのプラットフォームとしては、以下が挙げられる:

  • プログラミング競技サイト:侵害に成功した攻撃者は、問題セットの漏洩や、得点の操作、イベントの完全な中断などが可能となる。
  • eラーニング・プラットフォーム: 攻撃者により、教育コンテンツの窃取/コースの妨害/学生記録の改ざんなどが発生する可能性がある。
  • 採用プラットフォーム: 志望者の評価が侵害されると、機密の履歴書がの流出や、不当な結果が生じる可能性がある。
今すぐ行動を: パッチ適用と保護

Judge0 を使用している組織に対して強く推奨されるのは、バージョン 1.13.1 以降への迅速なアップデートである。防御体制を、さらに強化する方法を以下に示す:

  • コンフィグレーションの見直し:安全な設定が行われていることを確認すべきだ。ALLOW_ENABLE_NETWORKフラグに細心の注意を払い、強力なデータベース・パスワードを強制する。
  • 最小特権の原則: Judge0 Docker コンテナに付与される権限を制限する。可能であれば、完全な root 権限での実行は避ける。
  • 侵害を監視する:ファイル・システムに対する疑わしい変更の兆候や、無許可でのアクティビティなどについて、システムログを確認する。
安全なコード実行の重要性

Judge0 の事例が浮き彫りにするのは、コード実行システムに関する強固なセキュリティ対策の必要性である。信頼できないコードを安全に解析する能力は、多くのオンライン・サービスにとって極めて重要である。これらのプラットフォームを使用する開発者や組織は、その悪用を防ぐために、パッチ適用/安全な設定/継続的な監視を優先する必要がある。