Windows の KEV 2件を、ビルド番号1つで「当たり」か判定する

CISA が 2026-09-08 に KEV へ追加した Windows のローカル権限昇格が2件ある。どちらも是正期限は 2026-09-22 である。

CVE 対象 CWE CVSS 3.1
CVE-2026-85880 Windows ALPC CWE-122 / CWE-908 7.8 High
CVE-2026-81963 Windows Update スタック CWE-59 / CWE-284 7.8 High

ベクタは2件とも AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H で同じである。ローカルで、低い権限を持った攻撃者が SYSTEM まで上がれる型だ。

やっかいなのは対象の切り分け方で、Microsoft の更新は KB 番号ではなくビルド番号のリビジョンで切られている。ここを取り違えると「当てたつもりで当たっていない」が起きる。

2件は別のものを見ている

CVE-2026-85880 は ALPC(Advanced Local Procedure Call)のヒープバッファオーバーフローである。NVD の説明は1文だけ。

“Heap-based buffer overflow in Windows ALPC allows an authorized attacker to elevate privileges locally.”

ALPC は Windows のプロセス間通信の土台で、ユーザーモードのプロセスとシステムサービスのやり取りに広く使われている。つまり攻撃面がどこにでもある。対象は Windows 10 系と Windows Server 2012 / 2012 R2 / 2016 / 2019 / 2022 で、Windows 11 は NVD の適用範囲に入っていない

CVE-2026-81963 のほうは link following、いわゆるシンボリックリンク追跡である。

“Improper link resolution before file access (‘link following’) in Windows Update Stack allows an authorized attacker to elevate privileges locally.”

こちらは Windows 11 と Windows Server 2025 が対象で、Windows 10 は適用範囲に入っていない。2件は補い合う関係になっていて、どちらか片方だけ見ていると自分の環境を見落とす。

修正済みのビルド番号

NVD の適用範囲から、修正が入っているリビジョンを取り出すとこうなる。この番号未満なら対象である。

CVE-2026-81963(Windows 11 / Server 2025)

製品 修正済みビルド
Windows 11 23H2 10.0.22631.7582
Windows 11 24H2 10.0.26100.9445
Windows 11 25H2 10.0.26200.9445
Windows 11 26H1 10.0.28000.2954
Windows Server 2025 10.0.26100.33438

CVE-2026-85880(Windows 10 / Server)

製品 修正済みビルド
Windows 10 1607 / Server 2016 10.0.14393.9512
Windows 10 1809 / Server 2019 10.0.17763.9245
Windows 10 21H2 10.0.19044.7725
Windows 10 22H2 10.0.19045.7725
Windows Server 2022 10.0.20348.5622
Windows Server 2012 6.2.9200.26349
Windows Server 2012 R2 6.3.9600.23397

実際に試す

まず自分のビルドを出す。winver でも出るが、リビジョンまで数値で扱いたいのでコマンドで取る。

1
[System.Environment]::OSVersion.Version

これだと Revision が 0 になることがあるので、実際のリビジョンはレジストリから取るほうが確実である。

1
2
$cv = Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion'
"{0}.{1}.{2}.{3}" -f 10, 0, $cv.CurrentBuildNumber, $cv.UBR

実行例(Windows 11 Home 25H2)。

1
10.0.26200.9457

判定まで一息にやるなら、次のスクリプトを貼る。該当する行だけを出すので、何も出なければ2件とも対象外である。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$cv  = Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion'
$now = [version]("10.0.{0}.{1}" -f $cv.CurrentBuildNumber, $cv.UBR)

$fixed = @(
@{ cve='CVE-2026-81963'; name='Windows 11 23H2'; build=22631; fix='10.0.22631.7582' },
@{ cve='CVE-2026-81963'; name='Windows 11 24H2'; build=26100; fix='10.0.26100.9445' },
@{ cve='CVE-2026-81963'; name='Windows 11 25H2'; build=26200; fix='10.0.26200.9445' },
@{ cve='CVE-2026-81963'; name='Windows 11 26H1'; build=28000; fix='10.0.28000.2954' },
@{ cve='CVE-2026-85880'; name='Windows 10 1607/2016'; build=14393; fix='10.0.14393.9512' },
@{ cve='CVE-2026-85880'; name='Windows 10 1809/2019'; build=17763; fix='10.0.17763.9245' },
@{ cve='CVE-2026-85880'; name='Windows 10 21H2'; build=19044; fix='10.0.19044.7725' },
@{ cve='CVE-2026-85880'; name='Windows 10 22H2'; build=19045; fix='10.0.19045.7725' },
@{ cve='CVE-2026-85880'; name='Windows Server 2022'; build=20348; fix='10.0.20348.5622' }
)

