何が起きたか・対象

Uptrainの評価用APIで、攻撃者が設定値として送ったPythonの式をサーバーに実行させる問題がありました。識別子はCVE-2025-27771、CVE-2025-27772で、検証版は0.7.1です。

/add_promptsや/new_runは、checksやmetadataの文字列をPythonのevalへ渡していました。evalは文字列に書かれた関数呼び出しも評価するため、設定データのつもりで受けた入力が、Uptrainを動かすプロセスのコードになります。APIへの到達と認証経路の利用が条件です。 両APIのコードにはvalidate_api_key_publicという認証処理があり、開示は有効な認証方法を使えることを前提としています。一方で概要にはダッシュボードの認証不足も挙げられており、その二つを「誰でも無条件に同じAPIを呼べる」とはまとめません。

研究は、ダッシュボードの認証不足と広いCORS許可を組み合わせる経路も説明しています。利用者が訪れた攻撃者のページのJavaScriptから、利用者のブラウザで到達できるUptrain APIへ要求を送り、コード評価まで進む構成です。ブラウザの通信制約やAPIの設定にも依存し、全環境で操作なしに実行できるという意味ではありません。 CORSは、別オリジンのページのJavaScriptへAPI応答の読取などを許すサーバー側の設定です。要求によっては本送信前のプリフライトも許可する必要があります。研究概要は広い許可との連鎖を挙げていますが、各認証値の取得やブラウザ経由の全要求順序は詳述していないため、本記事でもそこを推測しません。

コード実行後の説明用の例では、プロセスが読めるAPIキーを読み、外部へ送信できるなら攻撃者が値を取得します。コンテナで動かす場合も、ホストの設定ファイルを共有していればその内容を読める範囲が増えます。秘密の提供や共有、外部通信の可否は個々の構成に従います。

報告・修正・公開の時系列

2024-09-05に連絡し、2025-03-10には保守停止を示唆する連絡が記録されています。研究ページの公開日は2026-08-08ですが、時系列には2026-08-10の修正案PRも載っています。日付の順序の違いは推測で補正せず、そのまま区別します。

正常ならどう動くはずだったか

評価の種類や追加情報は、決められた項目と型を持つデータとして読み取ります。受け取った文字列をPythonのコードとして実行する必要はありません。APIへアクセスする資格情報も、存在するだけでなく正しく検証する必要があります。

技術的な原因

/add_promptsと/new_runが、checks[0]とmetadataをevalへ渡していました。evalは文字列をPythonの式として評価するため、攻撃者が値を指定できると、設定の読み取り時にサーバー内でその式が実行されます。これはモデルのバイナリ復元とは異なる、テキストのコード評価です。

攻撃が成立する条件と流れ

APIへ到達し、有効な認証経路を使える攻撃者が、Pythonの関数呼び出しを含む式をchecksやmetadataとしてHTTPリクエストで送ります。サーバーが評価設定を読み取る際にevalへ渡すと、その式がUptrainのプロセスで実行されます。研究は、ダッシュボードの認証不足と広いCORS許可を組み合わせ、利用者が訪れた攻撃者のページからAPIを呼ぶ経路も説明しています。利用者のブラウザからAPIへ接続できることと、ブラウザ側の通信制約を通ることが必要です。 公開コードに認証処理があることと、ダッシュボードの認証不足の概要は区別して確認します。外部ページからの連鎖で、どの認証値をどう得るかという細部は参照資料だけでは確定できません。

確認された事実と、想定される影響

実行先はUptrainを動かすプロセスで、典型的にはDockerコンテナ内です。一般的な影響例として、そのプロセスが読めるAPIキーをコードが読み、外部への通信も許可されていれば攻撃者のサーバーへ送れます。この場合、攻撃者が取得するのはそのAPIキーであり、キーに許可された別サービスの操作まで被害が広がるおそれがあります。書き込み可能な評価結果ファイルを上書きできる場合には、利用者が参照する評価結果も変更されます。これらは権限に依存する説明例で、研究が実際の秘密窃取を観測したという意味ではありません。外部ページへの訪問などが必要な連鎖を、全環境で操作なしに成立すると一般化しません。

実際の修正・対応方針

修正案PRの記録はありますが、取り込みと正式な修正リリースはここでは確認できません。一般策はevalを除き、型を検証したデータとして扱うこと、実効的な認証と必要なCORS許可だけにすることです。実装済みとは断定しません。

利用者・運用者が確認すること

未信頼利用者や外部ページからAPIを呼べる構成を避け、コード評価の排除と認証を確認できる構成へ移行します。未確認の修正版を前提に公開せず、実行環境の秘密やホスト共有も制限します。 ホスト共有とは、例えばコンテナ外の設定ディレクトリをコンテナ内へマウントして見せることです。その共有を減らすと、Uptrain内で動いたコードから読める・書けるファイルも減らせます。

開発者への教訓(教材としての考察)

機械学習の補助ツールでも、利用者のブラウザから呼べるサーバー処理は攻撃の入口です。設定文字列の解釈と、誰がAPIへアクセスできるかを一緒に確認します。

出典・確認範囲

  1. [1] Zero click RCE in UptrainGitHub Security Lab / 確認日 2026-10-29
未確認事項・限界

修正案PRの取り込みと正式な修正リリース、実悪用は確認できません。