{"items":[{"id":"NVI-00015330","kind":"vulnerability","title":"MCP Atlassian: Arbitrary file read/exfiltration via upload_attachment missing validate_safe_path()","revision":1,"unknowns":["Customer inventory, deployment, reachability and exploitation have not been inspected."],"lifecycle":"active","identifiers":["GHSA-93xw-j965-9mx3","CVE-2026-77258"],"plain_summary":"GitHub lists this reviewed advisory for mcp-atlassian. Published version ranges and source prerequisites are shown below; this is not an inspection of a visitor’s application.","review_status":"source_listed","control_topics":[],"public_actions":[{"summary":"Identify the exact component and deployed version, examine the linked publisher’s conditions, and retain evidence of any mitigation.","source_ids":["sr-5b8417edbc6d0e903f9098c5ea954a19"],"action_type":"investigate","limitations":"Confirm current vendor support, compatibility and deployment evidence. This report has not tested a fix in your system.","current_supported_target":null}],"schema_version":"1.1.0","source_metrics":[{"kind":"CVSS","as_of":"2026-09-22T20:36:39.000Z","value":"7.7 high","meaning":"GitHub source severity; exploitability and local consequence require separate evidence.","source_id":"sr-5b8417edbc6d0e903f9098c5ea954a19"}],"why_it_matters":"Published affected context helps an owner decide what evidence to gather. This report has not examined your application.","related_sources":[{"id":"sr-5b8417edbc6d0e903f9098c5ea954a19","url":"https://github.com/advisories/GHSA-93xw-j965-9mx3","basis":"vendor_advisory","notes":"GitHub Advisory Database; CC-BY-4.0. Each advisory links its original attribution. Null normalizes fields.","title":"GHSA-93xw-j965-9mx3","publisher":"GitHub Advisory Database","observed_at":"2026-11-01T14:29:31.527Z"}],"affected_context":[{"certainty":"source_listed","source_ids":["sr-5b8417edbc6d0e903f9098c5ea954a19"],"technology":"mcp-atlassian","known_exclusions":[],"conditions_summary":"## Summary\n\nThe `upload_attachment` method in `confluence/attachments.py` reads and uploads arbitrary local files to Confluence without calling `validate_safe_path()`. Both download methods (`download_attachment` at line 223, `download_content_attachments` at line 272) correctly call `validate_safe_path()` before writing files, but the upload path at lines 35-79 skips this check entirely.\n\nAn AI agent connected via MCP (or an attacker influencing that agent through prompt injection) can read any file on the host and exfiltrate it by uploading it as a Confluence page attachment.\n\n## Vulnerable Code\n\nFile: `src/mcp_atlassian/confluence/attachments.py`, lines 62-79\n\n```python\n# No validate_safe_path() call anywhere in this method\nif not os.path.isabs(file_path):\n    file_path = os.path.abspath(file_path)\n\nif not os.path.exists(file_path):\n    return {\"success\": False, \"error\": f\"File not found: {file_path}\"}\n\nfilename = os.path.basename(file_path)\nattachment = self._upload_attachment_direct(\n    content_id, file_path, filename, comment, minor_edit\n)\n```\n\nThe `validate_safe_path` function is already imported at line 9 of the same file, and used in the download methods. It was just not ","public_affected_ranges":["< 0.22.0"]}],"null_published_at":"2026-11-03T10:03:26.570Z","source_updated_at":"2026-09-22T20:36:39.000Z","source_disclosed_at":"2026-09-22T20:36:37.000Z","is_synthetic_fixture":false,"null_last_reviewed_at":null,"public_change_summary":"First indexed by Null; source disclosure date is shown separately.","null_first_observed_at":"2026-11-01T14:29:31.527Z"}],"next_cursor":null,"snapshot_revision":"42594"}