本文へ移動
English version →
重大 9.8 急ぎ度: 至急

rConfigにRCE脆弱性、修正版8.2.19と8.4.1あり

rConfig CoreとProに、Redisのジョブキュー経由で認証なしにコードを実行される脆弱性が公表されました。修正版へ更新し、Redisに外部から届かないかも確認してください。

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

急ぎ度: 至急

認証なしでネットワーク越しにコードを実行でき(CVSS v3は9.8、v4は9.3)、修正版も出ているため、Redisに届く環境では更新を急ぐ必要があります。

関係があるか

rConfig CoreまたはProでネットワーク機器の設定を管理している組織が対象です。とくにRedisがネットワークから到達できる状態の環境は、早く対処する必要があります。

製品影響を受ける版修正版
rConfig Core 8.0.0以上、8.2.19より前 8.2.19
rConfig Pro 8.4.1より前 8.4.1

確かめ方

  1. 1稼働中のrConfigがCoreかProか、その版が上の表の範囲に入るかを確認する。
  2. 2rConfigを動かしているサーバーで、Redisがどのアドレスで待ち受けているかを確認する。既定のポートは6379で、全アドレスで待ち受けていたり、別のホストから届いたりする場合は優先して対処する。
  3. 3Dockerで動かしている場合も、コンテナ内のRedisがホスト外から届く設定になっていないかを見る。

何が起きたか

rConfig CoreとProに、ログインしていない攻撃者がサーバー上で任意のコードを実行できる脆弱性が見つかりました。rConfigが内部で使うRedisのジョブキューに、細工したジョブを送り込めることが原因です。

rConfigはLaravel Horizonという仕組みで、Redisに溜めたジョブを順に処理します。影響する構成ではこのRedisが認証なしで動いていました。取り出したジョブをLaravelが復元するとき、復元してよいクラスを制限していません(CWE-502、信頼できないデータのデシリアライズ)。受付の箱に入っていた注文票を、誰が入れたかも確かめずにそのまま実行するようなものです。

さらに、同梱されているlaravel/tinkerを使うと、PHPのコードだけでなくOSのコマンドも実行できます。Core 8.2.19のリリースノートには、Redisに認証を必須にしたこと、Horizonとスケジューラーをrootではなくなるようにしたこと、機器の宛先にrConfigサーバー自身を指定できなくしたことが書かれています。

攻撃の流れ

  1. 1

    Redisに到達

    攻撃者がネットワーク経由で、認証なしで動いているRedisに接続する。

  2. 2

    偽ジョブを投入

    Horizonのキューに、細工したジョブを積む。

  3. 3

    コマンド実行

    ワーカーがジョブを制限なしに復元し、攻撃者の指定した処理が走る。

  4. 4

    居座りと窃取

    Webから届く場所に侵入口を置き、各種の認証情報を読み取る。

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

どう悪用されるか

認証は要りません。利用者の操作も要らず、攻撃者がRedisのキューにネットワークから接続できれば成立します。影響する構成では、このRedisが認証なしで動いています。

Redisに直接届かない環境でも、ログインできる攻撃者であれば、機器の宛先にrConfigサーバー自身のループバックアドレスを設定することで、アプリ経由で同じ細工を送り込めます。

悪用されると、キューのワーカーを動かしているユーザーの権限で、PHPのコードとOSのコマンドを実行されます。Webで公開されているstorage/app/publicにWebシェルを置かれて居座られるおそれがあります。データベースの認証情報、保存されている機器の認証情報、APIトークンも読み取られます。ルーターやスイッチのログイン情報が一括で渡ると、被害はrConfigサーバーの外へ広がります。

