Skip to content

Bug: taskmaster-csproj-publishurl-leaks-user-profile-path-and-org-name #628

Description

@drmoisan
  • Work Mode: full-bug

Summary

TaskMaster/TaskMaster.csproj line 37 contains a <PublishUrl> element whose value is an absolute
path under a specific developer's Windows user profile, including that developer's account name and
their employer's organization name as part of a OneDrive commercial folder name. Both are committed
to version control and are visible to anyone who can read the repository, including in the public
GitHub UI, in every clone, and in the full history.

This is the same class of host-identifier leakage tracked by open issue #602, which to date has been
scoped to runtime exception messages. This occurrence is different in kind and worse in durability:
an exception message exists only in a log on one machine, whereas a committed project file
republishes the identifiers to every reader of the repository indefinitely, and rewriting them out
of history is disruptive in a way that fixing a log message is not.

The element is ClickOnce publish configuration. It is a per-developer local convenience setting that
has no business being shared: a second developer publishing from a different machine would be
publishing into a path that does not exist for them, so the committed value is not merely a leak but
is also wrong for everyone except its author.

Found during the issue #614 redaction sweep, which searched every file that change touched for the
executing account name and for @-bearing strings. The sweep is scoped to changed hunks; this line
is not in any hunk of #614 (that file's only #614 hunk is at line 416), so the finding is reported
rather than fixed there. It is filed separately rather than absorbed because #614 is a
path-representation defect chain and this is committed configuration, and because the correct fix
touches build configuration and possibly history rather than the filing boundary.

Recommended remediation, in order: remove the element from the tracked file, or replace it with a
non-identifying relative or placeholder value; move the real value into a gitignored local settings
file such as a .user file if the developer still wants it; then decide deliberately whether the
historical occurrences warrant a history rewrite or are accepted as already-published. That last
decision is a maintainer call, not an automated one, and should be recorded either way.

Worth checking as part of the same fix whether any sibling project file carries an equivalent
per-developer <PublishUrl>, <InstallUrl>, or similar ClickOnce path.

Environment

Steps to Reproduce

  1. Open TaskMaster/TaskMaster.csproj and read line 37.
  2. Observe the <PublishUrl> value contains a real Windows user-profile path including an account
    name and an organization name.
  3. Run git log -p -- TaskMaster/TaskMaster.csproj and observe the value is present historically,
    not only at HEAD.

Expected Behavior

No tracked file contains a real user account name, user-profile path, host name, or organization
name. Per-developer publish settings live in a gitignored local file, not in the shared project.

Actual Behavior

The identifiers are committed in a tracked project file and present in history.

Logs / Screenshots

  • Attached minimal logs or screenshot
  • Snippet: intentionally omitted so this record does not itself republish the values. See
    TaskMaster/TaskMaster.csproj:37.

Impact / Severity

  • Blocker
  • High
  • Medium
  • Low

No functional impact and no credential exposure. The disclosure is of a developer account name and
an employer name, is already published to every reader of the repository, and is durable in history.

Source

From: docs/features/potential/2026-08-26-taskmaster-csproj-publishurl-leaks-user-profile-path-and-org-name.md

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions