From b2dc5f2cd6e86f5486b3a0bc9557e33ebc8b8f70 Mon Sep 17 00:00:00 2001 From: M57 <41645758+Hy4ri@users.noreply.github.com> Date: Tue, 23 Jun 2026 12:01:32 +0300 Subject: [PATCH] fix(#261): redact token from websocket connection log in debug mode (#330) Redacts the token query parameter from the URL before logging it to logcat in debug mode. This prevents sensitive token leakage on rooted devices or via adb logcat as requested in SEC-08. --- .../main/java/com/m57/hermescontrol/data/ws/HermesWsClient.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/m57/hermescontrol/data/ws/HermesWsClient.kt b/app/src/main/java/com/m57/hermescontrol/data/ws/HermesWsClient.kt index bf3effa2..8cebceaa 100644 --- a/app/src/main/java/com/m57/hermescontrol/data/ws/HermesWsClient.kt +++ b/app/src/main/java/com/m57/hermescontrol/data/ws/HermesWsClient.kt @@ -170,7 +170,8 @@ object HermesWsClient { val url = AuthManager.wsUrl() // B2 (Jun 18 2026, kanban t_8884db16): url contains the auth token // as a query param — never stream to logcat in release builds. - if (BuildConfig.DEBUG) Log.d(TAG, "Connecting to $url") + val safeUrl = url.replace(Regex("token=[^&]+"), "token=REDACTED") + if (BuildConfig.DEBUG) Log.d(TAG, "Connecting to $safeUrl") val request = Request.Builder().url(url).build() webSocket = okHttpClient.newWebSocket(request, WsListenerImpl())