Fix group document filename XSS in Share controls and cards - #1500
Merged
Paul Lizer (paullizer) merged 1 commit intoSep 18, 2026
Merged
Paul Lizer (paullizer) merged 1 commit into
Paul Lizer (paullizer) merged 1 commit into
Conversation
Bind Share controls without executable filename interpolation and populate card text and tooltips through safe DOM properties. Cover all views and refresh paths with regression tests, document the fix, and bump the application to 0.261.029. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Paul Lizer (paullizer)
merged commit Sep 18, 2026
3507614
into
microsoft:Development
12 checks passed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
textContentand DOMtitleproperties. Cover ordinary and folder views, refreshes, and polling-completion replacement rows.0.261.029.Linked issue
Refs GHSA-qwcw-r653-j8c6. The existing security advisory is the tracking reference; no separate issue was created. Advisory publication state and metadata are unchanged.
Release Notes & Latest Features
Is this visible to end users?
Is this admin-facing (Admin Settings, governance, deployment, config)?
Should this become a Latest Feature card?
Screenshot needed for the card?
Version bump
application/single_app/config.pyVERSIONthird segment bumped, or not needed because this is docs-onlydeployers/version.txtbumped, or not needed becausedeployers/was not changedApplication:
0.261.028->0.261.029. No deployer changes.Testing / validation
python -B -m pytest -q .\functional_tests\test_group_document_filename_xss.py .\ui_tests\test_group_document_filename_xss_rendering.py '.\functional_tests\test_stored_xss_share_activity_and_masking_fix.py::test_document_share_modals_use_safe_rendering_and_delegated_clicks' -k 'not implementation_version' -p no:cacheprovider: 78 passed, 1 deselected. After the version bump,python -B .\functional_tests\test_group_document_filename_xss.py: all 4 checks passed.python -B .\functional_tests\test_group_workspace_script_declarations.py: 3/3 passed.node --check .\application\single_app\static\js\workspace\group-documents-sharing.js, whitespace checks, the existing sharing-asset XSS check, and changed-production-line XSS checks passed.python -B .\functional_tests\test_docs_site_quality.py: 6/6 passed. The standalone documentation inventory check remains 6/7 because of pre-existing XSD upload-label drift. The full historical sharing/activity/masking script also has unrelated stale chat-source expectations and an exact historical version assertion; those were not changed.Browser coverage executes the production rendering functions, sharing asset, Bootstrap, and modal with intercepted requests. Unrelated UI helpers are stubbed. No live Azure-backed upload or authenticated deployment testing was performed.
Documentation
Added
docs/explanation/fixes/GROUP_DOCUMENT_FILENAME_XSS_FIX.md. Release notes were offered but not approved, so they remain unchanged. No new feature documentation is required.Security checklist
@swagger_route(security=get_auth_security())sanitize_settings_for_user()No routes or frontend settings payloads were added or changed.