.NET 10.0.6 servicing dropまとめ:RuntimeとASP.NET Core更新時の確認ポイント

.NET 10 runtime と ASP.NET Core を標準化しているチームにとって、.NET 10.0.6 は「小さなパッチ」ではなく、バックエンド/API/Web workloads 全体のアップグレード判断に使うべき servicing checkpoint です。結論としては、.NET 10.0.x を本番利用している場合は、最新パッチへの更新を前提に、ランタイム、ASP.NET Core、SDK、コンテナ、IIS Hosting Bundle、認証まわりの回帰確認をまとめて行うべきです。

この記事では、2026年4月20日時点で runtime と ASP.NET Core の v10.0.6 リリースがそろった servicing wave を整理します。Microsoft は2026年4月14日の April 2026 servicing release として、.NET 10.0.6 にセキュリティ修正と非セキュリティ修正が含まれることを案内しており、ASP.NET Core 10.0.6、.NET 10.0.6、Runtime 10.0.6 の changelog も公開されています。runtime と ASP.NET Core の GitHub release tag は、それぞれ2026年4月20日に公開されています。(Microsoft for Developers)

ただし、servicing release は短期間で後続パッチが出ることがあります。2026年4月21日には .NET 10.0.7 の out-of-band security update が案内され、10.0.6 後に一部アプリケーションで復号失敗が報告されたこと、CVE-2026-40372 の修正が含まれることが説明されています。そのため実務では、「10.0.6 の変更点を検証観点として使い、最終的な導入先は公開時点の最新 10.0.x にする」と考えるのが安全です。(Microsoft for Developers)

目次

.NET 10.0.6 servicing drop は何が起きた更新か

.NET 10.0.6 servicing drop は、新機能を大きく追加するメジャーアップデートではありません。主な意味は、.NET 10 runtime、ASP.NET Core、関連パッケージ、SDK、コンテナイメージ、Windows 向け Hosting Bundle を同じ 10.0.6 系にそろえる保守更新です。

.NET 10.0.6 の release notes では、10.0.6 runtime を含む SDK として 10.0.202 と 10.0.106 が示されています。また、SDK には対応する .NET Runtime が含まれるため、SDK を導入する開発環境では runtime や ASP.NET Core package を個別に入れる必要がないケースがあります。Docker images もこのリリース向けに更新されています。(GitHub)

観点.NET 10.0.6 で見るべきポイント実務での意味
.NET runtimeセキュリティ修正、暗号化、メール、基盤ライブラリの挙動バックエンド API、バッチ、認証基盤、外部連携の回帰確認が必要
ASP.NET CoreBlazor、JsonPatchDocument、IIS shutdown、WindowsHostingBundle などの修正Web アプリ、API、Blazor、IIS ホスティング環境で重点的に確認
SDK / CI10.0.202 / 10.0.106 など、利用 SDK の整合性開発者端末、CI、ビルドエージェントのバージョンずれを防ぐ
コンテナ.NET Docker images の更新docker build --pull や base image digest の見直しが必要
Windows / IISASP.NET Core Runtime、Hosting Bundle、ASP.NET Core ModuleIIS 配下のアプリはサーバー側の更新も忘れやすい

標準化チームが .NET 10.0.6 をチェックポイントにすべき理由

.NET 10 は LTS ですが、LTS だから一度入れれば終わりではありません。Microsoft のサポートポリシーでは、サポートを受けるには公開済みの最新パッチを適用している必要があると説明されています。.NET 10 は LTS / Active support として扱われ、2026年4月14日時点のポリシー表では .NET 10 の end of support は 2028年11月14日と示されています。(Microsoft)

つまり、.NET 10 に標準化するチームほど、毎月の servicing release を「任意の更新」ではなく「運用ルーチン」に組み込む必要があります。特に backend developers や web platform teams は、次のような理由で 10.0.6 を単なるバージョン番号として扱うべきではありません。

チームの状況なぜ重要かまず取るべき行動
.NET 10.0.x を本番利用中セキュリティ修正と非セキュリティ修正が累積される最新 10.0.x を対象にステージング検証を開始する
ASP.NET Core で認証を使っているCookie、Data Protection、トークン保護の不具合は本番影響が大きい既存 Cookie や保護済みトークンの復号テストを入れる
コンテナ運用しているホスト OS の更新だけではコンテナ内 runtime は変わらないbase image を pull し直し、イメージを再ビルドする
self-contained publish を使っているアプリに runtime が同梱されるため、サーバー更新だけでは反映されないpublish 環境を更新して成果物を作り直す
IIS / Windows Server で運用しているHosting Bundle や ASP.NET Core Module の更新を見落としやすいWeb サーバー単位で導入状況を棚卸しする

セキュリティ更新として見るべきポイント

.NET 10.0.6 の release notes では、このリリースに security fixes と non-security fixes が含まれると説明されています。関連する CVE として、CVE-2026-26171、CVE-2026-32203、CVE-2026-33116、CVE-2026-32178 などが示され、System.Security.Cryptography.Xml、EncryptedXml、System.Net.Mail まわりの説明も含まれています。(GitHub)

実務での判断基準は明確です。次のような機能を使っている場合は、通常の HTTP スモークテストだけでなく、該当機能の入力データを使った回帰確認を入れてください。

利用している機能確認するテスト例失敗時に起きやすい影響
EncryptedXml / XML 暗号化正常な XML、巨大な XML、不正な XML の処理外部連携失敗、CPU/メモリ負荷増大、例外増加
SAML / SOAP / 旧式 XML 連携署名・暗号化された既存メッセージの検証ログイン連携や基幹連携の停止
System.Net.Mail送信元、宛先、表示名、国際化ドメインを含むメール送信通知メール、パスワード再設定メールの失敗
ASP.NET Core 認証ログイン、ログアウト、Cookie 更新、CSRF 検証ログイン不能、セッション切れ、フォーム送信失敗

CVE の深刻度や影響範囲は MSRC の該当ページで最終確認すべきですが、アプリケーションチームの初動としては「自社アプリが該当 API を使っているか」「使っている場合は本番データに近い入力で再現テストがあるか」を確認することが重要です。

ASP.NET Core 10.0.6 で注目すべき修正領域

ASP.NET Core 10.0.6 の changelog では、Blazor の metadata comments、Newtonsoft JsonPatchDocument、Blazor template の migration ID、IIS shutdown hang、WindowsHostingBundle、trimming test などに関する修正や調整が並んでいます。すべての Web アプリに直接影響するとは限りませんが、該当機能を使っているチームは優先的に確認すべきです。(GitHub)

JsonPatchDocument を使う API は更新後の差分を確認する

JsonPatchDocument は、部分更新 API で使われやすい機能です。たとえば、ユーザー情報の一部だけを replace する、注文ステータスだけを変更する、といった PATCH エンドポイントで利用されます。

確認すべきテストは、正常系だけではありません。

テスト対象例
正常な patchreplace、add、remove が期待通り反映される
不正な path存在しないプロパティを指定した場合に想定のエラーになる
権限制御更新してはいけないフィールドが変更されない
バリデーションpatch 適用後の model validation が動く
ログ・監査変更前後の値が監査ログに残る

特に、フロントエンドや外部クライアントが JSON Patch を直接送る API では、更新後に「一部のリクエストだけ 400/500 になる」形で問題が表面化しやすいです。

Blazor を使う場合は build と初期表示だけで終わらせない

Blazor 関連では、metadata comments やテンプレート、WASM template tests に関する修正が含まれています。Blazor Server、Blazor WebAssembly、SSR を組み合わせているアプリでは、次の確認を入れると安全です。

確認項目見るべきポイント
初回表示ルーティング、レイアウト、認証必須ページが開けるか
フォームvalidation、submit、エラーメッセージ表示が崩れないか
JavaScript interopJS 連携、ファイルアップロード、DOM 操作が動くか
WASMrestore、publish、ブラウザ起動、キャッシュ更新が通るか
テンプレート由来の DBmigration ID や初期データの差分で起動エラーが出ないか

IIS / Windows Hosting Bundle は Web サーバー単位で確認する

IIS を使って ASP.NET Core アプリをホストしている場合、アプリケーションコードだけでなく、サーバー側の Hosting Bundle と ASP.NET Core Module も更新対象になります。.NET 10.0.6 の release notes では、Windows Server 上で単体アプリをホストするための Hosting Bundle が ASP.NET Core Module を含むと説明されています。(GitHub)

IIS 環境では、次のようなテストをステージングで実施してください。

操作確認内容
App Pool recycle再起動後に初回リクエストが成功するか
graceful shutdownデプロイ時や停止時にリクエストが中断されすぎないか
health checkロードバランサーが復帰を正しく検知するか
Windows service 連携バックグラウンド処理が二重起動しないか
ログ出力Event Viewer、stdout log、Application Insights などで異常が増えないか

Data Protection 利用アプリは 10.0.6 だけで判断しない

ASP.NET Core アプリで特に注意したいのが Data Protection です。GitHub issue #66335 では、10.0.5 以前で保護された secrets が 10.0.6 で unprotect できないという報告があり、実際の例外として System.Security.Cryptography.CryptographicException が示されています。(GitHub)