今すぐやること

  1. 1

    修正版へ更新する

    Coreは8.2.19、Proは8.4.1に更新します。Coreの更新前に、PHPを8.2.35、8.3.36、8.4.27のいずれか以上にしてください(古いパッチ版ではComposerが更新を拒否します)。8.2.18以前からの初回更新は、git pull を実行したあと sudo ./update.sh --no-pull を実行します。以降は sudo ./update.sh だけで更新できます。Proの手順はベンダーのセキュリティ告知で確認してください。

    php -v
  2. 2

    Redisの到達範囲を確認する

    Redisが待ち受けているアドレスを確かめます。サーバー自身からしか使わないなら、ローカルのアドレスに限り、ファイアウォールでも外部からの接続を塞ぎます。修正版はRedisに認証を要求しますが、到達範囲の見直しも並行して行います。

    ss -tln | grep 6379
  3. 3

    侵害の跡を調べる

    Redisが外部から届く状態だった期間があるなら、storage/app/publicに見覚えのないファイル(とくにスクリプト)がないかを確認します。不審な点があれば、データベース、各ネットワーク機器、APIトークンの認証情報を、更新後に入れ替えます。

  4. 4

    更新後にワーカーの権限を確認する

    8.2.19には、ワーカーの実行ユーザーを調べる rconfig:check-worker-user コマンドと、ダッシュボードのWorker Privilegeチェックが加わっています。更新後に、ワーカーがrootで動いていないことを確かめます。

  5. 5

    運用環境の変更点を先に確認する

    8.2.19ではSupervisorのプログラム名がrconfig-core-horizonに変わり、スケジューラーは/etc/cron.d/rconfig-coreへ移りました。Amazon Linux 2023は対象外になったため、この上で動かしている場合は移行先の環境も検討します。

  6. 6

    ベンダーの告知を確認する

    rConfigのセキュリティ告知のページで、Proの更新手順や追加の注意事項がないかを確認します。

すぐ更新できないとき

修正版をすぐに当てられないときは、Redisへの接続を、rConfigサーバー自身を除いてファイアウォールなどで遮断します。ただし、ログインできる攻撃者がアプリ経由で同じ細工を送る経路は残るため、つなぎにすぎません。アカウントの見直しと合わせて、早めに更新してください。

背景

rConfigは、ルーターやスイッチなどのネットワーク機器の設定を定期的に取得し、保管・比較する管理ツールです。機器にSSHでログインして設定を取るため、サーバーには各機器の認証情報が保管されます。このサーバーを乗っ取られると、機器の設定そのものと、機器へ入るための鍵が同時に渡ります。

今回の入り口になったのは、取得ジョブを順に処理するRedisのキューです。キューに積まれたジョブを検証せずに復元する作りは、デシリアライズの脆弱性の典型で、Redisが認証なしで外から見える構成だと、アプリのログインを通らずに到達できてしまいます。リリースノートには、ワーカーがroot権限で動いていた点を改めたことも書かれており、乗っ取られたときの被害を小さくする対策も修正版に含まれています。

よくある質問

Q.Redisに認証を設定するだけで足りませんか。
A.足りません。修正版には、Redisの認証必須化のほか、機器の宛先にサーバー自身を指定できなくする変更と、ワーカーをrootで動かさない変更が入っています。ログインできる攻撃者の経路は、Redisの認証だけでは塞げないため、修正版への更新が必要です。
Q.更新で運用が変わるところはありますか。
A.あります。Supervisorのプログラム名とスケジューラーの置き場所が変わり、Horizonのログはlogrotateで回転されます。HEALTH_MAIL_TOは使われなくなりました。更新前に、監視や自動化の設定がこれらの名前に依存していないかを確認してください。

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

影響パッケージ

パッケージ影響を受ける版 → 修正版
rConfigrConfig Core
8.0.0 以上 8.2.19 未満→ 8.2.19
rConfigrConfig Pro
8.4.1 未満→ 8.4.1
原文の説明 取得元が公開している説明をそのまま載せています (多くは英語)。

rConfig Core 8.0.0 before 8.2.19 and rConfig Pro before 8.4.1 contain a deserialization of untrusted data vulnerability that allows unauthenticated network attackers to execute arbitrary code by pushing a crafted serialized job onto the Redis-backed Laravel Horizon queue, which runs without authentication in affected deployments. Laravel's CallQueuedHandler unserializes the job without class restrictions, allowing attackers to instantiate the existing App\Jobs\TaskDownloadRun class and invoke an attacker-controlled Artisan command. Attackers can leverage the bundled laravel/tinker package to execute arbitrary PHP and operating system commands as the queue worker's user, write a persistent web shell into the web-served storage/app/public directory, and read database credentials, stored device credentials, and API tokens. Where Redis is not directly reachable, authenticated attackers can deliver the payload through the application by configuring a device target that points at the rConfig server's loopback address.

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

参照URL

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