.NETの脆弱性は、実行環境(ランタイム・ASP.NET Core)とNuGetパッケージで、確かめる場所も直し方も違います。2026年10月26日(日本時間)の臨時の更新、KEVに載っている古いパッケージ、11月10日に迫る.NET 8・9のサポート終了をまとめ、自分の環境が対象かを確かめる手順を説明します。
- 10月26日の臨時の更新で、.NETは8.0.33・9.0.22・10.0.14になりました。自己完結型とNativeAOTのアプリは作り直しが必要です。
- .NET 8と.NET 9のサポートは2026年11月10日に終わります。上げる先は.NET 10です。
- NuGetパッケージは
dotnet list package --vulnerable --include-transitive、実行環境はdotnet --list-runtimesで、別々に確かめます。
01.NETで今確かめたい脆弱性
.NETでは、実行環境(ランタイム・ASP.NET Core)の脆弱性と、NuGetパッケージの脆弱性を分けて確かめます。前者はMicrosoftの月例・臨時の更新で直り、後者はパッケージの版を上げて直します。2026年10月26日(日本時間)には臨時の更新が出ました。[1]
| 脆弱性・問題 | 主な対象・条件 | 修正・対応 | 詳細 |
|---|---|---|---|
| Brotliの展開で範囲外の書き込み CVE-2026-111497 | 全OS。ASP.NET Coreのリクエスト展開でbrを使う、HttpClientの自動展開でBrotliかAllを指定する、BrotliStreamなどで信頼できないデータを展開する場合。.NET Frameworkは対象外。 | 8.0.33 / 9.0.22 / 10.0.14。NativeAOTの実行ファイルは作り直しが必要。 | Microsoftのアドバイザリ[2] |
| ソケットのメモリ破壊 CVE-2026-70197 | Windows。SocketAsyncEventArgsをIPv4とIPv6のUDPソケットで使い回す場合。10月の月例更新では直りきらず、10月26日に修正し直し。 | 8.0.33 / 9.0.22 / 10.0.14。自己完結型のアプリは作り直して配置し直す。 | Microsoftのアドバイザリ[3] |
| Blazor WebAssemblyのデバッガーでコード実行 CVE-2026-102870 | .NET 10・11。攻撃者が操作できる値を含む式をデバッグ中に評価すると、開発者の端末でコードが動くおそれ。 | Microsoft.AspNetCore.Components.WebAssembly.Server・.DevServerを10.0.14へ。ランタイムの更新だけでは直らない。 | Microsoftのアドバイザリ[4] |
| AjaxPro(Ajax.NET Professional)の逆シリアル化 CVE-2021-23758 | AjaxNetProfessional・ajaxpro.2を使うASP.NETアプリ。2026年8月26日にKEVへ追加。 | GitHub Advisoryの修正版は21.11.29.1(NuGetにあるのは21.12.8.1以降)。KEVは使用の中止か移行も挙げています。 | GHSA-6r7c-6w96-8pvw[5][6] |
| .NET Frameworkの情報漏えい CVE-2024-29059 | .NET Framework。ObjRefのURIが漏れ、コード実行につながるとKEVが説明。2025年2月4日にKEVへ追加。 | 2024年1月の更新で修正済み(Microsoftの記載)。 | MSRCの記載[5][7] |
| ImageSharpでプロセスが終了 CVE-2026-106113 | 浮動小数点のTIFFを読み込み、HistogramEqualization()をかける処理。 | 4.1.2以上・3.2.0。3.2.0からビルドにライセンスキーが必要。 | 記事 |
上の3件(10月)のCVSSはMicrosoftの評価で8.1〜8.8、悪用の成熟度は「未証明(E:U)」です。KEV(2026年10月30日版)に、2026年に公表された.NET本体の脆弱性は載っていません。KEVに載っているのは、AjaxProのような古いパッケージと.NET Frameworkです。[5]
02.NETのサポート期限と更新先
| 系列 | 種類 | 最新の修正版(10月26日) | サポート終了 |
|---|---|---|---|
| .NET 10 | LTS | 10.0.14 | 2028年11月14日 |
| .NET 9 | STS | 9.0.22 | 2026年11月10日 |
| .NET 8 | LTS | 8.0.33 | 2026年11月10日 |
| .NET 7以前 | — | — | 終了済み(.NET 6は2024年11月12日) |
| .NET Framework 4.6.2 | OSの部品 | Windows Updateで配布 | 2027年1月12日 |
| .NET Framework 4.7〜4.8.1 | OSの部品 | Windows Updateで配布 | 終了日の記載なし(OSのサポートに従う) |
| .NET Framework 3.5 SP1 | 単独の製品(Windows 10 1809以降) | Windows Updateで配布 | 2029年1月9日 |
日付はMicrosoftの案内の米国太平洋時間です。[8][9].NET 8と.NET 9は同じ日にサポートが終わります。9へ上げても期限は延びないため、上げる先は.NET 10(10.0.14)です。.NET 11は2026年11月1日の時点でRC3(プレリリース)で、11月10日〜13日の.NET Confで公開される予定です。[10]サポート終了後は、上の表のような臨時の更新も届かなくなります。
03NuGetパッケージの脆弱性を確かめるコマンド
NuGetパッケージは、dotnet restoreのたびにNuGet Auditが脆弱性を確かめ、NU1901〜NU1904の警告を出します(.NET 8 SDK 8.0.100以降)。既定では直接参照だけを見ますが、net10.0以降を対象にするプロジェクトでは間接依存も含めて見ます。[11]一覧で確かめるときは次のコマンドを使います。--include-transitiveを付けないと間接依存が出ません。[12]
# .NET 9 SDK以前
dotnet list package --vulnerable --include-transitive
# .NET 10 SDK(名詞が先の形)
dotnet package list --vulnerable --include-transitive
dotnet package list --vulnerable --include-transitive --format json > vuln.json
# 間接依存を持ち込んでいるパッケージをたどる
dotnet nuget why MyApp.csproj AjaxNetProfessional
# 対象の版へ上げる(.NET 10 SDK)
dotnet package update --vulnerableこのコマンドが見るのはプロジェクトが参照するパッケージで、マシンに入っている実行環境の版は別に確かめます。dotnet sdk checkは、入っているSDKとランタイムが最新か、サポート切れかを表示します。[13]
dotnet --list-runtimes
dotnet sdk checkCIでは、NU1903(高)・NU1904(緊急)をWarningsAsErrorsに入れると、該当するパッケージがあるときにビルドを止められます。[11]
04.NETアプリの確認の進め方
- lockファイル:
RestorePackagesWithLockFileをtrueにするとpackages.lock.jsonに間接依存まで含めた版が残ります。CIでdotnet restore --locked-modeを使うと、記録と違う版になったときに失敗します。[14] - 間接依存の固定:間接依存だけを上げたいときは、上位のパッケージを先に上げ、だめなら修正版を直接参照するか、
Directory.Packages.propsの推移的な固定を使います。[11] - 配布の形:サーバーの.NETを更新して直るのは、フレームワーク依存のアプリだけです。自己完結型は作り直して配置し直し、NativeAOTは実行ファイルに組み込まれたBrotliの処理が残るため作り直します。更新の後はアプリを再起動します。[2][3]
- コンテナ:イメージのタグが
8.0のままでも、古いイメージを使い続けていれば中のランタイムは古いままです。動いているコンテナでdotnet --list-runtimesを実行し、10.0.14などになっているかを見ます。 - 配布元の反映:10月28日には、UbuntuのパッケージやAzure App Serviceでまだ10.0.13だという利用者の報告がありました。OSのパッケージやクラウドの実行環境では、反映されたかを版の番号で確かめます。[15]
- Linuxのtar.gzでの導入:Microsoftのtar.gzで入れた.NET 8・9のASP.NET Coreは、CVE-2026-114148のため、アドバイザリに沿って入れ直しが必要です。[1]
- .NET Framework:NuGet Auditは
packages.configではVisual Studio 2022 17.10以降で動きます。実行環境はWindows Updateの適用状況で確かめます。[11]
05.NETの解説記事
よくある質問
NuGet Auditの警告が出なければ、.NETの実行環境も対策済みですか?
NuGet Auditが見るのはプロジェクトが参照するパッケージです。Brotliの件(CVE-2026-111497)のようなランタイムの脆弱性は、dotnet --list-runtimesやコンテナの中の版で別に確かめます。
自己完結型で配布しているアプリは、サーバーの.NETを更新すれば直りますか?
直りません。自己完結型はアプリにランタイムが入っているため、修正版のSDKで作り直して配置し直します。NativeAOTの実行ファイルも同じです。
.NET 8のサポートが終わる前に、.NET 9へ上げればよいですか?
.NET 9のサポートも2026年11月10日に終わります。サポートを続けて受けるには、2028年11月14日までの.NET 10へ上げます。
出典・参考資料
- Microsoft:.NET October 2026 out-of-band security updates(dotnet/announcements #496)2026-10-26(日本時間) / 臨時の更新の版、対象のCVE、.NET Frameworkは対象外、tar.gzの入れ直し
- Microsoft:CVE-2026-111497 .NET Brotli Decoder Out-of-bounds Write(#494)2026-10-26(日本時間) / 対象の機能、修正版、CVSS 3.1 8.1(Microsoft)、回避策、NativeAOTの作り直し
- Microsoft:CVE-2026-70197 .NET and Visual Studio Remote Code Execution(#493)2026-10-13公表(米国時間)・10-26再公表(日本時間) / Windowsの条件、修正版、CVSS 3.1 8.1、自己完結型の作り直し
- Microsoft:CVE-2026-102870 ASP.NET Core Remote Code Execution(#492)2026-10-13公表(米国時間)・10-26更新(日本時間) / Blazor WebAssemblyのデバッガーのパッケージと修正版、CVSS 3.1 8.8
- CISA:Known Exploited Vulnerabilities Catalog(2026.10.30版)2026-10-30 / CVE-2021-23758(2026-08-26追加)とCVE-2024-29059(2025-02-04追加)の掲載、2026年公表の.NET本体のCVEが無いこと
- GitHub Advisory Database:GHSA-6r7c-6w96-8pvw2021-12-08収録・2026-02-04更新(日本時間) / AjaxNetProfessionalの対象(21.11.29以下)と修正版21.11.29.1
- Microsoft:CVE-2024-29059 .NET Framework Information Disclosure Vulnerability2024-03-22公表・05-08更新 / 2024年1月の更新で修正済みであること、CVSS 3.1 7.5(Microsoft)
- Microsoft:.NET and .NET Core Support Policy2026-11-01確認 / 各系列の最新版とサポート終了日
- Microsoft Learn:Microsoft .NET Framework(Lifecycle)2026-11-01確認 / .NET Frameworkの各版のサポート終了日、3.5 SP1の扱い
- Microsoft:.NET Conf 20262026-11-01確認 / .NET Conf(11月10日〜13日)が.NET 11の公開の催しであること
- Microsoft Learn:Auditing package dependencies for security vulnerabilities2026-07-07更新 / NuGet Auditの既定、NuGetAuditModeの既定、警告コード、間接依存の直し方、packages.configの対応
- Microsoft Learn:dotnet package list2025-12-17更新 / --vulnerable・--include-transitive・--format json、.NET 10での名詞が先の形
- Microsoft Learn:dotnet sdk check2026-06-02更新 / 入っているSDK・ランタイムの更新とサポート切れの表示
- Microsoft Learn:NuGet PackageReference in project files(Locking dependencies)2026-08-15更新 / packages.lock.jsonと--locked-mode
- dotnet/core #10660:.NET October 2026 out-of-band security updates2026-10-26(日本時間) / 配布の状況表、Ubuntu・App Serviceがまだ10.0.13だという利用者の報告(10月28日)
