Skip to content

MM-69141: Mask Confluence URL and OAuth credentials in support packets#230

Merged
nang2049 merged 1 commit into
masterfrom
MM-69141-support-packet-secret-leak
Jun 11, 2026
Merged

MM-69141: Mask Confluence URL and OAuth credentials in support packets#230
nang2049 merged 1 commit into
masterfrom
MM-69141-support-packet-secret-leak

Conversation

@nang2049

@nang2049 nang2049 commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Summary

Three plugin config fields ConfluenceURL, ConfluenceOAuthClientID, and ConfluenceOAuthClientSecret were never declared in plugin.json's settings_schema. Declaring the three fields in the schema with "secret": true hooks them into the same masking path the other secrets already use.

QA

System Console → Reporting → Download Support Packet.
Extract the archive, open sanitized_config.json, locate Plugins["com.mattermost.confluence"].
Confirm all six string fields show ******************************** and only serverversiongreaterthan9 remains visible as a boolean.

Ticket Link

MM-69141

Change Impact: 🟢 Low

Reasoning: This is a purely declarative manifest update that adds three configuration fields to the plugin schema and marks them with the existing "secret": true flag. The change leverages established masking infrastructure already in place for other sensitive fields, introduces no new code logic, and carries minimal regression risk.

Regression Risk: Extremely low. The three fields (ConfluenceURL, ConfluenceOAuthClientID, ConfluenceOAuthClientSecret) already exist in the system and are configured via setup commands; this change simply declares them in the schema to integrate them into the existing support packet masking mechanism. No behavioral changes, no modifications to core logic, no new dependencies introduced.

QA Recommendation: Minimal manual QA is required beyond the provided QA steps. Since the masking mechanism is already tested and working for other secrets in the schema, verification that these three fields are properly masked in the sanitized_config.json (per the provided steps) is sufficient. The risk of skipping manual QA is negligible given the declarative nature of the change and the established precedent of the masking infrastructure.

@nang2049
nang2049 requested a review from a team as a code owner June 9, 2026 14:17
@nang2049
nang2049 requested review from avasconcelos114 and ogi-m June 9, 2026 14:18
@coderabbitai

coderabbitai Bot commented Jun 9, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: ebe1a2a3-9225-4cb4-8bb6-0295bf5d8b15

📥 Commits

Reviewing files that changed from the base of the PR and between d95079e and b3b9ab4.

📒 Files selected for processing (1)
  • plugin.json

📝 Walkthrough

Walkthrough

The plugin manifest's settings schema is extended with three new secret configuration fields: Confluence URL, OAuth client ID, and OAuth client secret. These entries are marked as sensitive and documented as being set during plugin installation and setup.

Changes

Confluence OAuth Settings

Layer / File(s) Summary
OAuth configuration settings in plugin manifest
plugin.json
Plugin settings schema extended with ConfluenceURL, ConfluenceOAuthClientID, and ConfluenceOAuthClientSecret as redacted secret text fields configured by setup commands.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes

Poem

A plugin grows with secrets three,
OAuth flows now set you free!
URL, ID, and secrets stashed,
In config files, securely cached. 🐰🔐

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and specifically describes the main change: masking sensitive Confluence credentials in support packets by updating the plugin configuration schema.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch MM-69141-support-packet-secret-leak

Warning

Review ran into problems

🔥 Problems

Stopped waiting for pipeline failures after 30000ms. One of your pipelines takes longer than our 30000ms fetch window to run, so review may not consider pipeline-failure results for inline comments if any failures occurred after the fetch window. Increase the timeout if you want to wait longer or run a @coderabbit review after the pipeline has finished.


Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai

coderabbitai Bot commented Jun 9, 2026

Copy link
Copy Markdown

Caution

Failed to replace (edit) comment. This is likely due to insufficient permissions or the comment being deleted.

Error details
{}

@avasconcelos114 avasconcelos114 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@edgarbellot edgarbellot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@nang2049 LGTM, just a suggestion.

Comment thread plugin.json
"display_name": "Confluence URL",
"type": "text",
"help_text": "Configured via the /confluence install setup command. Declared here so it is redacted from support packets.",
"secret": true

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Support packets typically mask sensitive information - like API tokens and secrets - while keeping data useful for troubleshooting issues unmasked. Therefore, it might only be necessary to mask ConfluenceOAuthClientSecret in this case.

This seems to be the standard pattern followed in the sanitized_config.json file generated with support packets. If there are other reasons to mask the URL and client ID, please feel free to ignore my comment :)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@nang2049
nang2049 merged commit 162ed73 into master Jun 11, 2026
8 checks passed
@nang2049
nang2049 deleted the MM-69141-support-packet-secret-leak branch June 11, 2026 11:51
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.

3 participants