2026年7月.NET更新の適用手順|10.0.10・9.0.18・8.0.29と17件のCVE

2026年7月14日に公開された.NET servicing updateでは、.NET 10を10.0.10、.NET 9を9.0.18、.NET 8を8.0.29へ更新します。.NET Frameworkは、Windowsのバージョンとインストール済みの.NET Frameworkに対応する2026年7月の累積更新プログラムを適用してください。Microsoftは、.NET 10・9・8に影響する17件のCVEを、このservicing updateで修正済みとしています。(Microsoft for Developers)

実務上のポイントは、開発端末のSDKだけを更新して終わらせないことです。本番サーバーの共有runtime、ASP.NET Core Runtime、Windows Desktop Runtime、IIS Hosting Bundle、コンテナイメージ、self-containedアプリをそれぞれ確認し、必要な環境では再build・再deployまで実施する必要があります。

目次

2026年7月.NET servicing updateの更新先

2026年7月の修正を含むruntime patchと、それを収録したSDKは次のとおりです。SDKのバージョン番号とruntimeのバージョン番号は一致しないため、別々に確認してください。(GitHub)

使用中のbranch更新後のruntimeruntimeを含むSDK主な更新対象
.NET 1010.0.1010.0.302、10.0.110SDK、.NET Runtime、ASP.NET Core Runtime、Desktop Runtime、Hosting Bundle、コンテナ
.NET 99.0.189.0.316、9.0.119SDK、.NET Runtime、ASP.NET Core Runtime、Desktop Runtime、Hosting Bundle、コンテナ
.NET 88.0.298.0.423、8.0.129SDK、.NET Runtime、ASP.NET Core Runtime、Desktop Runtime、Hosting Bundle、コンテナ
.NET FrameworkOSごとに異なるSDKではなくWindows更新として配布Windows Update、WSUS、Microsoft Update Catalog

複数のSDKが記載されているのは、同じ.NET branchに異なるSDK feature bandが存在するためです。たとえば、現在10.0.1xx系を使用している環境では10.0.110、10.0.3xx系では10.0.302を選ぶと、feature bandを不用意に変更せずにセキュリティ修正を取り込めます。

global.jsonでSDKを固定しているプロジェクトは、SDKをマシンへインストールしただけでは新しいバージョンが選択されないことがあります。CI/CDの設定、開発コンテナ、GitHub ActionsやAzure PipelinesなどのSDK指定も併せて更新してください。(Microsoft Learn)

.NET 10・9・8で修正された17件のCVE

Microsoftの統合servicing update記事では、次の17件が.NET 10.0、.NET 9.0、.NET 8.0に適用される修正として掲載されています。(Microsoft for Developers)

CVE番号帯修正対象として掲載されたCVE
CVE-2026-473xxCVE-2026-47300、CVE-2026-47302、CVE-2026-47303、CVE-2026-47304
CVE-2026-505xxCVE-2026-50524、CVE-2026-50525、CVE-2026-50526、CVE-2026-50527、CVE-2026-50528
CVE-2026-506xxCVE-2026-50646、CVE-2026-50648、CVE-2026-50649、CVE-2026-50650、CVE-2026-50651、CVE-2026-50659
その他CVE-2026-56170、CVE-2026-57108

これらには、リモートコード実行、権限昇格、サービス拒否、改ざん、セキュリティ機能のバイパス、なりすましに分類される問題が含まれます。ただし、同じCVEでも.NETと.NET Frameworkで影響の説明が異なる場合があるため、リスク評価では対象製品ごとのMSRC情報を確認する必要があります。(GitHub)

CVE-2026-56170とCVE-2026-56158の表記差に注意

Microsoftの公式文書間には、CVE番号の表記が一致していない箇所があります。

統合servicing update記事ではCVE-2026-56170が掲載されています。一方、.NET 10.0.10、9.0.18、8.0.29の個別release notesでは、その位置にCVE-2026-56158が掲載されています。.NET Frameworkの2026年7月release notesにもCVE-2026-56158が記載されています。(Microsoft for Developers)

