<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://vulnerability.circl.lu</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Wed, 30 Sep 2026 06:50:05 +0000</lastBuildDate>
    <item>
      <title>fkie_cve-2026-77258</title>
      <link>https://vulnerability.circl.lu/vuln/fkie_cve-2026-77258</link>
      <description>&lt;p&gt;MCP Atlassian is a Model Context Protocol (MCP) server for Atlassian products (Confluence and Jira). Prior to 0.22.0, upload_attachment in src/mcp_atlassian/confluence/attachments.py accepts a caller-controlled file_path and opens the selected server-local file without restricting it to the workspace. A permitted Confluence MCP caller can upload the file as an attachment and disclose data readable by the server process. This issue is fixed in version 0.22.0.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;MCP Atlassian is a Model Context Protocol (MCP) server for Atlassian products (Confluence and Jira). Prior to 0.22.0, upload_attachment in src/mcp_atlassian/confluence/attachments.py accepts a caller-controlled file_path and opens the selected server-local file without restricting it to the workspace. A permitted Confluence MCP caller can upload the file as an attachment and disclose data readable by the server process. This issue is fixed in version 0.22.0.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/fkie_cve-2026-77258</guid>
    </item>
    <item>
      <title>GHSA-93xw-j965-9mx3 — MCP Atlassian: Arbitrary file read/exfiltration via upload_attachment missing validate_safe_path()</title>
      <link>https://vulnerability.circl.lu/vuln/ghsa-93xw-j965-9mx3</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: mcp-atlassian&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;The `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.&lt;/p&gt;
&lt;p&gt;An 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.&lt;/p&gt;
&lt;p&gt;## Vulnerable Code&lt;/p&gt;
&lt;p&gt;File: `src/mcp_atlassian/confluence/attachments.py`, lines 62-79&lt;/p&gt;
&lt;p&gt;```python
# No validate_safe_path() call anywhere in this method
if not os.path.isabs(file_path):
    file_path = os.path.abspath(file_path)&lt;/p&gt;
&lt;p&gt;if not os.path.exists(file_path):
    return {&amp;#34;success&amp;#34;: False, &amp;#34;error&amp;#34;: f&amp;#34;File not found: {file_path}&amp;#34;}&lt;/p&gt;
&lt;p&gt;filename = os.path.basename(file_path)
attachment = self._upload_attachment_direct(
    content_id, file_path, filename, comment, minor_edit
)
```&lt;/p&gt;
&lt;p&gt;The `validate_safe_path` function is already imported at line 9 of the same file, and used in the download methods. It was just not added to the upload path.&lt;/p&gt;
&lt;p&gt;## Proof of Concept&lt;/p&gt;
&lt;p&gt;Tested with mcp-atlassian 0.21.1 on Python 3.11 (EC2, Amazon Linux 2023).&lt;/p&gt;
&lt;p&gt;```python
import inspect
from mcp_atlassian.confluence.attachments import AttachmentsMixin&lt;/p&gt;
&lt;p&gt;# Confirm: no validate_safe_path in upload
source = inspect.getsource(AttachmentsMix…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: mcp-atlassian&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;The `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.&lt;/p&gt;
&lt;p&gt;An 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.&lt;/p&gt;
&lt;p&gt;## Vulnerable Code&lt;/p&gt;
&lt;p&gt;File: `src/mcp_atlassian/confluence/attachments.py`, lines 62-79&lt;/p&gt;
&lt;p&gt;```python
# No validate_safe_path() call anywhere in this method
if not os.path.isabs(file_path):
    file_path = os.path.abspath(file_path)&lt;/p&gt;
&lt;p&gt;if not os.path.exists(file_path):
    return {&amp;#34;success&amp;#34;: False, &amp;#34;error&amp;#34;: f&amp;#34;File not found: {file_path}&amp;#34;}&lt;/p&gt;
&lt;p&gt;filename = os.path.basename(file_path)
attachment = self._upload_attachment_direct(
    content_id, file_path, filename, comment, minor_edit
)
```&lt;/p&gt;
&lt;p&gt;The `validate_safe_path` function is already imported at line 9 of the same file, and used in the download methods. It was just not added to the upload path.&lt;/p&gt;
&lt;p&gt;## Proof of Concept&lt;/p&gt;
&lt;p&gt;Tested with mcp-atlassian 0.21.1 on Python 3.11 (EC2, Amazon Linux 2023).&lt;/p&gt;
&lt;p&gt;```python
import inspect
from mcp_atlassian.confluence.attachments import AttachmentsMixin&lt;/p&gt;
&lt;p&gt;# Confirm: no validate_safe_path in upload
source = inspect.getsource(AttachmentsMix…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/ghsa-93xw-j965-9mx3</guid>
    </item>
  </channel>
</rss>
