Start Debugging

.NET 10.0.14 が臨時リリース: Brotli 展開のバッファーオーバーフローと、再リリースされた 10 月の 2 件の CVE

2026 年 10 月 25 日の臨時リリース (.NET 8.0.33、9.0.22、10.0.14、11 RC3) で、Brotli のバッファーオーバーフロー、Linux tarball の所有権の欠陥、そして 10 月 13 日のパッチでは完全に修正されていなかった 2 件の CVE が修正されました。

10 月のパッチ Tuesday から 12 日後、Microsoft は .NET の臨時セキュリティリリースとして、.NET 8.0.33、9.0.22、10.0.14、そして .NET 11 RC3 を公開しました。Microsoft は “as soon as possible” で更新するよう呼びかけており、含まれる 4 件の CVE のうち 2 件は再リリースです。10 月 13 日に 10.0.13、9.0.21、8.0.32 を展開して完了と考えていた場合、まだ完了ではありません。

CVE-2026-111497: Brotli 展開のバッファーオーバーフロー

CVE-2026-111497 は、.NET が Brotli データを展開する処理のバッファーオーバーフローです。細工された Brotli のバイト列をプロセスに送り込める未認証の攻撃者が、メモリの読み取りや破壊を行える可能性があり、情報漏えい、サービス拒否、権限昇格につながるおそれがあります。影響はすべてのプラットフォームに及びます。.NET Framework は影響を受けません。

経路は 3 つあります。

最初の 2 つは既定で無効なので、自分たちが使っているかどうかは grep で確認できます。探すべきパターンは次のとおりです。

// 1. Server side: clients can send you Brotli bodies
builder.Services.AddRequestDecompression();
app.UseRequestDecompression();

// 2. Client side: servers can send you Brotli responses
var handler = new SocketsHttpHandler
{
    AutomaticDecompression = DecompressionMethods.All // includes Brotli
};

// 3. Direct API use on untrusted input
using var input = File.OpenRead(uploadPath);
using var brotli = new BrotliStream(input, CompressionMode.Decompress);
await brotli.CopyToAsync(output);

// Same code path through the span API
BrotliDecoder.TryDecompress(source, destination, out int written);

特に危険なのはリクエスト展開です。コードが処理する前に、あらゆるクライアントから攻撃者が制御するバイト列を受け取ります。公開エンドポイントで有効にしている場合は、先にパッチを適用し、監査は後で行ってください。

CVE-2026-114148: Linux tarball の所有権

CVE-2026-114148 は、Linux tarball に含まれる安全でない所有権メタデータに関するもので、ローカルの攻撃者がファイルを改ざんして権限を昇格できる可能性があります。.NET 10 と 11 では、影響を受けるのはソースビルドの tarball のみです。.NET 8 と 9 では ASP.NET Core ランタイムの tarball も対象となるため、プロビジョニングスクリプトで ASP.NET Core ランタイムを tar -xzf している場合は、.NET をソースからビルドしていなくても、更新された tarball を取得してください。

10 月 13 日の修正は不完全だった

投稿によると、パッチ Tuesday のリリースでは 2 件のアドバイザリが完全には修正されていなかったため、今回のリリースで再発行されています。

SocketAsyncEventArgs は Socket、Kestrel、SocketsHttpHandler の基盤となっているため、ネットワークを使うほぼすべての .NET アプリがこのコードを実行しています。

展開手順

修正方法はアプリのデプロイ方法によって異なります。

# Framework-dependent: update the host runtime, then restart the process
dotnet --list-runtimes
# expect Microsoft.NETCore.App 10.0.14 / 9.0.22 / 8.0.33

# Self-contained or Native AOT: the runtime is inside your output, so republish
dotnet publish -c Release -r linux-x64 --self-contained

# Containers: pull fresh base images and rebuild, do not reuse cached layers
docker build --pull -t myapp:patched .

ホストレベルのランタイム更新は、自己完結型アプリやコンテナーイメージには効果がありません。これらは独自のランタイムを含んでいるためです。.NET 11 RC2 を使っている場合は RC3 へ移行する必要があります。11 月の GA に先立って RC2 の go-live ライセンスで本番運用している場合は、特に重要です。

4 月には、.NET 10.0.7 も臨時リリースとして公開され、Data Protection の CVE-2026-40372 が修正されました。そのときと同様、対処は更新して再デプロイすることです。更新後に問題が発生した場合は dotnet/core の issue に報告してください。

Comments

Sign in with GitHub to comment. Reactions and replies thread back to the comments repo.

< 戻る