さらに Microsoft の .NET 10.0.7 out-of-band security update では、10.0.6 後に一部顧客から decryption failure が報告されたことが説明されています。(Microsoft for Developers)

このため、認証 Cookie、CSRF token、password reset token、メール確認 token、TempData、独自に保護した文字列を使うアプリでは、次の観点を必ずテストに入れてください。

確認項目具体例
旧バージョンで発行された Cookie10.0.5 以前でログインした状態から、更新後もアクセスできるか
既存トークンパスワード再設定、メール確認、招待リンクが更新後も検証できるか
新規発行トークン更新後に発行した token が再起動後も検証できるか
Key ringファイル共有、Blob Storage、Redis などの key ring 保存先が変わっていないか
ロールバック更新後に発行された Cookie や token を戻し先バージョンで扱えるか

本番判断としては、10.0.6 に固定して導入するのではなく、10.0.7 または公開時点の最新 10.0.x をターゲットにしてください。10.0.6 は「何を検証すべきか」を整理するためのチェックポイントとして使うのが現実的です。

アップグレード前に確認するバージョン棚卸し

.NET の更新で失敗しやすいのは、アプリケーション、開発環境、CI、コンテナ、本番サーバーで見ている runtime が違うことです。まずは、各環境で次のコマンドを実行し、結果を表にまとめてください。

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

dotnet --version は主に SDK バージョン確認に使います。runtime の確認には dotnet --info や dotnet --list-runtimes を合わせて使うのが安全です。

環境確認するもの見るべきポイント
開発者端末SDK、runtime、global.jsonローカルだけ古い SDK に固定されていないか
CI / build agentSDK、NuGet restore、publish outputbuild image が古くないか
ステージングruntime、ASP.NET Core Runtime、Hosting Bundle本番と同じ構成か
本番 VMruntime、Hosting Bundle、OS patch更新対象サーバーの漏れがないか
コンテナbase image、image digest、runtime inside container古い image を再利用していないか
self-contained apppublish output に含まれる runtimeサーバー更新だけで満足していないか

global.json と SDK 固定の注意点

CI で再現性を保つために global.json を使うのは有効です。ただし、global.json は runtime のバージョン指定ではなく、.NET CLI が使う SDK バージョンを選ぶための仕組みです。Microsoft Learn では、SDK バージョンの選択はプロジェクトが対象とする runtime version の指定とは独立していると説明されています。(Microsoft Learn)

また、global.json の version には 10.0 や 10.0.x のような指定は使えません。完全な SDK バージョン番号が必要で、ワイルドカードやバージョン範囲もサポートされません。(Microsoft Learn)

標準化チームでは、次のような方針に分けると管理しやすくなります。

方針例向いているケース
完全固定特定の SDK だけを使うリリース再現性を最優先する製品チーム
latestPatch同一 feature band 内の最新パッチを許可セキュリティ更新を早く取り込みたい CI
latestFeature同じ major/minor 内で新しい feature band を許可開発速度を重視しつつ .NET 10 内に収めたいチーム
disable完全一致以外を拒否一時的な検証や不具合切り分け

runtime 側の roll-forward にも注意が必要です。Microsoft Learn では、patch version roll-forward は自動で行われ、アプリは対象 major/minor の最新インストール済みパッチを使うと説明されています。framework-dependent deployment では、実行環境で利用可能な最新の .NET security patch に自動的に roll forward します。(Microsoft Learn)

一方で、RollForward を Disable にする設定は、最新パッチへ roll forward する機能を無効にするため、一般利用には推奨されず、テスト用途向けと説明されています。(Microsoft Learn)

バックエンドと Web workloads 向けアップグレード手順

.NET 10 runtime and ASP.NET Core を同時に運用するチームでは、アップグレードを「SDK を入れ替える作業」だけにしないことが重要です。次の順序で進めると、影響範囲を見落としにくくなります。

手順作業完了条件
現状把握dotnet --info、runtime、SDK、container image、Hosting Bundle を棚卸し開発、CI、ステージング、本番の差分が見えている
導入先パッチ決定10.0.6 ではなく、公開時点の最新 10.0.x を確認セキュリティパッチを含む最新リリースを対象にしている
SDK 更新開発者端末と CI の SDK をそろえるbuild log に想定 SDK が出ている
パッケージ更新Microsoft.AspNetCore.*、Microsoft.Extensions.*、認証系 package を確認lock file や central package management が更新済み
publish / image 再作成self-contained、container、IIS 用成果物を作り直すruntime を含む成果物が最新になっている
ステージング検証認証、API、Blazor、IIS、外部連携を確認本番相当データで重大な回帰がない
本番展開canary または段階展開を行うエラー率、ログイン失敗率、CPU/メモリが安定している
事後確認old token、old cookie、rollback plan を確認24〜48時間程度の運用指標に異常がない