このため、更新完了の判定を手作業で転記したCVE一覧だけに依存するのは避けてください。変更管理票には参照した公式文書を記録し、技術的な適用判定は次のpatch versionを基準にするのが安全です。

  • .NET 10:10.0.10以上
  • .NET 9:9.0.18以上
  • .NET 8:8.0.29以上
  • .NET Framework:対象OSと導入済みバージョンに対応する2026年7月のKB

.NET Frameworkは17件のCVEとは別に確認する

「17件」という数字は、Microsoftの統合記事で.NET 10・9・8に対して示されたものです。.NET Frameworkの2026年7月累積更新には、重複するCVEに加えて.NET Framework固有のCVEも含まれており、公式release notesには18件のセキュリティ改善が記載されています。したがって、.NET 10・9・8のruntimeを更新しても、.NET Frameworkの更新を適用したことにはなりません。(Microsoft Learn)

同じWindows Serverで、ASP.NET Coreアプリと従来のASP.NET、Windowsサービス、WPFアプリが混在している場合は、次の2系統を個別に管理します。

  1. .NET 10・9・8のruntime、Hosting Bundle、アプリケーション成果物
  2. Windows Updateで提供される.NET Framework累積更新

更新方法はデプロイ方式によって異なる

.NETのセキュリティ更新で最も失敗しやすいのは、すべてのアプリを同じ方法で更新しようとすることです。特にframework-dependentとself-containedでは、必要な作業が大きく異なります。

デプロイ方式修正を反映するための作業再build・再deploy
framework-dependent実行ホストの共有runtimeを更新し、アプリのプロセスを再起動runtime修正だけなら既存バイナリの再buildは必須ではないが、検証と成果物統一のため推奨
self-containedpatched SDKとruntime packで再publishする必須
コンテナbuild用と実行用の両方のbase imageを更新し、イメージを再buildする必須
IIS上のASP.NET CoreWindows Hosting Bundleを更新し、アプリプールまたはIISを再起動するself-containedまたはコンテナなら必須
.NET FrameworkOSに対応する累積更新をWindows UpdateやWSUSで適用する通常はアプリの再build不要。再起動が必要になる場合あり

framework-dependentアプリは、実行環境にインストールされている同一major・minor内の最新patchへ、原則として自動的にroll-forwardします。一方、self-containedアプリはruntimeを成果物の中に含むため、サーバーへ新しい共有runtimeをインストールしても、既存成果物内のruntimeは更新されません。(Microsoft Learn)

更新前にSDK・runtime・アプリの状態を棚卸しする

最初に、開発端末、build agent、本番サーバーで次のコマンドを実行します。

dotnet --info
dotnet --list-sdks
dotnet --list-runtimes

dotnet --versionだけで判定するのは不十分です。このコマンドが示すのは、現在のディレクトリやglobal.jsonの条件に基づいて選択されたSDKです。インストール済みのすべてのSDKや、本番で使用されるruntimeを確認するには、--list-sdks--list-runtimesを使用します。(Microsoft Learn)

runtime一覧で確認する項目

ASP.NET Coreを実行するサーバーでは、少なくとも次の2系統を確認します。

Microsoft.NETCore.App 10.0.10
Microsoft.AspNetCore.App 10.0.10

WindowsのWPFまたはWindows Formsアプリでは、必要に応じて次のruntimeも確認します。

Microsoft.WindowsDesktop.App 10.0.10

.NET 9または.NET 8を使用している場合は、それぞれ9.0.18、8.0.29になっていることを確認してください。

ただし、使用していないDesktop Runtimeなどを、確認のためだけに追加インストールする必要はありません。アプリの種類に応じて必要なruntimeだけを管理します。

プロジェクトとCI/CDで確認する項目

