目录
Radek Zikmund

Fix socket-bound TLS post-handshake authentication progress (#136475)

Fix a post-handshake authentication race that can leave a socket-bound TLS session waiting indefinitely even though the peer has finished the exchange.

The first native handshake call currently invokes SSL_peek, which can process a fast peer’s entire response. The driver then returns NeedMoreData because it considers that call request-flushing only. Subsequent calls wait for socket readability, but the response has already been consumed.

Separate request emission from response processing: skip the peek while flushing the initial certificate request, then retain it on subsequent calls. This preserves write-backpressure retries, handshake completion checks, and certificate-validation suspension. Extend the existing TLS 1.2/1.3 theory with idle-peer cases to verify that sending the request alone does not prematurely complete authentication. No timeout increases or test skips.

Validation

  • Linux clr+libs baseline and native/managed incremental builds passed with zero warnings or errors. The WSL baseline used explicit Git revision metadata for the Windows-created worktree.
  • Controlled managed fast-peer reproduction: both TLS 1.2/1.3 cases timed out before the fix and passed afterward. The temporary BIO scheduling hook was removed before final validation.
  • Full System.Net.Security functional suite: 5,127 passed, 0 failed, 8 existing conditional skips.
  • Focused four-case theory repeated five times in each reported configuration (DOTNET_JitStress=2 with tiering enabled, and with DOTNET_JitStressRegs=4 and tiering disabled): 40 passed, 0 skipped.
  • Native schedule/certificate controls: 2,400 cases, zero unexpected outcomes.

Validation used Ubuntu WSL and OpenSSL 3.5.3, not the exact AzureLinux CI image. Older OpenSSL versions and forced write-backpressure were not exercised.

Resolves dotnet/runtime#134222

[!NOTE] This pull request was authored with assistance from GitHub Copilot.

Co-authored-by: Copilot App 223556219+Copilot@users.noreply.github.com

7小时前147559次提交

.NET Runtime

Build Status Help Wanted Good First Issue Discord

This repo contains the code to build the .NET runtime, libraries and shared host (dotnet) installers for all supported platforms, as well as the sources to .NET runtime and libraries.

What is .NET?

Official Starting Page: https://dotnet.microsoft.com

How can I contribute?

We welcome contributions! Many people all over the world have helped make this project better.

Reporting security issues and security bugs

Security issues and bugs should be reported privately to the Microsoft Security Response Center (MSRC) via the MSRC Researcher Portal. You should receive a response within 24 hours. Further information can be found in the Security TechCenter. You can also find these instructions in this repo’s Security doc.

Also see info about related Microsoft .NET Bounty Program.

Filing issues

This repo should contain issues that are tied to the runtime, the class libraries and frameworks, the installation of the dotnet binary (sometimes known as the muxer) and the installation of the .NET runtime and libraries.

For other issues, please file them to their appropriate sibling repos. We have links to many of them on our new issue page.

.NET Foundation

.NET Runtime is a .NET Foundation project.

There are many .NET related projects on GitHub.

  • .NET home repo - links to 100s of .NET projects, from Microsoft and the community.
  • ASP.NET Core home - the best place to start learning about ASP.NET Core.

This project has adopted the code of conduct defined by the Contributor Covenant to clarify expected behavior in our community. For more information, see the .NET Foundation Code of Conduct.

General .NET OSS discussions: .NET Foundation Discussions

License

.NET (including the runtime repo) is licensed under the MIT license.

关于
2.9 GB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9 京公网安备 11010802047560号