From 54068be9ca73bfb677617edc330b01eb8f983f37 Mon Sep 17 00:00:00 2001 From: orignal Date: Sun, 18 Oct 2026 21:38:25 -0400 Subject: [PATCH] don't handle RelayIntro, ReplayResponse, PeerTest came from non-established session --- libi2pd/SSU2Session.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/libi2pd/SSU2Session.cpp b/libi2pd/SSU2Session.cpp index d0176f82..bba9885e 100644 --- a/libi2pd/SSU2Session.cpp +++ b/libi2pd/SSU2Session.cpp @@ -2326,6 +2326,11 @@ namespace transport { // we are Charlie if (len < 47) return; + if (!IsEstablished ()) + { + LogPrint (eLogWarning, "SSU2: RelayIntro came from non-established session. Dropped"); + return; + } SSU2RelayResponseCode code = eSSU2RelayResponseCodeAccept; boost::asio::ip::udp::endpoint ep; std::shared_ptr addr; @@ -2449,6 +2454,11 @@ namespace transport } return; } + if (!IsEstablished ()) + { + LogPrint (eLogWarning, "SSU2: RelayResponse came from non-established session. Dropped"); + return; + } auto it = m_RelaySessions.find (nonce); if (it != m_RelaySessions.end ()) { @@ -2535,6 +2545,11 @@ namespace transport { // msgs 1-4 if (len < 3) return; + if (!IsEstablished ()) + { + LogPrint (eLogWarning, "SSU2: Peer test came from non-established session. Dropped"); + return; + } uint8_t msg = buf[0]; size_t offset = 3; // points to signed data if (msg == 2 || msg == 4) offset += 32; // hash is presented for msg 2 and 4 only