From 2e7d28a773b90bc9fcbf2254559021251c815a3d Mon Sep 17 00:00:00 2001 From: Gabriele Date: Wed, 5 Nov 2025 08:34:18 +0100 Subject: [PATCH 1/3] fix: remove plain password from logs --- src/renderer/lib/containers/docker.ts | 7 ++++++- src/renderer/lib/containers/podman.ts | 7 ++++++- src/renderer/lib/winboat.ts | 2 ++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/renderer/lib/containers/docker.ts b/src/renderer/lib/containers/docker.ts index 78a9b7a4..23c560e0 100644 --- a/src/renderer/lib/containers/docker.ts +++ b/src/renderer/lib/containers/docker.ts @@ -36,7 +36,12 @@ export class DockerContainer extends ContainerManager { fs.writeFileSync(this.composeFilePath, composeContent, { encoding: "utf-8" }); containerLogger.info(`Wrote to compose file at: ${this.composeFilePath}`); - containerLogger.info(`Compose file content: ${JSON.stringify(composeContent, null, 2)}`); + + // mask plain password + const composePassword = compose.services.windows.environment.PASSWORD ?? ""; + const maskedCompose = JSON.stringify(composeContent, null, 2).replaceAll(composePassword, "*".repeat(composePassword.length)); + + containerLogger.info(`Compose file content: ${maskedCompose}`); } async compose(direction: ComposeDirection): Promise { diff --git a/src/renderer/lib/containers/podman.ts b/src/renderer/lib/containers/podman.ts index 91ea994f..d191463b 100644 --- a/src/renderer/lib/containers/podman.ts +++ b/src/renderer/lib/containers/podman.ts @@ -56,7 +56,12 @@ export class PodmanContainer extends ContainerManager { fs.writeFileSync(this.composeFilePath, composeContent, { encoding: "utf-8" }); containerLogger.info(`Wrote to compose file at: ${this.composeFilePath}`); - containerLogger.info(`Compose file content: ${JSON.stringify(composeContent, null, 2)}`); + + // mask plain password + const composePassword = compose.services.windows.environment.PASSWORD ?? ""; + const maskedCompose = JSON.stringify(composeContent, null, 2).replaceAll(composePassword, "*".repeat(composePassword.length)); + + containerLogger.info(`Compose file content: ${maskedCompose}`); } async compose(direction: ComposeDirection): Promise { diff --git a/src/renderer/lib/winboat.ts b/src/renderer/lib/winboat.ts index 0054e2ea..5f946fdd 100644 --- a/src/renderer/lib/winboat.ts +++ b/src/renderer/lib/winboat.ts @@ -655,6 +655,8 @@ export class Winboat { // Multiple spaces become one cmd = cmd.replaceAll(/\s+/g, " "); + // Remove plain password from logs + cmd = cmd.replaceAll(password, "*".repeat(password.length)); this.appMgr?.incrementAppUsage(app); this.appMgr?.writeToDisk(); From 2729c9e9412fbf07445cbeae670e681b63ae8841 Mon Sep 17 00:00:00 2001 From: Gabriele Date: Wed, 5 Nov 2025 08:42:08 +0100 Subject: [PATCH 2/3] refactor: run prettier --- src/renderer/lib/containers/docker.ts | 5 ++++- src/renderer/lib/containers/podman.ts | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/renderer/lib/containers/docker.ts b/src/renderer/lib/containers/docker.ts index 23c560e0..026c8895 100644 --- a/src/renderer/lib/containers/docker.ts +++ b/src/renderer/lib/containers/docker.ts @@ -39,7 +39,10 @@ export class DockerContainer extends ContainerManager { // mask plain password const composePassword = compose.services.windows.environment.PASSWORD ?? ""; - const maskedCompose = JSON.stringify(composeContent, null, 2).replaceAll(composePassword, "*".repeat(composePassword.length)); + const maskedCompose = JSON.stringify(composeContent, null, 2).replaceAll( + composePassword, + "*".repeat(composePassword.length), + ); containerLogger.info(`Compose file content: ${maskedCompose}`); } diff --git a/src/renderer/lib/containers/podman.ts b/src/renderer/lib/containers/podman.ts index d191463b..d322eecf 100644 --- a/src/renderer/lib/containers/podman.ts +++ b/src/renderer/lib/containers/podman.ts @@ -59,7 +59,10 @@ export class PodmanContainer extends ContainerManager { // mask plain password const composePassword = compose.services.windows.environment.PASSWORD ?? ""; - const maskedCompose = JSON.stringify(composeContent, null, 2).replaceAll(composePassword, "*".repeat(composePassword.length)); + const maskedCompose = JSON.stringify(composeContent, null, 2).replaceAll( + composePassword, + "*".repeat(composePassword.length), + ); containerLogger.info(`Compose file content: ${maskedCompose}`); } From edcb7173678c66101a0d5eaeb687aa49936fb945 Mon Sep 17 00:00:00 2001 From: Gabriele Date: Fri, 21 Nov 2025 20:21:23 +0100 Subject: [PATCH 3/3] fix: remove password length --- src/renderer/lib/containers/docker.ts | 2 +- src/renderer/lib/containers/podman.ts | 2 +- src/renderer/lib/winboat.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/renderer/lib/containers/docker.ts b/src/renderer/lib/containers/docker.ts index 3f555fab..670b2527 100644 --- a/src/renderer/lib/containers/docker.ts +++ b/src/renderer/lib/containers/docker.ts @@ -39,7 +39,7 @@ export class DockerContainer extends ContainerManager { const composePassword = compose.services.windows.environment.PASSWORD ?? ""; const maskedCompose = JSON.stringify(composeContent, null, 2).replaceAll( composePassword, - "*".repeat(composePassword.length), + "*****", ); containerLogger.info(`Compose file content: ${maskedCompose}`); diff --git a/src/renderer/lib/containers/podman.ts b/src/renderer/lib/containers/podman.ts index f51b8ca8..5d09dea6 100644 --- a/src/renderer/lib/containers/podman.ts +++ b/src/renderer/lib/containers/podman.ts @@ -63,7 +63,7 @@ export class PodmanContainer extends ContainerManager { const composePassword = compose.services.windows.environment.PASSWORD ?? ""; const maskedCompose = JSON.stringify(composeContent, null, 2).replaceAll( composePassword, - "*".repeat(composePassword.length), + "*****", ); containerLogger.info(`Compose file content: ${maskedCompose}`); diff --git a/src/renderer/lib/winboat.ts b/src/renderer/lib/winboat.ts index e253081f..5a52c393 100644 --- a/src/renderer/lib/winboat.ts +++ b/src/renderer/lib/winboat.ts @@ -651,7 +651,7 @@ export class Winboat { args = args.filter((v, _i, _a) => v.trim() !== ""); // Remove plain password from logs - cmd = cmd.replaceAll(password, "*".repeat(password.length)); + cmd = cmd.replaceAll(password, "*****"); this.appMgr?.incrementAppUsage(app); this.appMgr?.writeToDisk();