本文へ移動
English version →
重大 9.0 急ぎ度: 早めに

Cronicleに権限昇格の脆弱性、0.9.124で修正

Cronicleで、管理者以外のユーザーがジョブの実行環境を書き換え、権限昇格や任意コード実行につなげられる脆弱性が公表されました。修正版が出ているので、版を確認して更新し、イベント権限を持つユーザーも見直してください。

CVE-2026-85076 公開 更新 執筆・監修: 佐々木 航 人が監修しながらAIを活用して執筆
画像は生成 AI で作成したイメージです

急ぎ度: 早めに

CVSS v4は9.0で修正版も出ていますが、悪用にはイベントの実行・作成・編集の権限を持つログイン済みユーザーが必要なため、至急ではなく早めの更新を勧めます。

関係があるか

Cronicleを社内で運用し、管理者以外のユーザーにイベントの実行・作成・編集の権限を渡している組織が対象です。これらの権限を一般ユーザーに与えていなければ、この脆弱性を突ける利用者は限られます。

製品影響を受ける版修正版
Cronicle(jhuckaby/Cronicle) 0.9.124未満 0.9.124

確かめ方

  1. 1インストール先のpackage.jsonでversionを確認します。Dockerなどのコンテナーで動かしている場合は、使っているイメージのタグを見ます。
  2. 2管理画面のユーザー一覧で、管理者以外のユーザーにrun_events、create_events、edit_eventsの権限が付いていないかを確認します。
  3. 3外部委託先や他部署のアカウントなど、自分たちで管理していないユーザーが含まれていないかも見ておきます。

何が起きたか

Cronicleで、一般ユーザーがジョブを動かす環境の設定を勝手に書き換えられる脆弱性が見つかりました。書き換えられた設定によっては、権限昇格、任意コードの実行、データの閲覧、サービスの停止につながります。影響の大きさは、使っているプラグインと実行環境によって変わります。

イベントには、プラグインに渡すパラメーター(params)を付けられます。Cronicleはこの値がオブジェクトの形かどうかしか調べておらず、プラグインが定義していないキーも受け付けていました。ジョブを起動するとき、そのキーは大文字に直され、子プロセスの環境変数として設定されます。しかも管理者がプラグインに設定した環境変数よりあとに適用されるため、同じ名前なら一般ユーザーの値が勝ちます。PATHのように実行の仕組みを左右する環境変数と名前が重なると、プラグインの実行環境そのものが差し替わります。

この問題は、CVE-2026-39401の修正が不十分だったために起きました。前回はイベントデータからuid、gid、cwd、envを取り除く修正が入りましたが、paramsのキーが環境変数になる経路は残っていました。CWEはCWE-863とCWE-74です。

0.9.124では、イベントの作成と更新のときに、paramsのキーがプラグインで定義されたものかを検査するようになりました。未定義のキーがあるとエラーで拒否されます。

攻撃の流れ

  1. 1

    権限を持つ利用者

    イベントの実行・作成・編集の権限を持つ一般ユーザーがAPIを使います。

  2. 2

    未定義キーを追加

    イベントのparamsに、プラグインが定義していないキーを入れます。

  3. 3

    環境変数を上書き

    キーが大文字に直され、管理者設定の環境変数より優先して子プロセスに渡されます。

  4. 4

    実行環境が変わる

    ジョブ実行時に、コード実行や権限昇格などにつながります。

公開されている情報をもとにした流れの例です。

どう悪用されるか

悪用にはCronicleへのログインが必要で、そのユーザーがrun_events、create_events、edit_eventsのいずれかの権限を持っている必要があります。管理者権限は要りません。操作はネットワーク経由のAPI(api_create_event、api_update_event、api_run_event)で行われ、ほかの利用者に何かをさせる必要もありません。

成功すると、管理者が決めたプラグインの実行環境を、一般ユーザーが上書きできます。プラグインを動かすOSユーザーの権限でコードが動く恐れがあるほか、別のユーザーとして動くプラグインの実行環境にも影響が及びます。サーバーを複数台つないでジョブを流している環境では、影響がジョブの実行先にも広がる点に注意が必要です。

今すぐやること

  1. 1

    使っている版を確認する

    インストール先のpackage.jsonでversionを確認し、0.9.124未満なら更新の対象です。パスは環境によって違うので、自社の配置に読み替えてください。

    grep '"version"' /opt/cronicle/package.json
  2. 2

    0.9.124に更新する

    修正版の0.9.124に更新し、サービスを再起動します。複数台構成なら、マスターとワーカーの版がそろうように更新します。更新前に設定とデータのバックアップを取っておくと、戻すときに困りません。

  3. 3

    イベント権限を持つユーザーを見直す

    run_events、create_events、edit_eventsを持つ一般ユーザーを洗い出し、業務に要らない権限は外します。更新が終わるまでの間も、この見直しは被害を狭めます。

  4. 4

    既存イベントのparamsと操作履歴を点検する

    修正前に作られたイベントに、プラグインが定義していないparamsのキーが入っていないかを調べます。あわせて、管理者以外によるイベントの作成・更新の記録に身に覚えのないものがないかも見ます。

すぐ更新できないとき

ベンダーが示した回避策ではなく、修正版を当てるまでの一般的なつなぎです。イベント関連の権限を信頼できるユーザーだけに絞ります。Cronicleの管理画面とAPIには、社内ネットワークやVPNからだけ届くようにアクセス元を制限します。プラグインを動かすOSユーザーの権限も最小限にしておくと、悪用されたときの被害を抑えられます。

背景

Cronicleは、複数のサーバーにまたがってスクリプトやコマンドを定期実行し、実行結果をWebの画面で管理するタスクスケジューラーです。cronの代わりに使われることが多く、バックアップや夜間バッチ、データ連携など、社内の運用ジョブをまとめて動かす場所になりがちです。ジョブを実行するOSユーザーの権限が強いほど、実行環境を書き換えられたときの被害も大きくなります。

今回の脆弱性は、以前に修正されたuid、gidの上書きの問題の修正漏れです。前回の修正はイベントのデータから特定のキーを取り除くものでしたが、paramsのキーが環境変数として使われる経路は塞がれていませんでした。0.9.124では、キーを取り除くのではなく、プラグインが定義した名前以外を受け付けない方式に改めています。

よくある質問

Q.更新すると、既存のイベントが動かなくなることはありますか。
A.0.9.124は、イベントの作成や更新のときに、プラグインが定義していないparamsのキーをエラーにします。自作のプラグインや、プラグインの定義に無いキーをparamsに入れる運用をしている場合は、更新後の保存時に拒否される可能性があります。更新の前に、テスト環境で既存のイベントを保存し直して確認すると安心です。

この記事は、取得元の公開情報をもとに、人が監修しながらAIを活用して執筆しています。執筆と監修は佐々木 航が担い、公開したあとも人が内容を確認しています。誤りに気づいたときは直し、記事の末尾に訂正の行を残します。対応を決める前に、下の原文と参照先も確認してください。

原文の説明 取得元が公開している説明をそのまま載せています (多くは英語)。

Cronicle is a multi-server task scheduler and runner, with a web based front-end UI. Prior to 0.9.124, an authenticated non-admin with run_events, create_events, or edit_events privilege can supply undeclared keys in event params through api_create_event, api_update_event, or api_run_event. lib/api.js and lib/api/event.js validate the parameter object without restricting its keys, and lib/job.js uppercases those keys and applies them to the child process environment after administrator-defined plugin variables. A key that collides with a security-sensitive environment variable can therefore override the plugin execution context and may cause privilege escalation, arbitrary code execution, data access, or service disruption depending on the plugin and runtime. This issue is fixed in version 0.9.124.

出典: CVE.org (CVE Program・cvelistV5) NVD

参照URL

当サイトでは、アクセス解析と広告の効果測定のために Cookie を使います。株式会社Game のサイト共通の設定です。 詳しく