リポジトリでは、次のファイルや設定を検索します。

global.json
*.csproj
*.fsproj
Dockerfile
docker-compose.yml
Directory.Build.props
GitHub Actionsのworkflow
Azure PipelinesのYAML

特に確認したいのは次の項目です。

  • global.jsonで古いSDKが固定されていないか
  • TargetFrameworknet10.0net9.0net8.0のどれか
  • SelfContainedtrueになっていないか
  • RuntimeIdentifierRuntimeIdentifiersが指定されているか
  • DockerfileのFROMが古いpatchやdigestを参照していないか
  • build agentに更新後のSDKが導入されているか

.NET 10・9・8を安全に更新する手順

使用中のSDK feature bandに合わせて更新する

まず、現在使用しているSDKのfeature bandを確認します。

現在の系統2026年7月の更新先
10.0.1xx10.0.110
10.0.3xx10.0.302
9.0.1xx9.0.119
9.0.3xx9.0.316
8.0.1xx8.0.129
8.0.4xx8.0.423

SDKを更新したら、global.jsonで完全なバージョンを固定している場合は、その値も変更します。

{
  "sdk": {
    "version": "10.0.302",
    "rollForward": "latestPatch"
  }
}

SDKのfeature bandを変更すると、コンパイラ、MSBuild、workload、analyzerなどの変更範囲が広がる場合があります。今回の目的がセキュリティ修正の適用であれば、まず同じfeature band内の更新を選ぶと変更範囲を抑えられます。

本番ホストに必要なruntimeを適用する

アプリの種類に応じて、更新するコンポーネントを選択します。

アプリの種類主に更新するコンポーネント
コンソール、バックグラウンドサービス.NET Runtime
Kestrelで動くASP.NET CoreASP.NET Core Runtime
IISで動くASP.NET CoreWindows Hosting Bundle
WPF、Windows Forms.NET Desktop Runtime
buildサーバー、開発端末.NET SDK

SDKには対応する.NET Runtimeが含まれるため、SDKをインストールしたbuild端末では、通常は同じruntimeを別途インストールする必要はありません。一方、本番サーバーにSDKを入れていない場合は、アプリに適したruntimeまたはHosting Bundleを個別に更新します。(GitHub)

コンテナのbuild stageとruntime stageを両方更新する

マルチステージbuildでは、最終stageだけでなくSDKを使用するbuild stageも確認します。.NET 10のASP.NET Coreアプリなら、たとえば次のように更新します。

FROM mcr.microsoft.com/dotnet/sdk:10.0.302 AS build

# restore、build、publish処理

FROM mcr.microsoft.com/dotnet/aspnet:10.0.10 AS final

# publish成果物をコピー

コンソールアプリではaspnetではなくruntime、self-containedアプリでは構成に応じてruntime-depsを使用します。

既存環境がAlpine、Ubuntu、Windows Server CoreなどのOS variantを指定している場合は、セキュリティ更新と同時に意図せずOS familyを変更しないようにしてください。たとえば-alpine-nobleなどのsuffixを維持したまま、patchまたはdigestを更新します。

base imageの最新版を取得してbuildする例は次のとおりです。

docker build --pull --no-cache -t sample-app:2026-07 .

レジストリ上のタグが更新されても、すでに稼働しているコンテナやPodの内容は自動的には置き換わりません。新しいイメージをbuildしてレジストリへpushし、Deployment、Container Apps、App Service、ECSなどの実行環境で再deployしてください。.NET公式のコンテナイメージも今回のreleaseに合わせて更新されています。(Microsoft for Developers)

restore・test・publishをpatched SDKで実行する

SDKを切り替えた後は、キャッシュされた古い成果物だけを再利用せず、CI/CDでrestoreから実行します。

dotnet restore
dotnet test -c Release
dotnet publish -c Release -o ./artifacts/publish

