Skip to content

Redact opaque auth/security config blobs in FTDC metadata - #4

Open
zelmario wants to merge 1 commit into
mainfrom
fix/ftdc-config-redaction
Open

Redact opaque auth/security config blobs in FTDC metadata#4
zelmario wants to merge 1 commit into
mainfrom
fix/ftdc-config-redaction

Conversation

@zelmario

Copy link
Copy Markdown
Owner

Problem

The FTDC metadata document (getCmdLineOpts / setParameter, plus similar config dumps in logs) carries opaque config blobs whose values embed sensitive infrastructure detail the existing masking can't reach:

  • oidcIdentityProviders — a stringified JSON array with the OIDC issuer, tenant, audience, clientId
  • auditLog / auditFilter — audit config embedding users, hosts, app names
  • ldapServers / ldapQueryUser / ldapBindDN, kmip*, saslauthdPath, clusterIpSource(Allow|White)list

The obfuscator walks and masks FTDC metadata by key, but these values are opaque blobs (often stringified JSON), so an unknown key holding the blob passes through untouched — and a single-label internal hostname inside it has no FQDN/IP/email signal for value-based detection either.

Real-world trigger: an FTDC ticket leaked a Kubernetes hostname, an Azure AD tenant, an OIDC issuer, and audit usernames straight through, all buried in these blobs.

Fix

Redact these keys' values wholesale (SENSITIVE_CONFIG_KEYS"<redacted-config>") inside _obfuscate_bson_doc.

These are configuration, not metrics, so no FTDC diagnostic value is lost — the numeric setParameter tuning the analysis relies on (e.g. storageEngineConcurrentWriteTransactions) lives under different keys and is preserved. Verified: the blobs redact, embedded host/tenant/issuer/usernames are gone, FTDC still decodes, and the concurrency metric survives.

Scope

Small and self-contained (19 insertions, 1 line ifelif): only _obfuscate_bson_doc changes, gated on the new key set. Independent of #1, #2, #3.

The FTDC metadata document (getCmdLineOpts / setParameter, and similar config
dumps in logs) carries several opaque CONFIG blobs whose values embed sensitive
infrastructure detail that the existing masking can't reach:

  - oidcIdentityProviders — a stringified JSON array with the OIDC issuer,
    tenant, audience and clientId
  - auditLog / auditFilter — audit config that embeds users, hosts, app names
  - ldapServers / ldapQueryUser / ldapBindDN, kmip*, saslauthdPath,
    clusterIpSource(Allow|White)list

The obfuscator walks and masks FTDC metadata by KEY, but these values are
opaque blobs (often stringified JSON), so an unknown key holding the blob
passes through untouched — and a single-label internal hostname inside it has
no FQDN/IP/email signal for value-based detection either. Result: a real FTDC
ticket leaked a k8s hostname, an Azure AD tenant, an OIDC issuer, and audit
usernames straight through.

Redact these keys' values WHOLESALE (SENSITIVE_CONFIG_KEYS ->
"<redacted-config>") in _obfuscate_bson_doc. These are configuration, not
metrics, so no FTDC diagnostic value is lost — the numeric setParameter tuning
the analysis relies on (e.g. storageEngineConcurrentWriteTransactions) is a
different key and is preserved.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@gitguardian

gitguardian Bot commented Jun 23, 2026

Copy link
Copy Markdown

⚠️ GitGuardian has uncovered 1 secret following the scan of your pull request.

Please consider investigating the findings and remediating the incidents. Failure to do so may lead to compromising the associated services or software components.

🔎 Detected hardcoded secret in your pull request
GitGuardian id GitGuardian status Secret Commit Filename
34213448 Triggered Generic Password 3e65b90 mongodb_obfuscator.py View secret
🛠 Guidelines to remediate hardcoded secrets
  1. Understand the implications of revoking this secret by investigating where it is used in your code.
  2. Replace and store your secret safely. Learn here the best practices.
  3. Revoke and rotate this secret.
  4. If possible, rewrite git history. Rewriting git history is not a trivial act. You might completely break other contributing developers' workflow and you risk accidentally deleting legitimate data.

To avoid such incidents in the future consider


🦉 GitGuardian detects secrets in your source code to help developers and security teams secure the modern development process. You are seeing this because you or someone else with access to this repository has authorized GitGuardian to scan your pull request.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant