CVE-2025-61778: Akka.Remote TLS did not properly implement certificate-based authentication
N/A
Basic Information
Technical Details
| Package Name | Ecosystem | Vulnerable Versions | First Patched Version |
|---|---|---|---|
| Akka.Remote | nuget | >= 1.2.0, < 1.5.52 | 1.5.52 |
| Akka.Cluster | nuget | >= 1.2.0, < 1.5.52 | 1.5.52 |
Vulnerability Intelligence
Miggo AI
Root Cause Analysis
The vulnerability, CVE-2025-61778, is a critical authentication bypass in Akka.Remote's TLS implementation. The root cause is the failure to enforce mutual TLS (mTLS), where both the client and server must authenticate each other using certificates.
My analysis of the patches shows two main issues were addressed:
-
Lack of Mutual Authentication: The primary vulnerability was that the server-side TLS pipeline, configured in
Akka.Remote.Transport.DotNetty.DotNettyTransport.SetServerPipeline, did not require connecting clients to present a certificate. Simultaneously, the client-side pipeline, configured inAkka.Remote.Transport.DotNetty.DotNettyTransport.SetClientPipeline, was not set up to offer a client certificate. This allowed any unauthenticated client to connect to a TLS-enabled Akka.NET cluster, completely bypassing the intended certificate-based security. -
No Fail-Fast on Misconfiguration: A related security weakness was found in the
Akka.Remote.Transport.DotNetty.DotNettyTransport.Listenmethod. The system would start up without verifying if the server certificate's private key was actually accessible. This could lead an administrator to believe the system was secure, when in fact it was either non-functional or improperly secured. The patch introduced theAkka.Remote.Transport.DotNetty.SslSettings.ValidateCertificatemethod to perform this check at startup.
The identified vulnerable functions are the exact locations where these flawed logic patterns existed. During an exploit, an attacker's malicious client would connect to a vulnerable server, and the SetServerPipeline function on the server would be instrumental in incorrectly establishing the unauthenticated connection.
Vulnerable functions
Akka.Remote.Transport.DotNetty.DotNettyTransport.SetServerPipelinesrc/core/Akka.Remote/Transport/DotNetty/DotNettyTransport.cs
Akka.Remote.Transport.DotNetty.DotNettyTransport.SetClientPipelinesrc/core/Akka.Remote/Transport/DotNetty/DotNettyTransport.cs
Akka.Remote.Transport.DotNetty.DotNettyTransport.Listensrc/core/Akka.Remote/Transport/DotNetty/DotNettyTransport.cs
Akka.Remote.Transport.DotNetty.SslSettings.ValidateCertificatesrc/core/Akka.Remote/Transport/DotNetty/DotNettyTransportSettings.cs