最低限、次のテストを実施します。

  • アプリケーションの起動とhealth check
  • 認証、認可、Cookie、トークン処理
  • HTTPS、外部API、プロキシ経由の通信
  • JSONやXMLのシリアライズ、デシリアライズ
  • ファイルアップロード、圧縮、画像処理
  • データベース接続とトランザクション
  • バックグラウンドジョブ、キュー、定期処理
  • IIS、Windowsサービス、systemdサービスの再起動

今回の更新にはセキュリティ修正だけでなく、非セキュリティ修正も含まれています。そのため、「patch更新だから動作確認は不要」と判断せず、主要な処理を対象に回帰テストを行ってください。(Microsoft for Developers)

.NET Frameworkの該当KBを選ぶ

.NET Frameworkには、.NET 10・9・8のような単一の「2026年7月patch version」はありません。Windowsのバージョンと、端末に入っている.NET Framework 3.5、4.7.2、4.8、4.8.1などの組み合わせによって適用されるKBが変わります。

代表的な更新は次のとおりです。(Microsoft Learn)

OS主な2026年7月.NET Framework更新
Windows 11 26H1.NET Framework 4.8.1:KB5101002、.NET Framework 3.5製品更新:KB5101014
Windows 11 25H2.NET Framework 3.5/4.8.1:KB5100998
Windows 11 24H2.NET Framework 3.5/4.8.1:KB5101001
Windows 11 22H2/23H2.NET Framework 3.5/4.8.1:KB5101004
Microsoft server operating system 24H2.NET Framework 3.5/4.8.1:KB5100998
Windows Server 2022更新提示用KB5102206。導入済みFrameworkに応じてKB5101010またはKB5101005
Windows 10 21H2/22H2更新提示用KB5102202またはKB5102203。導入済みFrameworkに応じてKB5101006またはKB5101000
Windows 10 1809/Windows Server 2019更新提示用KB5102201。導入済みFrameworkに応じてKB5100989またはKB5101008
Windows 10 1607/Windows Server 2016KB5099535またはKB5101007
Windows Server 2012/2012 R2OSとFrameworkのバージョンに対応するSecurity and Quality Rollup

Microsoftは、表中の「OS行のKB」が更新を提示するために使われ、端末のインストール済み更新には表示されない場合があると説明しています。監査や適用確認では、実際にインストールされた.NET Framework固有のKBを確認してください。(Microsoft Learn)

.NET Framework更新は、Windows Update、Windows Update for Business、Microsoft Update Catalog、WSUSから配布されます。影響するファイルが使用中だった場合は再起動が必要になるため、更新前に.NET Frameworkアプリを終了し、サーバーでは再起動を含むメンテナンス枠を確保します。Microsoftは2026年7月の.NET Framework更新について、現時点で既知の問題を認識していないとしています。(マイクロソフトサポート)

更新後に確認すべきこと

ホストにpatched runtimeが存在するか確認する

dotnet --list-runtimes
dotnet --list-sdks

使用中のbranchについて、次のいずれかが表示されることを確認します。

Microsoft.NETCore.App 10.0.10
Microsoft.AspNetCore.App 10.0.10

Microsoft.NETCore.App 9.0.18
Microsoft.AspNetCore.App 9.0.18

Microsoft.NETCore.App 8.0.29
Microsoft.AspNetCore.App 8.0.29

Windowsデスクトップアプリでは、該当するMicrosoft.WindowsDesktop.Appも確認します。

実行中のコンテナを確認する

新しいイメージから起動したコンテナ内で確認します。

docker run --rm <更新後のイメージ名> dotnet --info

Kubernetesでは、再deploy後のPodが新しいimage digestを使用していることを確認します。タグ名が同じでもdigestが古いままなら、実行環境は更新されていません。

self-containedアプリはホストのruntime一覧だけで判定しない

self-containedアプリでは、dotnet --list-runtimesに新しい共有runtimeが表示されても、配布済みアプリ内のruntimeが更新された証拠にはなりません。