回帰テストで優先すべきチェックリスト

すべてのテストを一から作り直す必要はありません。大切なのは、.NET 10.0.6 servicing drop の影響が出やすい場所を、既存テストに追加することです。

領域優先テスト失敗時の典型的なサイン
認証 / 認可Cookie login、OIDC callback、logout、role check401/403 増加、ログインループ
Data Protection旧バージョン発行 token の unprotectCookie 失効、招待リンク失敗
Web APIGET/POST/PATCH/DELETE の主要シナリオ400/500 増加、model binding 失敗
JSON Patchadd、replace、remove、不正 path一部 PATCH だけ失敗
XML / 暗号化EncryptedXml、SAML、SOAP、署名付き XML外部 ID 連携や基幹連携の停止
メールパスワード再設定、通知、送信者名メール送信失敗、文字化け
Blazor初期表示、フォーム、JS interop、WASM publish画面崩れ、ブラウザエラー
IISApp Pool recycle、shutdown、health checkデプロイ直後の 502/503
コンテナ起動、liveness/readiness、runtime versionPod 再起動、古い runtime の残存
パフォーマンス起動時間、P95/P99 latency、GC、CPU目立つ遅延やリソース増加

特に Web platform teams は、「新規ログインできるか」だけでなく「更新前に発行された Cookie や token が更新後に扱えるか」を必ず見るべきです。ここを省略すると、ステージングでは成功しても、本番ユーザーだけがログイン不能になる可能性があります。

コンテナ運用で見落としやすいポイント

ASP.NET Core アプリをコンテナで運用している場合、サーバーに .NET runtime を入れ替えても、コンテナ内の runtime は更新されません。base image を更新し、アプリを再ビルドし、再デプロイする必要があります。

実務では次の流れを推奨します。

docker build --pull -t example-api:dotnet10-latest .
docker run --rm example-api:dotnet10-latest dotnet --info

FROM mcr.microsoft.com/dotnet/aspnet:10.0 のように floating tag を使っている場合は、build 時点で取得される image が変わる可能性があります。再現性を重視する本番環境では digest pinning を使い、セキュリティ更新時に意図的に digest を更新する運用にすると、監査しやすくなります。

一方で、digest を固定したまま放置すると、古い runtime を使い続ける原因になります。標準化チームは、月次の servicing release に合わせて「base image の digest 更新」「脆弱性スキャン」「ステージング deploy」「本番 deploy」を一つの運用手順にまとめておくべきです。

よくある失敗と回避策

失敗パターンなぜ危険か回避策
dotnet --version だけ見て完了にするSDK しか見ておらず runtime の差分を見落とすdotnet --info と --list-runtimes も確認する
コンテナを再ビルドしない古い runtime が image 内に残るdocker build --pull と runtime 確認を CI に入れる
self-contained app を再 publish しないアプリ同梱 runtime が古いままになるpublish 環境を更新して成果物を作り直す
Data Protection の旧 token を試さない本番ユーザーだけログイン不能になる旧バージョン発行 Cookie/token のテストを用意する
IIS Hosting Bundle を更新しないサーバー側 module が古いままになるWeb サーバー単位で更新台帳を管理する
global.json を古い SDK に固定したままにするCI だけ古い SDK で build されるSDK 方針を決め、rollForward を明示する
patch release だから無検証で本番投入する認証、暗号化、外部連携は小さな変更でも影響が大きい影響領域だけでも重点回帰テストを実施する

.NET 10 標準化チームの次のアクション

.NET 10.0.6 servicing drop は、.NET 10 runtime and ASP.NET Core を本番標準にするチームにとって、更新運用を整える良いタイミングです。やるべきことは、新機能の評価ではなく、最新パッチを安全に取り込むための仕組み作りです。

まず、開発、CI、ステージング、本番、コンテナ、IIS のバージョン棚卸しを行ってください。次に、10.0.6 ではなく公開時点の最新 10.0.x を導入対象に決め、Data Protection、認証、JsonPatch、Blazor、IIS、コンテナを中心に回帰テストを実施します。最後に、毎月の servicing release をセキュリティメンテナンスの定例作業として組み込み、SDK、runtime、ASP.NET Core Runtime、Hosting Bundle、container image を同じリリースサイクルで管理しましょう。

.NET 10 に標準化するメリットは、LTS の安定性だけではありません。パッチ更新を素早く、安全に、再現性高く適用できる運用を作ることで、バックエンドと Web platform の両方を長期的に保守しやすくなります。

この記事を書いた人

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

コメント

コメントする

目次