From 95bd52d6738cdf3329619c62a4b80c3a6dbfa86a Mon Sep 17 00:00:00 2001 From: zefie Date: Sat, 4 May 2024 12:39:25 -0400 Subject: [PATCH] close socket if SSID is not valid --- zefie_wtvp_minisrv/app.js | 5 +++++ zefie_wtvp_minisrv/includes/classes/WTVShared.js | 7 +++++++ 2 files changed, 12 insertions(+) diff --git a/zefie_wtvp_minisrv/app.js b/zefie_wtvp_minisrv/app.js index f6e3c178..163f6019 100644 --- a/zefie_wtvp_minisrv/app.js +++ b/zefie_wtvp_minisrv/app.js @@ -1471,6 +1471,11 @@ async function processRequest(socket, data_hex, skipSecure = false, encryptedReq if (!headers) return; if (headers["wtv-client-serial-number"] != null && socket.ssid == null) { + if (!wtvshared.checkSSID(headers["wtv-client-serial-number"])) { + // close socket for invalid ssid + cleanupSocket(socket) + return; + } socket.ssid = wtvshared.makeSafeSSID(headers["wtv-client-serial-number"]); if (socket.ssid != null) { if (!ssid_sessions[socket.ssid]) { diff --git a/zefie_wtvp_minisrv/includes/classes/WTVShared.js b/zefie_wtvp_minisrv/includes/classes/WTVShared.js index 47d91786..7dae8119 100644 --- a/zefie_wtvp_minisrv/includes/classes/WTVShared.js +++ b/zefie_wtvp_minisrv/includes/classes/WTVShared.js @@ -69,6 +69,13 @@ class WTVShared { return crc.toString(16).padStart(2, '0'); } + // check if the SSID has a valid checksum + checkSSID(ssid) { + if (ssid.slice(-2) == this.getSSIDCRC(ssid)) + return true; + return false; + } + parseConfigVars(s) { if (s.indexOf("%ServiceDeps%") >= 0) {