イントロダクション:セキュリティツール自体のリスク管理
企業の端末管理において、セキュリティエージェントにはシステム全体の監視を行うために高度な権限が付与されるのが一般的です。しかし、この過剰な権限付与が逆に攻撃ベクトルとなるケースが増えています。2026 年 4 月、Tenable は自社のネットワークスキャンエージェント「Nessus Agent」に存在する重大なローカル特権昇格(LPE)脆弱性を公開しました。
この脆弱性は CVE-2026-33694 として登録され、Windows 環境での導入実績を持つ多くの組織に影響を及ぼしています。標準的なユーザー権限でログインした攻撃者が、本脆弱性を悪用することで SYSTEM 権限を取得できる点が特に懸念されています。
脆弱性情報概要
本問題はファイルシステムのリンク操作に関する不備(CWE-59)に基づいています。以下の表は主要な技術指標を示しています。
| 分類 | 詳細情報 |
|---|---|
| CVE ID | CVE-2026-33694 |
| 対象ソフトウェア | Tenable Nessus Agent for Windows (バージョン 11.1.2 以前) |
| CVSS v3 ベーススコア | 8.2 (High) |
| アクセス経路 | Local (物理またはリモートログインが必要) |
| 権限レベル | 低 (User) → 高 (System) |
| 修復ステータス | バージョン 11.1.3 で対応済み |
技術的メカニズム:Junction Point の悪用
本脆弱性の核心は、Nessus Agent が動作するワークディレクトリ内のクリーンアップ処理にあります。通常、バックグラウンドサービスとしての Nessus Agent は SYSTEM ユーザーとして実行されますが、内部のキャッシュ削除プロセス時にディレクトリ上のマッピングを適切に検証していません。
接続点 (Junction) とシンボリックリンクの違い
Windows におけるパス再指定には主に 2 種類の方法がありますが、利用者の権限要件が異なります。
| 特性 | シンボリックリンク (Symbolic Link) | 接続点 (Junction Point) |
|---|---|---|
| 作成権限 | 管理者権限または開発者モードが必要 | 対象ディレクトリへの書き込み権限のみ (一般ユーザー可) |
| サポート OS | Vista 以降 | 2000 以降 |
| オブジェクト対象 | ファイルおよびディレクトリ | ディレクトリのみ |
攻撃者は、特別な権限なしで作成可能な Junction Point を悪用します。
攻撃シーケンスの分析
- リンクの構築:
攻撃者は Nessus Agent の作業フォルダ(例:
C:\ProgramData\Tenable\Nessus Agent\)内に、システム重要な領域を指す Junction を作成します。例えば、Windows のインストーラー一時ディレクトリC:\Config.Msiへリンクを設定する手法が取られます。# 概念実証用のコマンド例 New-Item -ItemType Junction -Path "C:\Temp\ScanCache" -Value "C:\Config.Msi" - トリガーの実行: エージェントのメンテナンスタスクが発動し、そのキャッシュディレクトリ内にあるファイルを再帰的に削除しようとします。
- 権限昇格: 削除命令が Junction 先であるシステムディレクトリに対してSYSTEM権限で実行されます。これにより、インストーラー関連のファイル破壊や置き換えが可能になり、結果としてインストール処理時のコンテキストで任意コードを実行させることができます。
ビジネス影響度と波及リスク
単純な「PC 乗っ取り」の問題を超え、企業全体のスキャン基盤に関わるリスクです。
- 信頼の崩壊: 脆弱性スキャナ自体が悪意のある変更を許容した場合、検知精度の低下や誤ったレポート生成につながります。
- 横方向移動: 侵害されたエージェントから、中央管理サーバーへの認証情報を奪取し、社内ネットワーク全域の弱点情報を漏洩させる可能性があります。
- コンプライアンス: 金融業や医療機関では、既知の高危険度脆弱性の未放置は規制違反となり得ます。
防御および修復手順
4.1 パッチ適用の推奨
最も確実な対策は公式アップデートの適用です。Nessus Agent バージョン 11.1.3 以上へ移行する必要があります。集中管理環境では Tenable 管理画面から配布可能です。
4.2 応急措置(パッチ適用までの間)
即時更新が難しい環境では、以下のような権限制御によって脆弱性の悪用を制限できます。代理プロセスによる作業ディレクトリの保護設定を行います。
# ACL からの継承を無効化し、一般ユーザーからの書込禁止を設定
$acl = Get-Acl "C:\ProgramData\Tenable\"
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("Users","ReadAndExecute","ContainerInherit,ObjectInherit","None","Allow")
$acl.SetAccessRule($rule) # 必要に応じて Administrators と SYSTEM のフルコントロール維持
Set-Acl "C:\ProgramData\Tenable\" $acl
また、Windows Defender の ASR (Attack Surface Reduction) ルールを利用し、可疑なジャンクション作成をブロックすることも有効な手段です。
4.3 既存環境のバージョン確認スクリプト
大量の端末を対象とする場合、WMI クラスを使用した検索は負荷が高いため、レジストリキーを直接参照する方法に変換します。以下の PowerShell スクリプトは、ターゲット一覧を読み込み、各ホストのインストールバージョンを判定します。
$configFile = "targets.csv"
$validPath = "HKLM:\SOFTWARE\Tenable\Nessus Agent"
$thresholdVersion = [version]"11.1.3"
Get-Content $configFile | ForEach-Object {
$targetHost = $_.Trim()
try {
# リモートレジストリチェック
$regKey = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $targetHost)
$subKey = $regKey.OpenSubKey($validPath)
if ($subKey) {
$installedVer = [version]($subKey.GetValue("InstallVersion"))
Write-Output "[+] Host: $targetHost | Ver: $installedVer"
if ($installedVer -lt $thresholdVersion) {
Write-Warning "[-] RISK: Needs Update immediately."
} else {
Write-Output "[OK] Protected."
}
}
} catch {
Write-Error "[!] Connection Failed: $targetHost"
}
}
アーキテクチャ設計への示唆
本事案は、セキュリティ製品が持つ特権階層(Privilege Hierarchy)を見直す必要性を浮き彫りにしました。全ての機能を SYSTEM 権限で動作させるモデルは、単一障害点を生み出すリスクを含みます。将来的なセキュリティ製品の設計においては、機能ごとに最小権限の原則を適用し、サンドボックス技術を用いた分離が進むことが期待されます。
運用担当者としては、セキュリティツールへの過信を避け、定期的な監査と最新の脆弱性情報への対応体制の整備が不可欠です。