"現在のビルド: $now"
$hit = $fixed | Where-Object { $_.build -eq $cv.CurrentBuildNumber }
if (-not $hit) { "この一覧に無いビルドです。NVD の適用範囲を直接確認してください"; return }
foreach ($h in $hit) {
if ($now -lt [version]$h.fix) { "対象: $($h.cve) / $($h.name) / 修正済みは $($h.fix)" }
else { "対象外: $($h.cve) / $($h.name)" }
}

25H2 のビルド 26200.9457 で走らせた実際の出力。修正済みリビジョン 26200.9445 を既に超えているので、対象外と出る。

1
2
現在のビルド: 10.0.26200.9457
対象外: CVE-2026-81963 / Windows 11 25H2

リビジョンが 9445 に届いていない端末では、代わりに 対象: CVE-2026-81963 / Windows 11 25H2 / 修正済みは 10.0.26200.9445 の行が出る。9457 と 9445 のように、差が10ちょっとしかないことがある。目視で「だいたい新しいから大丈夫」と判断せず、数値で比べること。

Windows Server 2025 はビルド番号が Windows 11 24H2 と同じ 26100 だが、修正済みリビジョンが 33438 と大きく違う。 上のスクリプトは 24H2 として判定してしまうので、Server 2025 では手で 33438 と比べること。同じビルド番号でもサーバ版とクライアント版でサービスブランチが別なのが理由である。

適用済みの更新を確認するなら次を使う。

1
Get-HotFix | Sort-Object InstalledOn -Descending | Select-Object -First 5 HotFixID, InstalledOn

ただし Get-HotFix は累積更新を取りこぼすことがあるので、最終的な判定はビルド番号で行うのが確実である。

期限までに当てられないとき

どちらも PR:L、つまり何らかのコードを実行できる状態が前提になる。ネットワーク越しに直接踏まれる型ではないので、優先順位は次のように付けられる。

  1. 利用者が任意のコードを実行できる端末・サーバ(共有開発機、ビルドサーバ、RDS のセッションホスト)を先に当てる。
  2. 単一利用者の端末は、初期侵入の後段として使われる想定なので、その次。
  3. どちらも UI:N なので、利用者の操作を必要としない。「不用意な操作をしないよう周知する」は緩和策にならない

まとめ

  • KB 番号ではなくビルド番号のリビジョンで判定する。 Microsoft の適用範囲はそこで切られている。
  • 2件は対象 OS が重ならない。 Windows 10 系と Windows 11 系で見るべき CVE が違う。
  • Server 2025 は Windows 11 24H2 と同じビルド番号なのに修正リビジョンが違う。 ここが一番踏みやすい。

日々の KEV 追加と是正期限はCVE Watchで追える。


出典(いずれも 2026-09-20 に確認)

  • NVD: CVE-2026-85880(CVSS 7.8 / CWE-122, CWE-908 / 適用範囲のビルド番号)
  • NVD: CVE-2026-81963(CVSS 7.8 / CWE-59, CWE-284 / 適用範囲のビルド番号)
  • CISA KEV カタログ(catalogVersion 2026.09.18): 2件とも追加日 2026-09-08、是正期限 2026-09-22
  • Microsoft MSRC の各 CVE ページ(msrc.microsoft.com/update-guide/vulnerability/<CVE-ID>

Windows の KEV 2件を、ビルド番号1つで「当たり」か判定する
https://blog.hashito.biz/2026/09/20/windows-kev-2026-09-build-number-check-alpc-update-stack/
著者
hashito
作成日
2026年9月20日
著作権