VYPR
Medium severityNVD Advisory· Published Oct 1, 2024· Updated Apr 15, 2026

CVE-2024-47609

CVE-2024-47609

Description

Tonic is a native gRPC client & server implementation with async/await support. When using tonic::transport::Server there is a remote DoS attack that can cause the server to exit cleanly on accepting a TCP/TLS stream. This can be triggered by causing the accept call to error out with errors that were not covered correctly causing the accept loop to exit. Upgrading to tonic 0.12.3 and above contains the fix.

Affected packages

Versions sourced from the GitHub Security Advisory.

PackageAffected versionsPatched versions
toniccrates.io
>= 0.12.2, < 0.12.30.12.3

Patches

2
a4472a86f329

server: ignore more error kinds in incoming socket stream (#1885)

https://github.com/hyperium/tonicDirkjan OchtmanAug 29, 2024via ghsa
1 file changed · +7 1
  • tonic/src/transport/server/incoming.rs+7 1 modified
    @@ -91,7 +91,13 @@ fn handle_accept_error(e: impl Into<crate::Error>) -> ControlFlow<crate::Error>
         let e = e.into();
         tracing::debug!(error = %e, "accept loop error");
         if let Some(e) = e.downcast_ref::<io::Error>() {
    -        if e.kind() == io::ErrorKind::ConnectionAborted {
    +        if matches!(
    +            e.kind(),
    +            io::ErrorKind::ConnectionAborted
    +                | io::ErrorKind::Interrupted
    +                | io::ErrorKind::InvalidData // Raised if TLS handshake failed
    +                | io::ErrorKind::WouldBlock
    +        ) {
                 return ControlFlow::Continue(());
             }
         }
    

Vulnerability mechanics

Generated by null/stub on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.

References

6

News mentions

0

No linked articles in our index yet.