The Wire · Showcase
Kestrel blocks malformed SNI hostnames
By RepoJournal · Filed · About .NET
Kestrel now rejects malformed SNI server names, closing a DNS-label-boundary hole in the TLS handshake.
Kestrel's SniOptionsSelector accepted any ClientHello server_name string, and the wildcard path was a plain `EndsWith(suffix, OrdinalIgnoreCase)` scan that ignored DNS label boundaries [1]. That could let a crafted name, like one with an embedded null byte, slip past validation [2]. New checks `IsValidSniServerName` before both exact-name and wildcard lookups, so a handshake with a malformed name is now refused instead of misrouted [1]. Meanwhile Blazor fixed a DOM persistence bug where omitted attributes from `CaptureUnmatchedValues` stayed in the browser [3]. And the .NET JIT is trimming its walking infrastructure: fgWalkTree callbacks are being replaced with direct GenTreeVisitor implementations [4]. The move also deletes the old fgWalkData plumbing, and filling uninitialized memory with 0xcd is now the constant default, shaving 2.90% off checked-JIT instructions retired [5]. Android teams get a concurrency fix for FastTiming that stops heap corruption under sustained typemap load [6]. On the platform side, .NET 11.0.100-rc.1.26420.103 updates are flowing in [7], and aspnetcore, roslyn, and msbuild codeflow PRs are landing in dotnet/dotnet [8] [9] [10]. The Kestrel SNI validation and the Blazor DOM fix are immediate wins; the JIT refactor is a quieter but solid cleanup.
One email a day. Unsubscribe in one click.
Keep up with .NET in about 3 minutes a day: what actually shipped — the commits, pull requests, releases, and security advisories that matter.
One email a day. Unsubscribe in one click. Read a past issue →
Action items
- → Patch Kestrel to reject malformed SNI server names before your next deploy dotnet/aspnetcore [immediate]
- → Review Blazor rendered attributes when using CaptureUnmatchedValues to avoid stale DOM state dotnet/aspnetcore [plan]
- → Monitor .NET 11 preview updates and the JIT refactor for regression risk dotnet/runtime [monitor]
References
- [1] Reject malformed SNI server names in Kestrel's SniOptionsSelector ↗ dotnet/aspnetcore
- [2] Reject malformed SNI server names in Kestrel's SniOptionsSelector (#68015) dotnet/aspnetcore
- [3] Unexpected DOM persistence: Omitted attributes not removed during re-render ↗ dotnet/aspnetcore
- [4] JIT: replace fgWalkTree callbacks with GenTreeVisitor implementations ↗ dotnet/runtime
- [5] JIT: Always fill uninitialized JIT memory with 0xcd ↗ dotnet/runtime
- [6] [native] Fix concurrent FastTiming event storage ↗ dotnet/android
- [7] .NET 11.0.100-rc.1.26420.103 Updates ↗ dotnet/dotnet
- [8] [main] Source code updates from dotnet/aspnetcore ↗ dotnet/dotnet
- [9] [main] Source code updates from dotnet/roslyn ↗ dotnet/dotnet
- [10] [main] Source code updates from dotnet/msbuild ↗ dotnet/dotnet