EATON UPS Companionは、Eaton製のUPS(無停電電源装置)とつないだWindowsパソコンやサーバーを、停電時に安全にシャットダウンさせる電源管理ソフトです。このソフトの3.0より前のバージョンに、インストーラのDLL検索パスの不備(CVE-2025-59887)と、引用符で囲まれていない検索パス(CVE-2025-59888)の2件の脆弱性があり、2026年1月13日にJVN#48187396として公表されました。前者はインストーラを実行した権限で、後者はSYSTEM権限で任意のコードを実行されるおそれがあります。本記事では、2件の仕組みと攻撃が成立する条件、手元のパソコンで版と設定を確かめるPowerShellの手順、更新までの対処を、JVN・NVD・CISAの記載に沿って整理します(2026年11月10日時点)。
まとめ:UPS Companionの更新対象と配布経路の確認
- 対象:EATON UPS Companion 3.0より前のすべてのバージョン。
- CVE-2025-59887:インストーラが読み込むDLLの検索パスを制御していない(CWE-427)。細工したDLLを同じ場所に置かれると、インストーラを実行した権限でコードが動く。CVSS v3.1は8.6。
- CVE-2025-59888:空白を含むパスが引用符で囲まれていない(CWE-428)。システムドライブ直下に書き込める利用者が、SYSTEM権限でコードを実行できる。CVSS v3.1は6.7。
- 悪用状況:2026年11月9日公開のCISA KEV(カタログ版2026.11.09)に2件とも載っていない。CISAが2025年12月26日に付けたSSVC判定は2件とも「Exploitation:none」(評価時点で悪用の証拠も公開PoCも確認していない)・「Automatable:no」。EPSS(2026-11-09)は2件とも0.3%未満。遠隔から単独で侵入できる種類ではなく、手元の操作やファイル配置が前提。
- 対応:Eatonの公式ダウンロードセンターから入手した3.0以降に更新する。インストーラは空のフォルダーに置いて実行し、システムドライブ直下のアクセス権が既定から緩められていないかを確かめる。
深刻度の数字だけを見るとCVE-2025-59887のほうが高く見えますが、実務上の優先順位は環境で変わります。UPSにつないだサーバーを複数の利用者が触る環境ではCVE-2025-59888の権限昇格を、インストーラをメールや共有フォルダーで配る運用ではCVE-2025-59887を先に潰します。
CVE-2025-59887とCVE-2025-59888の仕組みとCVSSベクトルの違い
2件はどちらもWindowsがファイルを探す順番を突く脆弱性ですが、狙う場面と必要な権限が違います。JVN#48187396とNVDの記載をまとめると次のとおりです。
| 項目 | CVE-2025-59887 | CVE-2025-59888 |
|---|---|---|
| 分類 | CWE-427(検索パス) | CWE-428(引用符なし) |
| CVSS v3.1(Eaton) | 8.6 | 6.7 |
| 攻撃元・複雑さ | ローカル・低 | ローカル・高 |
| 必要な権限 | 不要(実行操作が必要) | 高い権限 |
| 影響(C/I/A) | 高/高/高 | 低/低/高 |
| 実行される権限 | インストーラの実行権限 | SYSTEM |
ベクトルはCVE-2025-59887がAV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H、CVE-2025-59888がAV:L/AC:H/PR:H/UI:N/S:C/C:L/I:L/A:Hです。CVE-2025-59888は、NVDに登録されたEatonの評価で機密性と完全性が「低」、可用性が「高」です。CVSSの各指標の読み方は脆弱性の種類とCVE・CVSSの仕組みで整理しています。
CVE-2025-59887:インストーラが同じフォルダーのDLLを読み込む欠陥
通常の非パッケージWindowsアプリでは、DLLをフルパスなしで読み込む際、Known DLLsなどの処理後に、アプリケーションのフォルダーをシステムフォルダーより先に検索します。UPS Companionの3.0より前のインストーラはこの検索を制御していないため、インストーラが読み込もうとするDLLと同じ名前の不正なDLLを検索対象のフォルダーに置かれると、攻撃者のDLLを読み込むおそれがあります。JVNの表現では「インストーラを実行している権限で、任意のコードを実行される」です。
インストールは管理者権限で行うことが多いため、成功すると攻撃者のコードも管理者権限で動きます。典型的なのは、ダウンロードフォルダーに先に不正なDLLを置いておく手口や、インストーラ一式をメールや共有フォルダーで渡して同じ場所で実行させる手口です。CVSSのUI:R(利用者の操作が必要)は、この「誰かがインストーラを実行する」ことを指します。この種の問題はUPS Companionに限らず、JVNがJVNTA#91240916としてWindowsアプリケーション全般のDLL読み込みの注意点をまとめています。開発ツールでも、CUDA Toolkitの脆弱性4件のうちCVE-2025-33231がWindows版のDLL検索パスの不備です。
CVE-2025-59888:引用符のない検索パスでSYSTEM権限のコードが動く欠陥
Windowsは、空白を含むパスが引用符で囲まれていないと、空白の手前で区切って実行ファイルを探します。たとえばC:\Program Files\Eaton\...\xxx.exeが引用符なしで登録されていると、最初に探すのはC:\Program.exeで、見つかればそれを実行する仕組みです。UPS Companionの3.0より前では、この引用符が欠けた検索パスがあり、JVNは「システムドライブ直下への書き込み権限を有するユーザによって、SYSTEM権限で任意のコードを実行される」と説明しています。
前提となる「システムドライブ直下への書き込み」は、Windowsの既定では管理者にしか許されていません。CVSSが6.7(AC:H・PR:H)にとどまるのはこのためです。ただし、業務アプリの都合でC:\直下のアクセス権を緩めているパソコンや、管理者権限を持つアカウントを複数人で共有しているサーバーでは、条件を満たしやすくなります。権限昇格の考え方は認可バイパスと権限昇格の仕組みで解説しています。
UPS Companionで影響を受けるバージョンと脆弱性公表までの経緯
影響を受けるのは「EATON UPS Companion 3.0より前のバージョン」で、JVN・JVN iPedia(JVNDB-2026-000005)・NVDの記載は一致しています。開発元の情報はEatonのセキュリティ公告ETN-VA-2025-1026で、2026年1月12日の改訂でv1.1になっています。
NVDへの登録からJVNでの公表までの時系列と報告者・調整機関の情報
| 日付 | 主体 | 内容 |
|---|---|---|
| 2025-12-26 | Eaton(CNA) | 2件のCVEを公開 |
| 2025-12-26 | CISA | SSVC判定を追記 |
| 2026-01-12 | Eaton | 公告をv1.1に改訂 |
| 2026-01-13 | JPCERT/CC・IPA | JVN#48187396を公表 |
| 2026-01-13 | IPA | JVN iPediaに掲載 |
報告者はGMOサイバーセキュリティ byイエラエ株式会社の松本 一真 氏で、開発者とIPAに届け出たあと、JPCERT/CCが情報セキュリティ早期警戒パートナーシップに基づいてEatonと調整しました。NVDの説明は「最新版のEUC(Eaton UPS Companion)で修正済みで、Eatonのダウンロードセンターで入手できる」としています。脆弱性の発見日と修正版の完成日は、JVNとNVDのどちらにも書かれていません。
CISA KEV・SSVC・EPSSで見る2026年11月時点の悪用状況
悪用状況と今後の悪用の見込みは、3つの公開データで検討できます。KEVとEPSSは2026年11月9日付のデータ、SSVCは2025年12月26日付の評価で、評価の時点が違う点に注意してください。
| 指標 | CVE-2025-59887 | CVE-2025-59888 |
|---|---|---|
| CISA KEV(2026.11.09版) | 未掲載 | 未掲載 |
| SSVC:Exploitation | none | none |
| SSVC:Automatable | no | no |
| SSVC:Technical Impact | total | total |
| EPSS(2026-11-09) | 0.261% | 0.189% |
| EPSSの百分位 | 18.0% | 8.5% |
CISAの既知の悪用された脆弱性カタログ(KEV)は1,773件を収録していますが、この2件はありません。SSVCの値は、CVEレコードにCISAが追記した判定(CISA-ADP、2025年12月26日付)です。「Technical Impact:total」は、脆弱なソフトウェアの動作を完全に制御される、またはそのソフトウェアが存在するシステムの全情報を開示される影響を指します。悪用の証拠が無いことと、悪用されたときの影響が小さいことは別です。FIRSTのEPSSは今後30日に悪用が観測される確率の推定です。CVE-2025-59887の0.261%は、同日にEPSSが評価したCVEの中で約18パーセンタイルで、8割強のCVEがこれより高い推定値です。
ただし、公開指標だけでは個別環境の危険度は決まりません。旧版のインストーラを実行する機会があるか、システムドライブ直下にファイルを置ける利用者がいるかを手元で確かめ、次の章の確認でUPS Companionが見つかった端末から更新の優先度を決めます。
手元のパソコンで版と引用符なしのパスを確かめるPowerShell手順
確認するのは、インストールされているUPS Companionのバージョンと、引用符なしで登録された実行パスが残っていないかの2点です。以下はWindowsの管理者権限のPowerShellで行う確認例です。ソフトウェア台帳やサービス一覧に表示されない場合は、アプリのバージョン表示やベンダーの手順でも確認してください。
# 1. インストール済みのUPS Companionの表示名とバージョン(3.0より前なら更新対象)
$keys = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*',
'HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*'
Get-ItemProperty $keys -ErrorAction SilentlyContinue |
Where-Object { $_.DisplayName -like '*UPS Companion*' } |
Select-Object DisplayName, DisplayVersion, InstallLocation
# 2. 引用符なしで空白を含む実行パスを持つサービス(UPS Companion以外も一覧に出る)
Get-CimInstance Win32_Service |
Where-Object { $_.PathName -notmatch '^\s*"' -and $_.PathName -match '^[^"]*\s[^"]*\.exe' } |
Select-Object Name, StartName, PathName
# 3. Windowsがインストールされたドライブ直下のACLを表示する(適用先、(IO)、拒否、WDなどを確認)
icacls "$($env:SystemDrive)\"
2つ目のコマンドは、引用符なしの空白入り実行パスが疑われるサービスの候補を表示します。引数中の空白や.exeにも一致するため、実行ファイルのパスと引数を分けて確認してください。UPS Companion以外のソフトが出てきた場合も、実行パスの引用符、実行アカウント、攻撃者が候補ファイルを配置できる場所かを確認し、問題がある場合はベンダーの更新情報を調べてください。3つ目のicaclsの結果では、BUILTIN\UsersやAuthenticated Usersの権限を、W(書き込み)やM(変更)の有無だけでなく、適用先と拒否エントリまで見ます。(IO)付きの権限は対象フォルダー自体には適用されず、WD(ファイルの追加)などの個別権限も判定に必要です。Windowsの既定では、C:\そのものに対して一般利用者に付いているのはフォルダー作成(AD)までで、直下にファイルは置けません。
台数が多い場合は、IT資産管理ツールのソフトウェア台帳でUPS Companionのバージョンを一覧にすると漏れを防げます。台帳の作り方はIT資産管理の目的とツールの選び方を参照してください。
UPS Companionの3.0以降への更新手順と更新できないときの暫定対処
根本的な対策は3.0以降への更新です。JVNも「開発者が提供する情報をもとに、最新版へアップデートしてください」としています。ただし、Eatonの製品ページに載っているUPS Companion 3.0.0の対応OSはWindows 10とWindows 11です。Windows Serverなどそれ以外のOSで使っている場合は、更新前にEatonへ移行方法を確認してください。
同じEatonの電源管理ソフトでも、Intelligent Power Protector(IPP)は別の公告ETN-VA-2025-1025の対象で、2026年4月14日付で修正版2.0が出ています。IPPと組み合わせて使うIntelligent Power Manager(IPM)は、2026年7月1日にBrightlayer Distributed IT-Liteへ改称されました。UPS Companionと並べてこれらも入れている環境では、製品ごとに公告と版を確認してください。
旧版の再利用を防ぐインストーラの入手方法と実行場所・更新後の確認手順
- インストーラはEatonの公式配布元から入手する。社内配布する場合は、公式配布物との同一性と保管先の書き込み権限を確認し、出所や完全性を確認できない一式は使わない。
- 入手したインストーラは、ほかのファイルが無い新しいフォルダーに置いて実行する(CVE-2025-59887の悪用条件を外す)。
- 更新後に上のPowerShellの1つ目で、バージョンが3.0以降になったことを確かめる。
- 更新後に2つ目のコマンドを再実行する。UPS Companionに関連する候補が残る場合は実行パスと引数を確認し、一覧から消えたことだけで修正済みとは判断せず、バージョン確認と併せて判定する。
注意したいのは、古いインストーラで再インストールしてしまうケースです。共有フォルダーに旧版のセットアップが残っていると、障害対応のときに誤って使われます。更新が終わったら旧版のインストーラは削除してください。
停電時の動作検証などですぐに更新できない場合の権限確認と暫定対処
停電時のシャットダウン動作を検証してから更新したい、といった理由ですぐに入れ替えられない場合は、攻撃の前提条件を外しておきます。CVE-2025-59888に対しては、C:\直下に一般利用者がファイルを作れないこと(上のicaclsの確認)と、管理者アカウントを共有していないことを確かめます。CVE-2025-59887に対しては、旧版のインストーラを実行しないことが、攻撃の前提条件を外すための対処です。この2つは攻撃条件から導いた補助策です。Eatonの公告も、更新できない場合の緩和策として、公式の配布元から入手すること、ホストへのアクセスを権限のある担当者に限って認証情報を共有しないこと、適切に設定したファイアウォールで守ることを挙げています。いずれも更新の代わりにはならないので、更新の予定は別に立ててください。
自社開発のWindowsインストーラとサービスで同じ欠陥を作らない実装
CVE-2025-59887と59888は、Windows向けのインストーラや常駐サービスを自社で作るときにも同じ形で入り込みます。利用者として更新するだけでなく、配布する側として押さえておく実装上の対策を2つ挙げます。
DLLの検索先をSystem32に限定する起動直後のAPI設定例
MicrosoftのDLLの検索順序の解説のとおり、通常の非パッケージアプリの既定の検索順序では、Known DLLsなどの処理後にアプリケーションのフォルダーが検索されます。インストーラはダウンロードフォルダーのような誰でもファイルを置ける場所で実行されるため、この既定が攻撃の入口になります。対策は、プロセスの起動直後にSetDefaultDllDirectoriesで検索先をSystem32に絞ることです。
#include <windows.h>
int WINAPI wWinMain(HINSTANCE h, HINSTANCE p, PWSTR cmd, int show)
{
// LOAD_LIBRARY_SEARCH フラグを個別指定しないDLL読み込みの既定検索先をSystem32に限定する
if (!SetDefaultDllDirectories(LOAD_LIBRARY_SEARCH_SYSTEM32)) {
return 1;
}
// 自前の DLL を読む場合はフルパスで指定する
HMODULE m = LoadLibraryExW(L"C:\\Program Files\\Example\\helper.dll", NULL,
LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR | LOAD_LIBRARY_SEARCH_SYSTEM32);
return m ? 0 : 1;
}
ただし、プログラムが起動する前にWindowsが自動で読み込むDLL(インポートテーブルに書かれたもの)には、この呼び出しは間に合いません。インストーラ作成ツールの側で同じ対策が入っているか、使っているツールの版も確かめてください。
サービス登録時に空白を含む実行パスを引用符で囲むsc.exeの書き方
サービスを登録するときは、空白を含む実行パス全体を引用符で囲みます。sc.exeで登録する場合は、外側の引用符の中にエスケープした引用符を入れます(次の例はコマンドプロンプト用で、PowerShellでは引用符の扱いが変わります)。
sc.exe create ExampleSvc binPath= "\"C:\Program Files\Example\example-svc.exe\"" start= auto
sc.exe qc ExampleSvc
sc.exe qcの結果のBINARY_PATH_NAMEで、実行ファイルのフルパスが開始・終了の引用符で囲まれ、引数がある場合は終了引用符の後に置かれていることを確認します。既存のサービスを直す場合は、レジストリのImagePathを書き換える前に、ベンダーの修正版が出ていないかを先に確かめます。
UPS Companionの共有環境・個人利用別の更新優先度
UPS Companionのような電源管理ソフトは、一度入れると停電訓練のときくらいしか触られず、更新が後回しになりがちです。しかも常駐サービスとして高い権限で動くため、Windowsの権限昇格の足場になりやすい種類のソフトです。同じ構造の問題は、セキュリティ製品のエージェント(Deep Security Agentの権限昇格の脆弱性)や、SYSTEM権限のプロセスが細工したDLLを読み込むWebSAM WinShareの脆弱性でも起きています。
判断の基準は単純です。UPSにつないだサーバーが業務で共有されている、または多くの端末に同じソフトを配っているなら、今回の2件は月例の更新と同じ扱いで早めに片付けます。UPSと1台のパソコンを個人で使っているだけで、管理者権限を自分しか持っていないなら、緊急度は下がります。ただしその場合でも、次にインストーラを実行する前には3.0以降を入手しておくべきです。周辺機器の付属ソフトやドライバーが入口になる攻撃の全体像は、サプライチェーン攻撃の3類型と対策で整理しています。
UPS Companionの更新計画には、停電時のシャットダウン試験と復旧手順の確認も含めます。社内の常駐ソフトやサーバーの設定に同じ種類の弱点が残っていないかをまとめて洗い出したい場合は、脆弱性診断・セキュリティ診断で第三者に確認してもらう方法もあります。
よくある質問
UPS Companionの脆弱性について、よく聞かれる質問をまとめます。
UPS Companionの脆弱性はインターネットから攻撃されますか?
2件ともCVSSの攻撃元区分はローカル(AV:L)で、ネットワーク越しに単独で侵入される種類ではありません。CVE-2025-59887は誰かが細工された場所でインストーラを実行すること、CVE-2025-59888はシステムドライブ直下に書き込める権限が前提です。ただし、ほかの手段で端末に入り込んだ攻撃者が、権限を上げる段階で使うことは考えられます。
どのバージョンに更新すればよいですか?
JVNとNVDの記載では、影響を受けるのは3.0より前のバージョンで、修正は最新版に含まれています。Eatonの公式ダウンロードセンターから、その時点で提供されている最新版を入手して更新してください。更新後はPowerShellの確認コマンドで、表示されるバージョンが3.0以降になったことを確かめます。
この脆弱性は実際に悪用されていますか?
CISA KEVの2026.11.09版には2件とも掲載されておらず、JVNにも悪用の記載はありません。CISAが2025年12月26日に付けたSSVC判定も「Exploitation:none」です。ただし、KEVに無いことだけで悪用報告が存在しないとは断定できず、悪用された場合の影響は「total」と判定されています。権限昇格の足場にされない環境かどうかは手元で確かめてください。
家庭で1台だけUPSを使っている場合も更新が必要ですか?
必要です。緊急度は家庭用か企業用かだけでなく、第三者のアクセス、ファイル配置権限、旧版インストーラを実行する予定で判断します。たとえば家庭のパソコンで管理者権限を自分だけが持っている場合は、CVE-2025-59888の前提を他人が満たすのは難しく、緊急度は下がります。一方、CVE-2025-59887は旧版のインストーラを実行したときに起きるため、再インストールの前には必ず最新版を入手してください。
引用符なしのパスはUPS Companion以外にもありますか?
あり得ます。引用符のない空白入りの実行パスは、Windowsのソフトで古くから見つかっている種類の不備です。本文のPowerShellの2つ目のコマンドは、UPS Companion以外も含めて確認対象の候補を表示するので、一覧に出たソフトはベンダーの更新情報を確かめてください。