次の情報を適用証跡として残します。

  • patched SDKを使用したCI/CDのbuildログ
  • publishを実行した日時
  • 成果物のハッシュ値
  • コンテナのimage digest
  • SBOMに記録されたruntime pack
  • ステージング環境と本番環境のデプロイID

.NET FrameworkのKBを確認する

Windows Updateの更新履歴、WSUS、Microsoft Configuration Manager、Intuneなどのレポートで、対象OSに対応した.NET Framework固有のKBが成功状態になっているか確認します。

更新後は、IISアプリ、Windowsサービス、タスクスケジューラ、WPFやWindows Formsの業務アプリを起動し、イベントログにCLRや.NET Runtime関連のエラーが発生していないか確認してください。

よくある適用ミス

  • 開発端末のSDKだけを更新し、本番サーバーのruntimeを更新していない
  • dotnet --versionだけを見て、ASP.NET Core RuntimeやDesktop Runtimeを確認していない
  • global.jsonが古いSDKを固定したままになっている
  • self-containedアプリなのに、サーバーの共有runtimeだけを更新している
  • Dockerfileのruntime stageだけを更新し、SDK stageを古いままにしている
  • base imageのタグを書き換えたが、イメージを再build・再deployしていない
  • IISサーバーで.NET Runtimeだけを更新し、Hosting Bundleを確認していない
  • .NET 10・9・8の更新だけで、同じサーバー上の.NET Frameworkも修正されたと判断している
  • 更新後にアプリプール、Windowsサービス、コンテナを再起動していない
  • CVE番号の転記だけで完了判定し、実際のruntime patchやKBを確認していない

.NET 8と.NET 9は.NET 10への移行計画も必要

2026年7月時点で、.NET 10はLTSのActive Support、.NET 9と.NET 8はMaintenance Supportに入っています。公式サポート期限は、.NET 9と.NET 8が2026年11月10日、.NET 10が2028年11月14日です。(Microsoft)

したがって、.NET 8または.NET 9を使用している組織は、今回のpatchを見送って直接.NET 10へ移行するのではなく、次の順序で対応します。

  1. まず9.0.18または8.0.29へ更新して現在の脆弱性を解消する
  2. 並行して.NET 10への互換性確認を開始する
  3. 2026年11月10日より前に本番移行を完了する
  4. .NET 8・9のruntime、SDK、コンテナイメージを環境から段階的に廃止する

セキュリティ更新とmajor version移行を一つの変更作業にまとめると、障害時の原因切り分けが難しくなります。緊急性の高いpatch適用と、.NET 10への移行は別の変更単位で管理するのが現実的です。

適用完了の判断基準

2026年7月.NET servicing updateは、インストーラーを実行しただけでは完了ではありません。次の項目をすべて満たした時点で、更新完了と判断します。

  • [ ] 使用中の全branchを10.0.10、9.0.18、8.0.29へ更新した
  • [ ] build agentのSDKとglobal.jsonを更新した
  • [ ] .NET Runtime、ASP.NET Core Runtime、Desktop Runtime、Hosting Bundleを用途別に確認した
  • [ ] self-containedアプリを再publish・再deployした
  • [ ] コンテナのbuild stageとruntime stageを更新した
  • [ ] 新しいimage digestでコンテナやPodを再作成した
  • [ ] 該当する.NET Frameworkの累積更新を適用した
  • [ ] 更新後のruntime一覧、KB、buildログ、image digestを証跡として保存した
  • [ ] 回帰テストと本番監視で異常がないことを確認した
  • [ ] .NET 8・9を使用中の場合は.NET 10への移行期限を設定した

最初に行うべき作業は、dotnet --list-sdksdotnet --list-runtimesによる棚卸しです。その結果を、プロジェクトのglobal.json、Dockerfile、self-contained設定、Windowsの.NET Framework更新履歴と突き合わせ、環境ごとの更新対象を確定してください。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次